A full-stack event ticketing platform with intelligent seat selection, QR code verification, and real-time analytics.
- Browse events with advanced filtering (category, city, price, date)
- Purchase tickets with seat selection (regular/VIP)
- Digital QR code tickets
- Add events to favorites
- Rate and review attended events
- User dashboard with ticket history
- Profile management with avatar upload
- Create and manage events
- Upload event banners (up to 5 per event)
- Configure seat capacity (VIP and regular tiers)
- Real-time analytics (sales, revenue, attendance)
- QR code ticket verification
- Delete events
- JWT-based authentication
- Email notifications (registration, ticket confirmation, cancellation)
- Pagination for all list endpoints
- Image upload validation
- Secure password hashing with Argon2
See the full visual documentation in gallery.md showcasing all pages and features.
git clone https://github.com/Bahaaio/reservita.git
cd reservitacd backend
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the server
uvicorn main:app --reloadThe API will be running at http://localhost:8000
See backend/README.md for configuration options and API documentation.
cd frontend
# Serve with Python's built-in server
python -m http.server 8080Visit http://127.0.0.1:8080 in your browser.
- FastAPI - Modern Python web framework
- SQLModel - SQL database with Python type hints
- Pydantic - Data validation using Python annotations
- Uvicorn - Lightning-fast ASGI server
- PyJWT - JSON Web Token implementation
- Argon2 - Secure password hashing
- Boto3 - AWS S3 storage (with local fallback)
- Vanilla JavaScript - No frameworks, pure ES6+ for maximum performance
- Custom CSS - Responsive design with modern styling
- Fetch API - Native HTTP client for API communication
- Camera API - Built-in QR code scanning capabilities
- SQLite - Local development
- PostgreSQL - Production deployment (Aiven Cloud)
- GitHub Pages - Static frontend hosting
- Leapcell - Backend API hosting
Reservita sends beautifully designed HTML emails for:
- ✉️ Welcome message (registration)
- 🎫 Ticket confirmation (booking)
- ❌ Ticket cancellation
- ⭐ Review request (after event ends)
Templates are located in backend/app/templates/emails/
This project is licensed under the MIT License - see the LICENSE file for details.
