Description: The application will be able to track someone's workout throughout the week. It will keep track of the sets and rep of a workout, calories burned and what time it occured at. The user will be able to view a summary of the results from their workouts and be able to make adjustments over time if they desire. The app will start as a console-based program and evolve into a full graphical application by the end of the term.
Audience/Motivation: The app is targeted for anyone who works out and wants to keep track of their progress. The range can be from a beginner to a long time gym-goer. I chose this project since I myself have just started getting back into working out and realized I didn't have a efficient way to keep track of what I was doing. This led to me to the idea to code a way of keeping track of the journey.
A bulleted list:
- item 1
- item 2
- item 3
An example of text with bold and italic fonts.
Phase 1:
- As a user, I want to be able to add and delete a exercise to a workout schedule
- As a user, I want to able to view the list of exercises in my workout schedule
- As a user, I want to set a weekly goal for the number of workouts I plan to complete
- As a user, I want to be able to be able to assign a workout schedule for each day
Phase 2:
- As a user I want to be able to choose to save my workouts for the week
- As a user I want to be able to load previously saved workouts for the week
-
You can view the panel that displays the Xs that have already been added to the Y by viewing the schedule panel. Select the day in the week you want and view the exercises in it.
-
You can generate the first required action related to the user story "adding multiple Xs to a Y" by going to the exercise panel, then filling the required information for a exercise and then pressing the add button to add it to a workout.
-
You can generate the second required action related to the user story "removing multiple Xs to a Y" by selecting a day you want and the going to the exercise panel to see the list of exercises and clicking which one you want to remove and then click the remove button.
-
You can locate my visual component by going to the goals panel. The visual component is a graph showing how many exercises are in a day. Any day with at least one exercise counts towards the goal weekly goal for workouts.
-
You can save the state of my application by going to the schedule panel and clicking the "Save Week" button.
-
You can reload the state of my application by to the schedule panel and clicking the "Load Week" button.
(Days show twice since the get day method is being called multiple times in GUI to properly update)
=== Application Events ===
Thu Nov 27 22:02:48 PST 2025 MONDAY has been selected!
Thu Nov 27 22:02:54 PST 2025 MONDAY has been selected!
Thu Nov 27 22:02:54 PST 2025 Workout has been renamed to Back Day!
Thu Nov 27 22:02:54 PST 2025 MONDAY has been selected!
Thu Nov 27 22:03:09 PST 2025 MONDAY has been selected!
Thu Nov 27 22:03:09 PST 2025 Pull Ups Added to Workout!
Thu Nov 27 22:03:09 PST 2025 MONDAY has been selected!
Thu Nov 27 22:03:20 PST 2025 MONDAY has been selected!
Thu Nov 27 22:03:20 PST 2025 Rows Added to Workout!
Thu Nov 27 22:03:20 PST 2025 MONDAY has been selected!
Thu Nov 27 22:03:24 PST 2025 Goal Updated!
Thu Nov 27 22:03:24 PST 2025 MONDAY has been selected!
Thu Nov 27 22:03:27 PST 2025 FRIDAY has been selected!
Thu Nov 27 22:03:34 PST 2025 FRIDAY has been selected!
Thu Nov 27 22:03:34 PST 2025 Workout has been renamed to Chest Day!
Thu Nov 27 22:03:34 PST 2025 FRIDAY has been selected!
Thu Nov 27 22:03:53 PST 2025 FRIDAY has been selected!
Thu Nov 27 22:03:53 PST 2025 Bench Press Added to Workout!
Thu Nov 27 22:03:53 PST 2025 FRIDAY has been selected!
Thu Nov 27 22:03:57 PST 2025 MONDAY has been selected!
Thu Nov 27 22:04:02 PST 2025 MONDAY has been selected!
Thu Nov 27 22:04:02 PST 2025 Rows Removed!
Thu Nov 27 22:04:02 PST 2025 MONDAY has been selected!
Thu Nov 27 22:04:08 PST 2025 MONDAY has been selected!
Thu Nov 27 22:04:08 PST 2025 Workout has been renamed to Back Day!
Thu Nov 27 22:04:08 PST 2025 MONDAY has been selected!
Thu Nov 27 22:04:12 PST 2025 Week has been saved!
One refactoring I’d like to do is to separate the application “control” logic from the two UIs (FitnessApp and FitnessFrame). Right now, both classes know about the Week model and each manages its own interactions with persistence (JsonReader/JsonWriter) and the currently selected workout. With more time, I would like to make a dedicated controller (e.g., FitnessController) that exclusively controls the Week, handles save/load, and runs high-level operations like “add exercise”, “rename workout”, or “set weekly goal”. Both the console UI and the GUI would talk to this controller instead of directly manipulating the model and persistence. This would reduce duplication, make the code easier to change (for example, if the save format changed).