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
- Authentication: Login/logout for organizers
- Event Management: Create, edit, delete events
- Attendee List: View all attendees for their events
- Badge Printing: Generate printable badge list (PDF-ready HTML)
- Attendance Stats: See check-in counts and attendee statistics
- QR Code Scanning: Mobile camera-based check-in by scanning attendee QR codes
Attendee Features
- Authentication: Register/login for attendees
- Event RSVP: Register for events
- Profile Management: Update profile with name, org, role, intro, photo
- Connections: Send/accept/reject connection requests
- Appointments: Request/accept/reject meeting appointments
User Interactions & Flows
Organiser Flow
- Login → Dashboard → Create Event → View Attendees → Print Badges
Attendee Flow
- 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