Overview
This project portfolio was written to document my role and contributions to the project LIFE.
About the project
In my 4th semester of university, my team and I were tasked with enhancing a basic address book software over the entire semester. We chose to morph it into a lifestyle manager called LIFE, which stands for Lifestyle Improvement For Everyone.
This application aims to help people to better manage their daily lives, in which we decided to include 4 main features, namely the Task, Expenditure, Workout and Habit trackers. These features will help to manage their tasks' deadlines, daily spending, exercise routine as well as set aims for good habits, thereby helping them to manage their daily lives better.
My role
My role in the project was to implement the record
and workout
features for the workout tracker. I was also tasked to design
the model component for the workout
class, as well as the data structures needed for the storage component for any workout
related features. I also need to ensure that the UI component for my workout tracker is displayed properly.
Note the following symbols used in this document:
A grey highlight (called a mark-up) e.g. TASK indicates that it is a Class
or a command word that can be inputted into the command line
and executed by the application.
|
Summary of contributions
This section shows a summary of my coding, documentation and other helpful contributions that I have contributed to the team project.
-
Major Enhancement #1: implemented the
record
feature.-
What does it do:
-
Allows an individual to keep track of his workout through adding a workout to the workout tracker
-
-
Justification
-
Helping people keep track of their workout helps them to better plan future workout routine
-
The workout list also helps people to feel a sense of achievement when they see how many workouts they completed
-
-
-
Major Enhancement #2: implemented the
workout
feature.-
What does it do:
-
Allows an individual to view up to 5 most recent workouts
-
-
Justification
-
Allows the user to view their recent workouts so they can plan to do different types of workouts for the next few workouts
-
-
-
Minor enhancement
-
Implemented the
workout
class and the relevant classes such asExercise
,Sets
,Reps
,Time
in the model component -
Implemented the storage component for all
workout
related features -
Implemented the UI component for all
workout
related features and results to be displayed to users -
Implemented the relevant parser for
workout
andrecord
features.
-
-
Documentation
-
Wrote the relevant parts in the User and Developer guide
-
Fixed some formatting errors in the User and Developer guide
-
-
Community
-
Reviewed teammates' pull request
-
Solve merge conflicts for teammates
-
-
Code contributed: [Functional Code][Test Code]
Contributions to the User Guide
The following are my contributions to the User Guide. They showcase my ability to write documentation targeting end-users. |
Record workout : record
Record your current workout and add them into your workout records.
Format: record e/EXERCISE s/SETS r/REPS t/TIME
Examples:
-
record e/SIT UPS s/5 r/20 t/10
Record the workout of doing 5 SETS of 20 REPS of SIT UPS in 10 MINUTES
Contributions to the Developer Guide
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |
Workout Feature
Workout
package
Reason for implementation
LIFE is a tool for helping students manage their workout records too, having this features will aid them in recording down their previous workouts.
Current Implementation
Each attribute of a Workout, such as the exercise, sets, reps and time are classes in the Workout
package. Each of the class provide utility methods to check the correctness of the string to be stored and to retrieve the string that is stored.
The following classes are as such:
Class | Constructor | Remark |
---|---|---|
Exercise |
new Exercise("Push ups") |
Stores a |
Sets |
new Sets("1") |
Stores a |
Reps |
new Reps("20") |
Stores a |
Time |
new Time(‘15’) |
Stores a |
The Workout
package includes the Workout
class which documents information about the workout. The Workout
class provides utility methods to retrieve the different objects (e.g. Sets
)
Class | Constructor | Remark |
---|---|---|
Workout |
|
Stores |
Reasons for how it is implemented
The reason is the same for the implementation of the Task
feature.
Use Case: Record Completed Workout
MSS
-
User requests to add an entry of completed workout
-
LIFE records the workout log
Use case ends.
Use Case: View Workout Log
MSS
-
User requests to view Workout Log
-
LIFE shows the Workout Log
Use case ends.
Recording new workout
-
Add a new workout to the workout list
-
Test case:
record e/Push ups s/5 r/10 t/10
Expected: "New workout added: Push ups | 5 SETS, 20 REPS, COMPLETED IN: 10 MINUTES"
-
Viewing recent workout
-
View up to 5 most recent workout in the workout list
-
Test case:
workout
Expected: If workout list is empty, "No workout found"
If workout list is not empty, "Recent workout(s) found!"
"X most recent workout(s): ", where X is the number of recent workout found, up to 5,
workout listed will be in the format "Exercise: EXERCISE, Sets: SETS, Reps: REPS, Duration: TIME minutes"
-
Designs considerations
-
Aspect: How
workout
executes-
Alternative 1 (current choice): Display it as a command line message to the user
-
Pros: Easy to implement, clearer to the user
-
Cons: Less graphically appealing
-
-
Alternative 2: Filter the Workout List in the UI
-
Pros: More appealing to the user
-
Cons: Hard to implement
-
-
-
Aspect: Data structure to store the recent workout for
workout
-
Alternative 1 (current choice): Array List
-
Pros: Easy to implement, add and remove operations is easy
-
Cons: Additional memory space needed for the extra Array List
-
-
Alternative 2: Run through the Observable list and print it out as a feedback string in
CommandResult
-
Pros: No need for extra memory for additional data structure
-
Cons: Difficult to implement
-
-