Files
conference/spec.md
T
2026-04-29 14:43:41 +00:00

9.9 KiB

NetEvent Conference Platform - Specification

1. Project Overview

Project Name: NetEvent Type: Web-based conference/networking event management platform Core Functionality: A multi-language platform for organizing events, managing attendees, handling breakout sessions, staff coordination, check-in/badge generation, and professional networking/connections.

2. Tech Stack

  • Backend: Python Flask
  • Database: MySQL (mysql.connector)
  • Internationalization: Flask-Babel with 7 languages (en, nl, de, fr, es, it, pl)
  • PDF Generation: ReportLab
  • Excel Export: openpyxl
  • QR Codes: qrcode library
  • Email: SMTP (Brevo/Sendinblue)
  • Frontend: HTML/CSS (Jinja2 templates)

3. Database Schema

organizers

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
email VARCHAR(255) UNIQUE NOT NULL
password_hash VARCHAR(255) NOT NULL
name VARCHAR(255) NOT NULL
staff_code VARCHAR(10) UNIQUE DEFAULT NULL
preferred_language VARCHAR(5) DEFAULT 'en'
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

events

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
organizer_id INT NOT NULL, FOREIGN KEY → organizers(id)
code VARCHAR(10) UNIQUE NOT NULL
name VARCHAR(255) NOT NULL
description TEXT
start_time DATETIME NOT NULL
end_time DATETIME
location VARCHAR(255)
max_attendees INT DEFAULT NULL
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

attendees

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
event_id INT NOT NULL, FOREIGN KEY → events(id)
email VARCHAR(255) NOT NULL
password_hash VARCHAR(255) NOT NULL
first_name VARCHAR(100) NOT NULL
last_name VARCHAR(100) NOT NULL
organisation VARCHAR(255)
role VARCHAR(255)
introduction TEXT
phone VARCHAR(50) DEFAULT ''
linkedin VARCHAR(255) DEFAULT ''
profile_picture VARCHAR(255) DEFAULT NULL
checked_in BOOLEAN DEFAULT FALSE
attendance_status ENUM('attending', 'not_attending') DEFAULT 'attending'
confirmation_token VARCHAR(64) DEFAULT NULL
attendee_code VARCHAR(10) UNIQUE
attendee_type_id INT DEFAULT NULL, FOREIGN KEY → attendee_types(id)
preferred_language VARCHAR(5) DEFAULT 'en'
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
UNIQUE KEY (event_id, email)

connections

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
attendee_id INT NOT NULL, FOREIGN KEY → attendees(id)
connected_attendee_id INT NOT NULL, FOREIGN KEY → attendees(id)
status ENUM('pending', 'accepted', 'rejected') DEFAULT 'pending'
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
UNIQUE KEY (attendee_id, connected_attendee_id)

appointments

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
event_id INT NOT NULL, FOREIGN KEY → events(id)
requester_id INT NOT NULL, FOREIGN KEY → attendees(id)
target_id INT NOT NULL, FOREIGN KEY → attendees(id)
appointment_time DATETIME NOT NULL
location VARCHAR(255)
notes TEXT
status ENUM('pending', 'accepted', 'rejected') DEFAULT 'pending'
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

breakout_sessions

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
code VARCHAR(10) UNIQUE NOT NULL
event_id INT NOT NULL, FOREIGN KEY → events(id)
name VARCHAR(255) NOT NULL
description TEXT
start_time DATETIME NOT NULL
end_time DATETIME NOT NULL
location VARCHAR(255)
max_attendees INT DEFAULT NULL
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

breakout_session_organizers

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
breakout_session_id INT NOT NULL, FOREIGN KEY → breakout_sessions(id)
organizer_id INT NOT NULL, FOREIGN KEY → organizers(id)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
UNIQUE KEY (breakout_session_id, organizer_id)

breakout_session_rsvps

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
breakout_session_id INT NOT NULL, FOREIGN KEY → breakout_sessions(id)
attendee_id INT NOT NULL, FOREIGN KEY → attendees(id)
status ENUM('registered', 'cancelled') DEFAULT 'registered'
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
UNIQUE KEY (breakout_session_id, attendee_id)

staff

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
event_id INT NOT NULL, FOREIGN KEY → events(id)
email VARCHAR(255) NOT NULL
password_hash VARCHAR(255) DEFAULT NULL
first_name VARCHAR(100) NOT NULL
last_name VARCHAR(100) NOT NULL
staff_code VARCHAR(10) UNIQUE DEFAULT NULL
invite_token VARCHAR(64) DEFAULT NULL
invite_used BOOLEAN DEFAULT FALSE
preferred_language VARCHAR(5) DEFAULT 'en'
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
UNIQUE KEY (event_id, email)

