A JavaFX desktop application for managing events, rooms, categories, tickets, and wallets. Built with a layered architecture (Presentation → Service → Domain Model → Data Access).
- JDK 25 installed (matches
maven.compiler.releaseinpom.xml) - No Maven installation required — the Maven wrapper (
mvnw) is included
.\run.batchmod +x run.sh mvnw
./run.shBoth scripts prompt you to choose:
- GUI — launches the JavaFX application (
MainApp) - CLI — runs the integration test suite (
CliRunner)
| Username | Password |
|---|---|
admin |
admin |
Register new Organizer and Attendee accounts via the Register screen.
src/main/java/com/ems/
├── db/ # Database singleton with in-memory HashMap stores
├── model/ # Domain models (User, Event, Room, Ticket, Wallet, etc.)
│ ├── enums/ # Gender, Role, EventStatus, TicketStatus
│ ├── event/ # Event, Category
│ ├── financial/# Ticket, Wallet
│ ├── user/ # Authenticatable, User (abstract), Admin, Organizer, Attendee
│ └── venue/ # Room, TimeSlot
├── network/ # ChatServer, ChatClient, MessageHandler, Chateable
├── service/ # AuthService, Manageable, Searchable, Purchasable, …
├── ui/ # JavaFX controllers and MainApp
├── util/ # HashUtil, ValidationUtil
└── exception/ # Custom exceptions
- Admin: Manage rooms & categories, view all events/users, start chat server
- Organizer: Create/publish/cancel events with room booking, chat with admin
- Attendee: Browse published events, buy tickets, view bookings, top-up wallet
- Concurrency: Thread-safe ticket purchasing and event cancellation with automated refunds
- Networking: TCP socket-based chat between Organizer and Admin
./mvnw clean packageThe compiled JAR is output to target/.
- EMS_SRS_PRD_SDD.md — Full specification document
- UML Class Diagram — System architecture overview