Hotel Reservation System
JavaFX desktop application with a modelled domain
My role: Domain modelling, security & utilities, repository architecture
A JavaFX desktop reservation system built on a modelled domain, with BCrypt-backed authentication and a repository layer over SQLite persistence.
Coursework repository is not public, so no source link is published.
Architecture
Architecture illustration of the hotel reservation system: JavaFX FXML views call services, which authenticate through a BCrypt-backed auth service and read and write through a repository layer onto SQLite, with Guice wiring the dependencies.
1. View
2. Wiring
3. Domain
4. Security
5. Persist
Select any component marked with a dot to see what it does in this system.
- Authentication
- BCrypt hashing
- Data access
- Repository abstraction
- Wiring
- Guice DI
- Persistence
- SQLite
Problem
A reservation system has to keep guests, rooms, availability and bookings consistent while authenticating the staff who modify them — which makes it as much a modelling problem as a UI one.
My contribution
This was a collaborative project. These were my specific contributions:
- Domain and behavioural modelling — UML class diagrams, the ERD, and sequence modelling of the booking flow.
- The security and utility packages, including the authentication service and BCrypt password hashing.
- The repository architecture that keeps SQLite access behind an interface.
What I built
- Domain and behavioural models for the reservation system, expressed as UML class diagrams and an ERD before implementation.
- Sequence modelling of the booking flow to pin down the interaction between UI, services and persistence.
- The security and utility packages, including the authentication service.
- BCrypt password hashing for stored credentials, rather than storing or naively digesting passwords.
- A repository abstraction over SQLite persistence so data access sits behind an interface instead of being called directly from UI controllers.
- JavaFX application structure with FXML views built in Scene Builder, wired with Guice dependency injection and built through Maven.
Engineering decisions
Keeping persistence out of the UI layer. JavaFX makes it easy to run queries straight from a controller; routing data access through a repository interface with Guice-injected dependencies kept the booking logic testable and independent of both SQLite and the view layer.
Next project
Preventive Health Risk Behaviour System