A modern, mobile-responsive event ticketing system with QR code generation, attendee management, and entry scanning capabilities.
✅ Event Management - Create and manage multiple events
✅ Attendee Import - Import attendees from CSV, JSON, or XLSX files
✅ QR Code Generation - Generate unique QR codes for each ticket on-demand
✅ QR Scanning - Scan QR codes at entry to mark attendance
✅ Mobile Responsive - Fully responsive design works on desktop, tablet, and mobile
✅ Real-time Attendance - Track ticket usage and attendance in real-time
✅ Data Export - Download QR code JSON and attendance reports
- Backend: FastAPI (Python)
- Frontend: HTML, CSS, JavaScript
- Database: SQLAlchemy with SQLite
- Authentication: JWT-based organizer login
- QR Codes: Python qrcode library
- Python 3.8+
- pip or pipenv
- Clone the repository:
git clone https://github.com/AMAANL/Event-Ticket-Manager.git
cd Event-Ticket-Manager- Create virtual environment:
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt./run.sh
# or
python -m uvicorn app.main:app --reloadThe application will be available at http://localhost:8000
event_ticket/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI app setup
│ ├── database.py # Database configuration
│ ├── models.py # SQLAlchemy models
│ ├── schemas.py # Pydantic schemas
│ ├── security.py # JWT authentication
│ ├── deps.py # Dependency injection
│ ├── qr_utils.py # QR code generation (on-demand)
│ └── routers/
│ ├── auth_routes.py # Login/register endpoints
│ ├── event_routes.py # Event management endpoints
│ ├── ticket_routes.py # Ticket and QR endpoints
│ └── scan_routes.py # QR scanning endpoints
├── static/
│ ├── index.html # Main frontend
│ ├── app.js # Frontend logic
│ └── styles.css # Responsive styling
├── requirements.txt # Python dependencies
└── run.sh # Start script
POST /auth/register- Register new organizerPOST /auth/login- Login organizerPOST /auth/logout- Logout organizer
POST /events/- Create eventGET /events/- List user's eventsPUT /events/{event_id}- Update eventDELETE /events/{event_id}- Delete event
POST /ticket/{event_id}- Issue single ticketPOST /event/{event_id}/import- Import attendeesGET /event/{event_id}/tickets- List event ticketsGET /tickets/{ticket_id}/qr- Get QR code image (on-demand)
POST /scan/verify- Verify and mark ticket as scanned
QR codes are generated on-demand and served dynamically:
- Each QR code contains:
ticket_id,event_id, and cryptographicsignature - QR codes are generated in-memory (no disk storage)
- Endpoint:
GET /tickets/{ticket_id}/qrreturns PNG image - Benefits: Works on serverless, Docker, and GitHub Pages deployments
The application is fully responsive with:
- Touch-friendly button sizes (44px minimum)
- Readable typography at all screen sizes
- Optimized layouts for phones, tablets, and desktops
- Smooth scrolling and swipe gestures supported
- Camera scanner works on mobile devices
docker build -t event-ticket-manager .
docker run -p 8000:8000 event-ticket-managerWorks out-of-the-box because QR codes are generated on-demand (no file persistence needed).
Create a .env file in the project root:
SECRET_KEY=your-secret-key-here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=1440
MIT License
For issues or questions, please open an issue on GitHub.


