Welcome to the official repository of the Escape Room Virtual project! This application simulates a virtual escape room experience with customizable rooms, clues, and decorative items.
Developed collaboratively by:
- Java 21
- Maven
- MySQL & Workbench
- IntelliJ IDEA
- JUnit 5 for Testing
This project is part of a collaborative team exercise to practice:
- Git & GitHub collaboration using Git Flow
- UML and Database design
- Java design patterns (Abstract Factory, DAO, Observer)
- Agile task management via GitHub Kanban Board
- Writing and running unit/integration tests
- Room: Associated with a difficulty level and a price
- Clue: Thematic hints tied to puzzles and rooms
- DecorationItem: Objects that create immersive atmospheres using different materials
- Player: Interacts with rooms, can receive certificates and purchase tickets
- Certificate: Generated for players upon successful room completion
- TicketSale: Tracks room sales and revenue
- 🧱 Create new Escape Room setups with difficulty-based factory pattern
- ➕ Add rooms, clues, and decorations
- 📦 View inventory by difficulty, theme, and material
- 💶 Calculate total inventory value in euros
- ❌ Remove rooms, clues, and items from inventory
- 🎟️ Sell tickets and track player-room interactions
- 📈 Calculate total revenue
- 🧾 Issue certificates of completion to players
- 🔔 Receive notifications for escape room events
Test coverage includes:
- DAO operations for persistence (integration tests)
- Domain logic (certificate assignment, inventory calculations, etc.)
Tests are located under:
src/test/java/com
src
├── main
│ ├── java/com/... # Main Java codebase
│ └── resources # SQL schema, data seeding, properties
└── test
└── java/com/... # JUnit testsSchema_escape_room.sql: defines the database schemainit.sql: loads initial datadatabase.properties: contains database connection info
Ensure MySQL is running and the escape_room database is created before running the app.
- Clone the repo:
git clone https://github.com/S303DevelopersTeam/escape-room-virtual.git-
Configure
src/main/resources/database.propertieswith your DB credentials. -
Run the app via
EscapeRoomApplication.java
- Abstract Factory: Room creation by difficulty
- DAO Pattern: Decoupled persistence logic
- Observer Pattern: Event notification system
- Daily standups
- Kanban board used for task assignment
- PRs required for merging into
main - Regular checkpoints with mentor
This project was part of a collaborative educational challenge focused on improving teamwork, code quality, and Git collaboration. Thanks to all participants and reviewers!
Happy Coding! 🚀
This project is for educational purposes only. No commercial license is applied.