SelectSeat is a comprehensive ticket booking system for movies, designed to facilitate easy and efficient show and theatre management. This system is crafted with a robust stack of technologies and offers a seamless user experience for both general users and administrators.
- Frontend: VueJS for UI, optionally using VueJS Advanced with CLI. Jinja2 templates for dynamic content rendering.
- Styling: Bootstrap for CSS, with no other CSS frameworks allowed.
- Backend: Flask for API development.
- Database: SQLite as the primary database system.
- Caching and Batch Jobs: Redis for caching and batch jobs management with Redis and Celery.
- Compatibility: Designed for Linux-based systems, compatible with Windows OS via WSL.
- User Signup and Login
- Mandatory Admin Login with RBAC
- Theatre and Show Management
- Booking Show Tickets
- Search for Shows/Theatres
- Backend Jobs (Export, Reporting, Alert Jobs)
- Backend Performance Optimization
Enables users to book tickets for shows. Interface built with HTML, CSS (Bootstrap), and VueJS. Communication with the backend through REST APIs.
Allows creation and management of shows. Admin functionalities are protected by RBAC.
- Frontend: HTML and CSS with Bootstrap styling.
- Backend: Flask script hosted locally, with SQLAlchemy for database interaction.
- Communication between frontend and backend via REST APIs.
- Dynamic content rendering using Jinja2 in Flask.
Utilizes Flask-Login for secure user and admin authentication. Restricts access to certain pages for non-logged-in users.
The application uses Flask-SQLAlchemy for database management. Below are the models representing the database structure:
Field | Type |
---|---|
id | Integer |
username | String(50) |
password | String(100) |
isAdmin | Integer |
Field | Type |
---|---|
id | Integer |
venue_name | String(50) |
venue_description | String(50) |
venue_location | String(50) |
venue_capacity | String(50) |
Field | Type |
---|---|
id | Integer |
show_name | String(50) |
show_rating | String(50) |
show_rating_count | Integer |
show_date | String(50) |
show_time | String(50) |
show_price | String(50) |
show_tags | String(50) |
show_capacity | Integer |
show_available_tickets | Integer |
venue_id | Integer (ForeignKey) |
Field | Type |
---|---|
id | Integer |
tickets | Integer |
total_price | Integer |
show_id | Integer (ForeignKey) |
user_id | Integer (ForeignKey) |
show_rating | Integer |