A full-stack escape room booking application built with a Python/Flask backend and MySQL database.
Institution: Aristotle University of Thessaloniki (ECE, AUTh)
Course: Databases
Team: Group 16
Semester: Winter 2025–2026
- MySQL 8.0, MySQL Workbench
- Python 3, Flask, mysql-connector-python
- Jinja2, HTML5, CSS3
- draw.io
Phase 1 — Conceptual Design
Modelled the escape room domain as an ER diagram covering six core entities (Room, User, Booking, Team, GameSession, GameMaster) with full cardinality and participation constraints. See docs/.
Phase 2 — Relational Schema and SQL Queries
Normalised MySQL schema (escape_room_db) with seven tables, foreign key constraints, enumeration types, and role-based user privileges. Seven SQL query files in database/ cover the full range of relational algebra operations.
Phase 3 — Flask Web Application
Multi-role web application with session-based authentication and role resolution at login. Route access is enforced via login_required and role_required decorators. Each role (Player, Gamemaster, Manager) gets a distinct interface and permission scope. Source in app/.
| File | Description |
|---|---|
EscapeRoomDB_dump.sql |
Full database schema, constraints, and sample data |
docs/Deliverable_1.pdf |
ER design report and design decisions |
docs/ER_diagram.png |
Entity-Relationship diagram |
database/EscapeRooms.mwb |
MySQL Workbench visual schema model |
database/users.sql |
Database user definitions and privilege grants |
database/query_[A–G].sql |
SQL queries covering all relational algebra operations |
app/app.py |
Flask application — routes, queries, access control |
Requirements: MySQL 8.0+, Python 3.8+, pip
git clone https://github.com/eleanazeri/ESCAPE-ROOM-DATABASE.git
cd escape-room-database1. Import the database
mysql -u root -p < EscapeRoomDB_dump.sqlOr open EscapeRoomDB_dump.sql in MySQL Workbench via File > Open SQL Script > Execute.
2. Set your database password
In app/app.py, update line 12:
password="your_password_here",3. Install dependencies and run
cd app
pip install flask mysql-connector-python
python app.pyApplication runs at http://127.0.0.1:5000.
| Role | Username | Password | Access |
|---|---|---|---|
| Player | thunder |
pass1 |
Browse rooms, make and cancel bookings, view teams |
| Gamemaster | john_k |
pass3 |
Player access + manage bookings and session results |
| Manager | admin1 |
admin1 |
Full administration — rooms, users, all bookings |
| Name | Student ID |
|---|---|
| Eleana Zeri | 10811 |
| Elpida Baziakou | 10826 |
| Amalia Konstantinou | 10745 |
Academic coursework — Aristotle University of Thessaloniki. Not for resubmission in other academic contexts.