Project • FitHub

A full-stack-feeling fitness app built in Java Swing

FitHub is a desktop fitness companion built for a software development course. It started as a console app and grew into a full Java Swing application with a splash screen, user profiles, workout/meal planners, and JSON persistence under the hood.

The goal was to treat it like a real product: clean flows, durable save/load logic, and enough structure that new features (stats, new plans, different users) could be plugged in without rewriting everything.

  • • Java Swing UI with custom layout for each feature.
  • • Workout planner + weekly diet planner with generated plans.
  • • JSON-based persistence layer with full read/write coverage.
  • • Built + tested as a term-long software development project.
FitHub workout planner UI
Workout plannerhover for details

Workout planner

Weekly split view with days across the top and per-day exercises underneath. Built for quick scanning rather than clicking through dialogs.

FitHub meal planner UI
Meal plannerhover for details

Meal planner

7×3 grid for breakfast, lunch, dinner. Each cell opens a details view where meals can be swapped and macros inspected.

FitHub workout statistics
Workout statshover for details

Workout stats

Volume and frequency over the week: see which days are overloaded and how many sets each muscle group is getting.

FitHub diet statistics
Diet statshover for details

Diet stats

Macro + calorie breakdown across the week so meal changes show up as trends instead of one-off numbers.

Workout planner

Create or generate weekly workout splits, track exercises per day, and save your routine so it’s always there when you reopen the app.

Meal planner

A 7×3 grid for breakfast, lunch, dinner. Click into any day to swap meals, view macros, and experiment with different weekly layouts.

Progress & stats

Behind the scenes, FitHub tracks volume and meal changes over time so you can see how your routine evolves instead of losing changes in memory.

Under the hood

Every core model in FitHub implements a Writable interface that converts the object into JSON. The UI talks to this layer instead of juggling file logic directly, which keeps the Swing code focused on layout and interaction.

The result is a project that feels like a small product: a proper entry point, a splash-screen flow, a main hub, and a persistence layer that survives refactors and new features.

Persistence

All user data (profile, workouts, diet plans) is stored in JSON and rehydrated on launch.

Test coverage

Model + persistence packages are fully unit-tested to avoid silent data loss.

Flow design

Splash → profile selection → main hub → specialized planners, then save on exit.

Extensibility

New stats or planners can be added by extending model classes without rewiring the UI.

How the stats work

Stats aren't a separate database — they're computed from the same JSON that powers workout and meal plans. That keeps the data model simple while still letting the UI show progress views like "weekly volume" or "meals changed this week".

Workout metrics

Aggregate number of sessions, days trained per week, and total planned sets per muscle group.

Meal planner metrics

Track how often you change meals, which days tend to drift from plan, and which weeks are most consistent.