A JavaFX-based conference room scheduling system designed to simulate a real-world university room booking platform. The application enables students, faculty, staff, and partners to securely book rooms, manage reservations, process payments, and track real-time room status using sensor-powered check-ins.
A short walkthrough showcasing the landing page, authentication flow, room booking interface, and administrative dashboard.
The goal of this project was to design and implement a robust, extensible, and well-tested room booking platform that demonstrates:
- Object-Oriented Design principles
- Proper use of software design patterns
- Clean layered architecture
- Comprehensive testing and quality assurance
- A polished, real-world graphical user interface
- User registration with email validation and strong password rules
- Support for multiple user roles:
- Student
- Faculty
- Staff
- Partner
- University account verification for
@yorku.ca/@my.yorku.caemails - Secure login, logout, and profile management
- Password recovery support
- Search and book available conference rooms
- Conflict detection to prevent overlapping bookings
- Role-based hourly pricing:
- Students β $20/hr
- Faculty β $30/hr
- Staff β $40/hr
- Partners β $50/hr
- Edit or cancel bookings before start time
- Extend bookings if the next time slot is available
- One-hour deposit charged upfront
- Deposit applied toward final cost upon valid check-in
- Automatic no-show detection
- Deposit forfeited if no check-in within 30 minutes
- Supported payment methods:
- Credit Card
- Debit Card
- Institutional / Partner Billing
- Simulated occupancy sensors and badge-based check-ins
- Automatic room state transitions:
AVAILABLE β IN_USE β NO_SHOW
- Real-time UI updates when room status changes
- Chief Event Coordinator can auto-generate admin accounts
- Admins can:
- Add new rooms
- Enable / disable rooms
- Place rooms under maintenance
- System-wide updates reflected instantly across the application
- Administrative dashboards for system monitoring
- Language: Java 23
- GUI Framework: JavaFX
- Build Tool: Maven
- Data Persistence: CSV files (file-based storage)
- Testing: JUnit, Randoop, PIT (Mutation Testing)
- IDE: IntelliJ IDEA
The system follows a three-layered architecture:
- Authentication UI
- Booking UI
- Admin UI
- Navigation & routing
UserManagerBookingManagerRoomStatusManagerPaymentContext& payment strategiesSensorSystem
- CSV repositories
- File resolver
- CSV helper utilities
This design enforces high cohesion, low coupling, and strong separation of concerns.
The Conference Room Scheduler was designed using a clear, layered architecture with well-defined responsibilities across components.
The following diagrams are included in the repository to document system behavior and design decisions:
- Use Case Diagrams β user and admin interactions
- Activity Diagrams β booking, payment, and check-in flows
- Sequence Diagrams β scenario-based system interactions
- Class Diagram β object relationships and design patterns
- Component Diagram β high-level system decomposition
| Design Pattern | Purpose |
|---|---|
| Singleton | Ensures a single shared instance of repositories and managers |
| Builder | Safe and flexible construction of User and Booking objects |
| Strategy | Interchangeable payment processing algorithms |
| Observer | Real-time room and booking status updates |
| Factory | Centralized creation of UI components and rooms |
| Facade | Simplified interaction with sensor and room-status subsystems |
Each pattern was chosen deliberately and justified based on system requirements.
mvn javafx:run
Requirements:
- Java 23
- Maven
Maven automatically:
- Downloads JavaFX
- Configures module paths
- Launches the application
If running directly from IntelliJ:
-
Install JavaFX SDK
-
Add the following VM options:
--module-path /path/to/javafx/lib --add-modules javafx.controls,javafx.fxml
The system explicitly handles a wide range of edge cases to ensure correctness and robustness:
- Duplicate email registrations are rejected
- Weak passwords fail validation with clear feedback
- Overlapping room bookings are prevented
- No-show bookings automatically forfeit deposits
- Room extensions are blocked if the next slot is occupied
- Disabled or maintenance rooms cannot be booked
- Late check-ins after the grace period are rejected
- Invalid payment attempts do not confirm bookings
- Class Coverage: 100%
- Method Coverage: 98%
- Line Coverage: 95%
- Tests Passed: 844 / 844
Fully covers:
- User management
- Booking logic
- Payment strategies
- Sensor simulation
- Room status management
- Core models and utilities
- Class Coverage: ~50%
- Method Coverage: 100%
- Line Coverage: ~86%
Used to explore unexpected execution paths and stress-test backend logic.
- Mutation Coverage: ~32%
- Test Strength: ~90%
Lower mutation coverage is due to intentionally excluded infrastructure classes.
Manual tests successfully killed most mutants where applied.
πΊ YouTube Demo:
https://www.youtube.com/watch?v=2ehBNyhx8fY
-
Shivam Gupta (Lead Developer & System Integration)
- Core system integration
- User authentication & profile management
- Sensor simulation & room status logic
- Check-in and no-show handling
- Project documentation
-
Kartik Sharma (Booking & Payments Developer)
- Room booking workflow
- Payment interface
- UI development and refinement
-
Sharwin Verma (Administration Features Developer)
- Administrative dashboard
- Room management functionality
- Admin workflow testing and documentation
-
Himanshi Verma (Design Diagrams & Testing Support)
- Component and class diagrams
- Testing support for occupancy, maintenance, and admin features
-
Meem Morshed (Testing & Sensor Validation)
- Sensor and occupancy testing
- Automated test generation (Randoop)
- Project demonstration video
This project was developed as part of EECS 3311 β Software Design at York University.
It is shared for educational and portfolio purposes only.
β If you find this project interesting, feel free to explore the code and documentation.




