A complete cinema management system designed to automate both client-side movie browsing and server-side session control.
The project consists of a desktop client application (C++ / Qt) and a backend server (Python / Flask) communicating via a REST API.
- Movie Catalog — Displays a list of available movies with posters loaded dynamically from the server
- Session Selection — View schedules, halls, and showtimes for each movie
- Seat Reservation — Interactive seating layout with real-time seat availability synced with the database
- Responsive UI — Interface adapts to window size by dynamically adjusting card layouts and font sizes
- Data Control — Create and delete movies, halls, sessions, and users
- Security — Admin access protected by password authentication and IP address validation
- Smart Scheduling — Server validates movie duration and prevents overlapping sessions in the same hall
- Database Integrity — Deleting a movie automatically removes all related sessions and tickets
- Fully asynchronous network communication (non-blocking UI)
- Custom Qt widgets for movies, sessions, and seating layouts
- Image processing with
Qt::SmoothTransformationfor high-quality poster rendering
- Hosted on PythonAnywhere
- Database: MySQL with 6 core tables:
- users
- admins
- movies
- halls
- sessions
- tickets
- REST API: JSON-based communication secured with an API key for every request
| Method | Endpoint | Description |
|---|---|---|
GET |
/getMovies |
Retrieve all available movies |
GET |
/getReservePlaces |
Get seat status (0 — free, 1 — reserved) |
POST |
/addSession |
Create a new session with time conflict validation |
POST |
/reservePlace |
Reserve a seat |
POST |
/deleteMovie |
Delete a movie and all related sessions and tickets |
git clone git@github.com:Woratt/Cinema.git
mkdir build && cd build
cmake ..
make