A dual-function desktop application built with JavaFX that demonstrates robust data persistence and real-time UI handling.
This project was built to demonstrate Object-Oriented Design patterns, MVC architecture, and programmatic UI development (Pure JavaFX without FXML).
- Member Management: A persistent CRUD system for managing member profiles (Name, Phone, Email, ID).
- Data Persistence: Automatic serialization/deserialization of Java objects to JSON using Jackson Databind.
- Precision Stopwatch: A dedicated stopwatch tool utilizing
AnimationTimerfor accurate, high-frequency time tracking (60 FPS). - Concurrency: Separated UI logic from timing threads to ensure a responsive interface.
- Dynamic Styling: Centralized CSS styling for consistent application theming.
The application follows a Model-View-Controller (MVC) architecture to ensure separation of concerns.
- MVC Pattern: Strictly separates the data (
Member), the interface (MembersView), and the logic (MembersController). - Repository Pattern: The
MemberRepositoryhandles all data retrieval and storage, decoupling the file I/O details from the business logic. - Observer Pattern: Used implicitly by JavaFX components to update the UI when underlying data models change.
- Core: Java 8+, JavaFX (Programmatic DOM, No FXML)
- Persistence: Jackson (JSON Data Binding)
- Build Tool: Maven
- UI Assets: Custom CSS Theming
To run the application locally:
- Clone the repository
- Build with Maven:
mvn clean install
- Run:
mvn javafx:run
src/com/nilsson
├── application/ # Application Entry Point
├── controller/ # Event Handling & Logic bridging
├── model/ # Data Entities (POJOs)
├── repository/ # JSON File I/O & Persistence
├── view/ # Pure JavaFX Layouts (No FXML)
└── styling/ # CSS Resources & Assets
This project was developed for educational purposes as part of a System Development course. Distributed under the MIT License.