A JavaFX desktop application for managing clients, contracts, and payments, built as an academic project at TVZ Zagreb. The system supports multiple user roles with secure authentication and provides a full audit trail of all data changes.
The application follows the MVC pattern with a layered structure:
- Model layer — domain entities (Client, Contract, Payment) with builder patterns for flexible object construction
- Repository layer — data access abstraction over an embedded H2 SQL database
- UI layer — JavaFX views with role-based access control
- Authentication — BCrypt password hashing with admin and standard user roles
- Client management — full CRUD operations for clients and associated contracts
- Change tracking — audit log that records all modifications with timestamps and user attribution
- Data validation — input validation with user-friendly error handling via custom AlertHandling
| Component | Technology |
|---|---|
| Language | Java |
| UI | JavaFX (FXML) |
| Database | H2 (embedded) |
| Security | BCrypt |
| Build | Maven |
~4,200 lines of code across 67 classes.
- Clone the repository
- Open in IntelliJ IDEA (or any IDE with Maven support)
- Run the main application class