A comprehensive enterprise rental management system designed to modernize the camping equipment leasing workflow. It transitions from legacy flat-file storage to a robust Relational Database architecture, offering dynamic pricing strategies, member history tracking, automated profit calculation, and a responsive, localized user interface.
| Login Screen |
|---|
![]() |
| Prepared for Secure Authentication |
| Home Dashboard | New Rental Wizard |
|---|---|
![]() |
![]() |
| Real-time availability & Status Overview | Streamlined Checkout with Dynamic Pricing |
| Inventory Grid | Member Administration |
|---|---|
![]() |
![]() |
| Filterable Equipment & Vehicle Tracking | Member Tiers & Rental History |
View Advanced Features
| Financial Reporting | Light Mode UI |
|---|---|
![]() |
![]() |
| Visualized Profit Analysis over Time | Themed CSS for Bright-Light Environments |
- Authentication & Security: Secure entry via
LoginViewwith role-based access potential. - Custom Window Management:
- Undecorated Stage: Custom-built title bar replacing standard OS chrome.
- Window Snapping: Drag-to-edge logic for auto-resizing (Quarter/Half screen layouts).
- Session Timer: Integrated usage timer in the title bar for admin session tracking.
- Enterprise Persistence: A complete migration to MySQL via Hibernate ORM, replacing legacy JSON handling for ACID-compliant data integrity.
- Dynamic Pricing Engine: Implements the Strategy Pattern to calculate costs based on membership tiers:
- Premium: 24/7 support and priority booking.
- Student: Adjusted rates for budget-friendly rentals.
- Standard: Base market rates.
- Smart History Logging: Automatically tracks rental events in the
member_historytable, utilizing cascading integrity for robust audit trails. - Internationalization (i18n): Native support for English and Swedish (
sv_SE), instantly switchable within the application. - Polymorphic Inventory: Handles diverse item types (Vehicles, Gear, Tents) using a "Table-per-Concrete-Class" database strategy.
The application implements a layered Service-Repository architecture to ensure separation of concerns.
- Dependency Injection: A custom
ServiceContainermanages the lifecycle of services and repositories, removing hard dependencies. - Hibernate ORM: Annotated Entities (
@Entity,@Table) map Java objects directly to SQL, handling complex relationships and lazy loading. - JavaFX 21: Built strictly with Programmatic JavaFX (No FXML) for maximum performance, type safety, and custom component logic (
CustomTitleBar). - Testing Strategy:
- Unit Tests: Mockito-based testing for Service logic.
- Integration Tests: H2 In-Memory Database used for safe Repository testing without polluting the production MySQL instance.
- Database Seeding: Automatic
schema.sqlanddata.sqlexecution ensures the environment is production-ready on the first launch.
- Ensure MySQL Server is running locally on port
3306. - Create a database named
wigell_camping_members_club.
Modify src/main/resources/hibernate.properties if your database credentials differ:
hibernate.connection.username=root
hibernate.connection.password=YOUR_PASSWORDDistributed under the MIT License. Free for personal and commercial use.







