This is a web application project that allows users to search for movies, choose seats in a cinema, purchase tickets online, and receive tickets via email with a QR code. Additionally, the system supports in-person ticket purchases, where cash payments can be recorded. The project utilizes the Stripe API for online payments, the IMDb API for movie details, and SQLite for database management. Flask is used as the web framework, and various Flask extensions such as Flask-Migrate, Flask-Bcrypt, Flask-Mail, and WTForms are integrated into the application. PDFKit is used for printing tickets.
Scrolling through the cinema website, selecting a movie, and choosing a time slot and date:
Clicking on a seat and selecting the ticket type for a discount:
Paying for the ticket using Stripe API:
Confirmation of payment and receiving an email with the user's ticket containing a QR code:
- User Registration and Authentication.
- Movie Search and Selection.
- Seat Reservation.
- Online Payment via Stripe.
- Ticket Generation with QR Code via Email.
- In-Person Ticket Purchase and Cash Payment Recording.
- Admin Functions:
- Movie Database Management (Add/Modify/Delete Movies).
- View Movie Sales Data.
- IMDb Integration for Movie Details.
- Python 3.12
- Flask
- SQLite
- Stripe API Key
- IMDb API Key
- Flask-Migrate
- Flask-Bcrypt
- Flask-Mail
- WTForms
- PDFKit
-
Clone the repository:
git clone https://github.com/yourusername/cinema.git cd cinema
-
Create a virtual environment and activate it:
python -m venv venv source venv/bin/activate
-
Install the required dependencies:
pip install -r requirements.txt
-
Set up your environment variables for the Stripe API Key, IMDb API Key, and other necessary configurations.
-
Initialize and migrate the database:
flask db init flask db migrate flask db upgrade
-
Run the Flask development server:
flask run
-
Access the web application in your browser at http://localhost:5000
The SQLite database is used to store user data, movie information, ticket records, and more. You can use any SQLite database management tool to explore and manipulate the data.
- Stripe API: Set up your Stripe API keys to enable online payments.
- IMDb API: Obtain an IMDb API key to fetch movie details.
We would like to extend our heartfelt thanks to the following contributors for their valuable contributions to this project:
-tobiy105 -AlecMillward -BenJOHara -MattNWaite -AwkwardBoi1
Your dedication and hard work have been instrumental in making this project a success. We appreciate your commitment to the development and improvement of this software engineering project during the second semester of year 2. Thank you for your contributions!
This project is licensed under the MIT License - see the LICENSE file for details.