Skip to main content
Tanmay Savaj — home
Full StackContributive projectAPD545 — course project

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. 1. View

  2. 2. Wiring

  3. 3. Domain

  4. 4. Security

  5. 5. Persist

Select any component marked with a dot to see what it does in this system.

IllustrationConceptual architecture — the repository layer keeps SQLite out of the JavaFX controllers.
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

Read case study