Skip to content

A JavaFX desktop application for managing rental inventories and memberships. Features OOP architecture, JSON persistence, and dynamic theming.

Notifications You must be signed in to change notification settings

erroralex/Rental-Club-JavaFX-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Camping Club Rental Management System

Java JavaFX CSS Jackson

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).


📸 Interface

Dashboard & Themes Data Management
Profits Dark Mode Inventory Grid
Dark Mode Dashboard with Charting Inventory Management Table
View More Screenshots
Login Screen Light Mode
Login Light Mode

🛠️ Technical Architecture

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.

Design Patterns Implemented

  • Strategy Pattern: Used in the PricingPolicy engine. 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 the LanguageManager.
  • 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 Vehicle and Gear as interchangeable IRentable items, simplifying the rental logic.

Technology Stack

  • Core: Java 17+, JavaFX (Programmatic DOM, No FXML)
  • Persistence: Jackson (JSON Data Binding)
  • Build Tool: Maven
  • UI Assets: Ikonli (FontAwesome Pack), Custom CSS Theming

✨ Key Features

  • 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.

🚀 Getting Started

To run the application locally:

  1. Clone the repository
  2. Build with Maven:
    mvn clean install
  3. Run:
    mvn javafx:run

🔒 Default Login

The system includes a simulated security gatekeeper. Use the following credentials to access the dashboard:

  • Username: admin
  • Password: 0000

📂 Project Structure

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

📜 License

This project was developed for educational purposes as part of a System Development course. Distributed under the MIT License.


About

A JavaFX desktop application for managing rental inventories and memberships. Features OOP architecture, JSON persistence, and dynamic theming.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published