Download Full Report (PDF in Danish)Fitness Center Management System

Fitness Center Management System - 2nd Semester Project

Overview

For our 2nd-semester project, my team and I developed a comprehensive management system for modern fitness centers. The goal was to solve the organizational and technological challenges associated with planning, coordinating, and communicating group training sessions. The system provides tailored features for three types of users: Members, Instructors, and Owners.

JavaFX User Interface

My Role: Scrum Master & Developer

We utilized Scrum combined with the Unified Process (UP). I took on the role of Scrum Master, which involved:

  • Facilitating daily stand-ups, sprint planning, sprint reviews, and retrospectives.
  • Managing the product and sprint backlogs using YouTrack.
  • Monitoring sprint progress via burndown charts and addressing team dynamics based on DISC personality profiles and cultural differences.

Alongside my Scrum Master responsibilities, I was deeply involved in the technical development, particularly focusing on system design, architecture, and implementation.

System Architecture & Tech Stack

The project was designed with a strong emphasis on SOLID and GRASP principles to ensure a maintainable and scalable codebase.

  • Client-Server Architecture: We built a multithreaded client-server system using Java Sockets. Communication between the client and server was handled asynchronously via JSON packages.
  • MVVM & Observer Pattern: The frontend was built with JavaFX utilizing the Model-View-ViewModel (MVVM) architecture. We heavily used the Observer pattern (PropertyChangeListeners) to ensure the UI remained perfectly in sync with the underlying data without tight coupling.
  • Database & DAO: Data persistence was managed through a PostgreSQL database (NeonDB). We implemented the Data Access Object (DAO) pattern alongside Singleton database connections to separate SQL logic from our domain models.
  • Design Patterns: To solve complex structural challenges, we implemented several Gang of Four design patterns, including State (for managing full/available activities) and Proxy (for abstracting network calls).

Key Features

  • Real-time Booking: Members can view activities, sign up, or join waitlists. The multithreaded server broadcasts state changes so all connected clients see updated participant counts instantly.
  • Role-based Access: Instructors can create, edit, and cancel classes, while Owners have full administrative rights over rooms, equipment, and staff.
  • Robust Synchronization: Using custom-built JSON protocols, actions on one client (like booking a spot) immediately reflect on all other active clients.

Reflection

This project was a massive learning experience in software engineering. It taught me the crucial balance between low coupling and high cohesion, the practical challenges of applying design patterns (like managing the Law of Demeter vs. Single Responsibility Principle), and the immense value of structured communication and project management in a development team.