languages

Column Type Constraints
code VARCHAR(5) PRIMARY KEY
name VARCHAR(50) NOT NULL
native_name VARCHAR(50) NOT NULL
is_active BOOLEAN DEFAULT TRUE
is_default BOOLEAN DEFAULT FALSE
date_format VARCHAR(30) DEFAULT '%B %d, %Y at %H:%M'
sort_order INT DEFAULT 0

attendee_types

Column Type Constraints
id INT PRIMARY KEY AUTO_INCREMENT
event_id INT NOT NULL, FOREIGN KEY → events(id)
code VARCHAR(10) UNIQUE NOT NULL
name VARCHAR(100) NOT NULL
price DECIMAL(10,2) DEFAULT 0.00
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

4. User Types & Roles

Organizer

  • Creates/manages events
  • Manages attendee types (with pricing)
  • Creates/manages breakout sessions
  • Adds/removes staff members
  • Checks in attendees
  • Generates badge PDFs (rectangular format)
  • Downloads attendee Excel sheets
  • Sends notifications
  • Manages all event aspects

Staff

  • Invited via email with token link
  • Access staff dashboard for assigned events
  • Check-in attendees at events
  • Limited to event-specific operations

Attendee

  • Registers for events (with optional payment)
  • Manages personal profile
  • RSVP's for breakout sessions
  • Connects with other attendees (request/accept/reject)
  • Requests appointments
  • Downloads personal badge
  • Scans QR codes to connect with others

Presenter (via presenter dashboard)

  • Access to presenter-specific dashboard

5. Core Features

Event Management

  • Create/edit/delete events
  • Set event date, time, location, max attendees
  • Generate unique event codes
  • Event registration with type-based pricing
  • Payment processing
  • Email notifications

Attendee Management

  • Registration (email/password)
  • Profile management (name, organization, role, bio, phone, LinkedIn)
  • Profile photo upload with crop/zoom
  • Personal attendee page (token-based access)
  • Attendee type assignment (VIP, General, etc.)
  • Check-in tracking
  • Badge generation

Breakout Sessions

  • Create sessions within events
  • RSVP system (register/cancel)
  • Capacity management
  • Multiple organizer assignment

Staff Management

  • Invite staff via email
  • Token-based invitation flow
  • Staff code generation
  • Edit/remove staff

Networking

  • Connect with other attendees (QR scan or search)
  • Connection request system (pending/accepted/rejected)
  • Appointment scheduling
  • Connection requests management

Internationalization

  • 7 languages: English, Dutch, German, French, Spanish, Italian, Polish
  • Language preference per user
  • Locale detection (URL, session, cookie, browser, user preference)

Export/Reporting

  • Excel export of attendees
  • Badge PDF generation (rectangular)
  • QR code integration for badges

6. Key Routes

Public

  • / - Landing page
  • /login - Login page
  • /register/organizer - Organizer registration
  • /register/attendee/<code> - Attendee registration for event
  • /event/register/<code> - Event registration with type
  • /event/<code>/payment - Payment processing
  • /staff/<staff_code> - Staff invitation accept
  • /attendee/request-link - Request personal page link
  • /attendee/personal/<token> - Personal attendee page

Organizer

  • /organizer/dashboard - Dashboard
  • /organizer/event/create - Create event
  • /organizer/event/<id>/edit - Edit event
  • /organizer/event/<id>/attendee-types - Manage attendee types
  • /organizer/event/<id>/breakout-sessions - Manage breakout sessions
  • /organizer/event/<id>/staff - Manage staff
  • /organizer/event/<id>/attendees/batch-assign-type - Batch assign types
  • /organizer/event/<id>/checkin/<attendee_id> - Check-in attendee
  • /organizer/event/<id>/badges/rectangular/download - Download badges
  • /organizer/event/<id>/attendees/excel/download - Excel export

Staff

  • /staff/dashboard - Staff dashboard
  • /staff/<event_id>/dashboard - Event-specific staff view
  • /staff/invite/<token> - Accept invitation

Attendee

  • /attendee/dashboard - Attendee dashboard
  • /attendee/profile - Edit profile
  • /attendee/photo - Upload photo
  • /attendee/breakout-sessions - View/RSVP sessions
  • /attendee/event/attendance - Update attendance status
  • /attendee/badge/download - Download badge
  • /attendee/scan - QR scan interface
  • /attendee/connection-requests - Manage connection requests
  • /appointments - Manage appointments

Presenter

  • /presenter/dashboard - Presenter dashboard