Files
conference/SPEC.md
T
2026-04-18 14:53:41 +00:00

6.3 KiB

Networking Event Platform - Specification

Project Overview

  • Project Name: NetEvent
  • Type: Full-stack web application (Flask + MySQL)
  • Core Functionality: A platform for organizing networking events where attendees can RSVP, connect, and schedule appointments
  • Target Users: Event organizers and event attendees

Technology Stack

  • Backend: Python Flask
  • Database: MySQL (roast.duckdns.org:33062)
  • Frontend: HTML/CSS/JavaScript with Jinja2 templates

Database Schema

Tables

organizers

Column Type Description
id INT PRIMARY KEY AUTO_INCREMENT Organizer ID
email VARCHAR(255) UNIQUE Organizer email
password_hash VARCHAR(255) Hashed password
name VARCHAR(255) Organizer name
created_at TIMESTAMP Creation timestamp

events

Column Type Description
id INT PRIMARY KEY AUTO_INCREMENT Event ID
organizer_id INT FOREIGN KEY Reference to organizers
code VARCHAR(10) UNIQUE Unique 10-char alphanumeric event code for deep linking
name VARCHAR(255) Event name
description TEXT Event description
start_time DATETIME Event start date/time
end_time DATETIME Event end date/time
location VARCHAR(255) Event location
max_attendees INT Maximum attendees (NULL = unlimited)
created_at TIMESTAMP Creation timestamp

attendees

Column Type Description
id INT PRIMARY KEY AUTO_INCREMENT Attendee ID
event_id INT FOREIGN KEY Reference to events
email VARCHAR(255) Attendee email
password_hash VARCHAR(255) Hashed password
first_name VARCHAR(100) First name
last_name VARCHAR(100) Last name
organisation VARCHAR(255) Organization/Company
role VARCHAR(255) Role/Profession
introduction TEXT Short introduction
profile_picture VARCHAR(255) Profile picture path
created_at TIMESTAMP Creation timestamp

connections

Column Type Description
id INT PRIMARY KEY AUTO_INCREMENT Connection ID
attendee_id INT FOREIGN KEY Requester attendee
connected_attendee_id INT FOREIGN KEY Connect target attendee
status ENUM('pending','accepted','rejected') Connection status
created_at TIMESTAMP Creation timestamp

appointments

Column Type Description
id INT PRIMARY KEY AUTO_INCREMENT Appointment ID
event_id INT FOREIGN KEY Reference to events
requester_id INT FOREIGN KEY Requester attendee
target_id INT FOREIGN KEY Target attendee
appointment_time DATETIME Proposed meeting time
location VARCHAR(255) Meeting location
notes TEXT Appointment notes
status ENUM('pending','accepted','rejected') Appointment status
created_at TIMESTAMP Creation timestamp

Functionality Specification

Organiser Features

  1. Authentication: Login/logout for organizers
  2. Event Management: Create, edit, delete events
  3. Attendee List: View all attendees for their events
  4. Badge Printing: Generate printable badge list (PDF-ready HTML)
  5. Attendance Stats: See check-in counts and attendee statistics
  6. QR Code Scanning: Mobile camera-based check-in by scanning attendee QR codes

Attendee Features

  1. Authentication: Register/login for attendees
  2. Event RSVP: Register for events
  3. Profile Management: Update profile with name, org, role, intro, photo
  4. Connections: Send/accept/reject connection requests
  5. Appointments: Request/accept/reject meeting appointments

User Interactions & Flows

Organiser Flow

  1. Login → Dashboard → Create Event → View Attendees → Print Badges

Attendee Flow

  1. Register → Login → RSVP to Event → Manage Profile → Connect with Attendees → Request Appointments

API Endpoints

Auth

  • POST /api/auth/organizer/register - Register organizer
  • POST /api/auth/organizer/login - Login organizer
  • POST /api/auth/attendee/register - Register attendee
  • POST /api/auth/attendee/login - Login attendee
  • POST /api/auth/logout - Logout

Events

  • GET /api/events - List public events
  • POST /api/events - Create event (organizer)
  • GET /api/events/<id> - Get event details
  • PUT /api/events/<id> - Update event
  • DELETE /api/events/<id> - Delete event

Attendees

  • GET /api/events/<id>/attendees - List attendees for event
  • GET /api/attendees/<id> - Get attendee profile
  • PUT /api/attendees/<id> - Update attendee profile
  • POST /api/attendees/<id>/photo - Upload profile photo

Connections

  • GET /api/connections - List my connections
  • POST /api/connections - Send connection request
  • PUT /api/connections/<id> - Accept/reject connection
  • GET /api/attendees - Search attendees

Appointments

  • GET /api/appointments - List my appointments
  • POST /api/appointments - Request appointment
  • PUT /api/appointments/<id> - Accept/reject appointment

Organizer Tools

  • GET /api/organizer/events/<id>/badges - Get badge printable view
  • GET /api/organizer/events/<id>/stats - Get attendance stats
  • GET /api/organizer/events/<id>/scan - QR code scanner page for check-in

Security

  • Password hashing with bcrypt
  • Session-based authentication
  • CSRF protection
  • SQL injection prevention via parameterized queries

File Structure

/home/paul/conference/
├── app.py                 # Flask application
├── config.py              # Configuration
├── init_db.py             # Database initialization script
├── requirements.txt       # Python dependencies
├── static/
│   ├── css/
│   │   └── style.css
│   └── js/
│       └── main.js
└── templates/
    ├── base.html
    ├── index.html
    ├── auth/
    │   ├── login.html
    │   └── register.html
    ├── organizer/
    │   ├── dashboard.html
    │   ├── create_event.html
    │   ├── event_detail.html
    │   ├── badges.html
    │   └── scan.html
    └── attendee/
        ├── dashboard.html
        ├── event.html
        ├── profile.html
        ├── connections.html
        └── appointments.html