A comprehensive desktop application for managing rental inventories, membership data, and financial reporting for a camping club.
This project was built to demonstrate Object-Oriented Design patterns, layered architecture, and programmatic UI development (Pure JavaFX without FXML).
| Dashboard & Themes | Data Management |
|---|---|
![]() |
![]() |
| Dark Mode Dashboard with Charting | Inventory Management Table |
The application follows a Model-View-Service architecture to ensure separation of concerns. The UI is decoupled from business logic, and data persistence is handled via a dedicated layer.
- Strategy Pattern: Used in the
PricingPolicyengine. Calculation logic (Standard,Student,Premium) is injected at runtime, allowing for flexible pricing updates without modifying the core rental service. - Singleton Pattern: Ensures thread-safe, single-instance access to data registries (
Inventory,MemberRegistry) and theLanguageManager. - Observer Pattern: Utilized extensively in the UI to update charts and tables in real-time when underlying data models change.
- Polymorphism: The inventory system treats
VehicleandGearas interchangeableIRentableitems, simplifying the rental logic.
- Core: Java 17+, JavaFX (Programmatic DOM, No FXML)
- Persistence: Jackson (JSON Data Binding)
- Build Tool: Maven
- UI Assets: Ikonli (FontAwesome Pack), Custom CSS Theming
- Inventory Management: Unified system for tracking vehicles (RVs, Caravans) and gear (Tents, Backpacks).
- Smart Pricing: Automated cost calculation based on membership tiers (e.g., Student discounts, Premium surcharges).
- Financial Reporting: Live bar charts visualizing income trends over a 14-day rolling window.
- Localization: Instant runtime switching between English and Swedish
ResourceBundles. - Dynamic Theming: CSS-driven Dark/Light mode toggle.
To run the application locally:
- Clone the repository
- Build with Maven:
mvn clean install
- Run:
mvn javafx:run
The system includes a simulated security gatekeeper. Use the following credentials to access the dashboard:
- Username:
admin - Password:
0000
src/main/java/com/nilsson/camping
├── app/ # Entry point, Session & Language management
├── data/ # JSON Persistence & File I/O
├── model/ # Entities & Strategy Interfaces (IPricePolicy)
├── service/ # Business Logic & Calculation Layer
└── ui/ # Pure JavaFX Views & Custom Components
├── dialogs/ # Modal forms
└── views/ # Main application screens
This project was developed for educational purposes as part of a System Development course. Distributed under the MIT License.



