A modern, full-stack event management platform with real-time seat tracking and comprehensive observability
Features β’ Quick Start β’ API Docs β’ Tech Stack
InnoEvent is a comprehensive event management platform designed for organizations to create, manage, and register users for internal events. The platform provides real-time seat availability tracking, user management, and complete observability with structured logging and metrics collection.
Built with FastAPI (backend) and Flask (frontend), InnoEvent demonstrates modern web development practices including RESTful API design, database management, and production-ready observability.
-
π€ User Management
- User registration and authentication
- Profile management
- User activity tracking
-
π Event Management
- Create, read, update, and delete events
- Support for multiple event types (Meetup, Conference, Concert)
- Real-time seat availability tracking
- Event organization and filtering
-
π Event Registration
- Register/unregister for events
- Real-time seat capacity management
- Prevent double registration
- View registration history
-
π Observability & Monitoring
- Structured JSON logging (app.log, errors.log)
- Application metrics collection (/metrics endpoint)
- Health checks (/health, /health/detailed)
- Request performance tracking
- Error rate monitoring
-
π¨ User Interface
- Modern, responsive design
- Montserrat font styling
- Intuitive event browsing and registration
- Real-time UI updates
-
π³ DevOps Ready
- Docker and Docker Compose support
- Easy local and production deployment
- Quick start script (run.bat for Windows)
InnoEvent/
βββ backend/ # FastAPI Backend
β βββ main.py # FastAPI application
β βββ models.py # SQLAlchemy database models
β βββ schemas.py # Pydantic validation schemas
β βββ crud.py # Database CRUD operations
β βββ database.py # Database configuration
β βββ logging_config.py # Structured logging setup
β βββ metrics.py # Application metrics
β βββ requirements.txt # Python dependencies
β βββ Dockerfile # Backend container
β βββ innoevent.db # SQLite database
β
βββ frontend/ # Flask Frontend
β βββ app.py # Flask application
β βββ index.html # Main HTML template
β βββ script.js # Frontend logic
β βββ style.css # Styling (Montserrat)
β βββ requirements.txt # Python dependencies
β βββ Dockerfile # Frontend container
β βββ background.png # Background image
β βββ logo.png # Application logo
β
βββ db/ # Database Configuration
β βββ Dockerfile
β βββ init.sql
β
βββ docker-compose.yml # Docker orchestration
βββ run.bat # Windows quick start
βββ README.md # This file
-- Users Table
CREATE TABLE users (
id INTEGER PRIMARY KEY,
surname VARCHAR(100) NOT NULL,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
password VARCHAR(255) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Events Table
CREATE TABLE events (
id INTEGER PRIMARY KEY,
title VARCHAR(200) NOT NULL,
description TEXT,
event_type VARCHAR(50) NOT NULL,
event_date DATETIME NOT NULL,
location VARCHAR(200),
total_seats INTEGER NOT NULL,
available_seats INTEGER NOT NULL,
organizer_id INTEGER NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (organizer_id) REFERENCES users(id)
);
-- Registrations Table
CREATE TABLE registrations (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
event_id INTEGER NOT NULL,
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (event_id) REFERENCES events(id)
);- Python 3.8 or higher
- pip package manager
- Git
- Docker & Docker Compose (optional, for containerized deployment)
cd InnoEvent
run.batThis automatically:
- Creates virtual environments
- Installs dependencies
- Starts both frontend and backend servers
# Navigate to backend directory
cd backend
# Create virtual environment
python -m venv venv
# Activate virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run the backend server
python main.pyBackend URL: http://localhost:8000
# Navigate to frontend directory
cd frontend
# Create virtual environment
python -m venv venv
# Activate virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run the frontend server
python app.pyFrontend URL: http://localhost:3000
docker-compose up --buildServices:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Swagger Docs: http://localhost:8000/docs
http://localhost:8000/api
Register New User
POST /auth/register
Content-Type: application/json
{
"surname": "Menshikh",
"name": "Maksim",
"email": "maksim@example.com",
"phone": "+1234567890",
"password": "password123"
}
Response: 201 Created
{
"id": 1,
"surname": "Menshikh",
"name": "Maksim",
"email": "maksim@example.com",
"phone": "+1234567890",
"created_at": "2025-11-28T07:00:00"
}User Login
POST /auth/login
Content-Type: application/x-www-form-urlencoded
email=maksim@example.com&password=password123
Response: 200 OK
{
"id": 1,
"surname": "Menshikh",
"name": "Maksim",
"email": "maksim@example.com",
"phone": "+1234567890",
"created_at": "2025-11-28T07:00:00"
}List All Events
GET /events
GET /events?event_type=Meetup
Response: 200 OK
[
{
"id": 1,
"title": "Python Meetup",
"description": "Monthly Python developers meetup",
"event_type": "Meetup",
"event_date": "2025-11-30T18:00:00",
"location": "Tech Hub, Room 101",
"total_seats": 50,
"available_seats": 35,
"organizer_id": 1,
"created_at": "2025-11-28T07:00:00"
}
]Create Event
POST /events?organizer_id=1
Content-Type: application/json
{
"title": "AI Conference 2025",
"description": "Annual artificial intelligence conference",
"event_type": "Conference",
"event_date": "2025-12-10T09:00:00",
"location": "Convention Center",
"total_seats": 500
}
Response: 200 OK
{
"id": 2,
"title": "AI Conference 2025",
"description": "Annual artificial intelligence conference",
"event_type": "Conference",
"event_date": "2025-12-10T09:00:00",
"location": "Convention Center",
"total_seats": 500,
"available_seats": 500,
"organizer_id": 1,
"created_at": "2025-11-28T07:30:00"
}Update Event
PUT /events/1
Content-Type: application/json
{
"total_seats": 60,
"available_seats": 45
}
Response: 200 OKDelete Event
DELETE /events/1
Response: 204 No ContentRegister for Event
POST /registrations?user_id=1
Content-Type: application/json
{
"event_id": 1
}
Response: 201 Created
{
"id": 1,
"user_id": 1,
"event_id": 1,
"registered_at": "2025-11-28T08:00:00"
}Get User Registrations
GET /registrations/user/1
Response: 200 OK
[
{
"id": 1,
"user_id": 1,
"event_id": 1,
"registered_at": "2025-11-28T08:00:00",
"event": { /* event object */ }
}
]Cancel Registration
DELETE /registrations/1
Response: 204 No ContentHealth Check
GET /health
Response: 200 OK
{
"status": "ok",
"timestamp": "2025-11-28T08:15:00.123456",
"service": "InnoEvent API"
}Detailed Health Check
GET /health/detailed
Response: 200 OK
{
"status": "healthy",
"timestamp": "2025-11-28T08:15:00.123456",
"service": "InnoEvent API",
"version": "1.0.0",
"metrics": { /* metrics object */ }
}Application Metrics
GET /metrics
Response: 200 OK
{
"uptime_seconds": 3600.5,
"total_requests": 2500,
"total_errors": 15,
"error_rate": 0.6,
"total_registrations": 342,
"avg_response_time_ms": 45.3,
"requests_by_endpoint": {
"/api/events": 1200,
"/api/registrations": 800
},
"errors_by_type": {
"404": 8,
"400": 5,
"500": 2
},
"timestamp": "2025-11-28T08:15:00.123456"
}Interactive API documentation available at:
http://localhost:8000/docs
Logs are stored in backend/logs/ directory:
- app.log - JSON structured logs of all application events
- errors.log - Error-level logs only
{
"timestamp": "2025-11-28T08:15:30.123456",
"level": "INFO",
"logger": "innoevent",
"message": "User registered for event",
"module": "crud",
"function": "register_user_for_event",
"line": 245
}The application tracks:
- Request Metrics - Total requests, requests by endpoint
- Error Metrics - Error count, error rate, errors by type
- Performance Metrics - Average response time, response times by request
- System Metrics - Uptime, application start time
- Business Metrics - Total registrations, total events created
Access metrics: GET /metrics
- Framework: FastAPI 0.104.1 (Python web framework)
- Database: SQLite with SQLAlchemy ORM
- Validation: Pydantic v2
- API Server: Uvicorn
- Logging: Python Logging with JSON formatting
- Monitoring: Custom metrics collection
- Framework: Flask 3.0.0
- Template: HTML5 with Jinja2
- Styling: CSS3 with Montserrat font
- Scripting: Vanilla JavaScript (ES6+)
- Client-side routing: Custom JavaScript
- HTTP Client: Fetch API
- Containerization: Docker
- Orchestration: Docker Compose
- Version Control: Git & GitHub
- Package Management: pip
- Virtual Environments: venv
- Testing: Manual testing via Swagger UI
MIT License
For questions or suggestions, please contact the development team.
For issues or feature requests:
- Check existing GitHub issues
- Contact the development team
Last Updated: November 28, 2025 | Version: 1.0.0