Toh Yi Cheng - Project Portfolio Page

Project: AthletiCLI

Overview

AthletiCLI is an application used to track, analyse, and optimize the users athletic performance. It is designed for committed athletes who not only keep track of their physical activities but also dietary habits, sleep metrics, and more. The user interacts with it using a CLI. It is written in Java, and has more than 10k LoC.

Summary of Contributions

Code contributed:

Feature implemented

New feature: Users can add and delete diet goals

For motivated users on AthletiCLI, they can create diet goals to keep track of their nutrient intake. The nutrients supported currently are Calories, Fat, Carb and Protein. Consuming more nutrient than the target value indicates that they have achieved their diet goal for that specific nutrient.

If they would like to remove their existing goals, they can remvoe it with the delete function

New feature: Users can see all diet goals

This provides a convenient way for users to see all the diet goals that they have created and their current progress.

New feature: Editing diet goals

Instead of deleting diet goals and creating a new one, edit diet goal functionality hopes to streamline the process. Instead of typing 2 commands to edit the target value of users’ current diet goals, one command could do the same trick.

Enhancements implemented:

Enhancement: Diet goal tracks diets within a limited time period. Daily and Weekly.

With the enhancement of diet goals, instead of tracking infinite records of diets in the past, the diet goal is now optimised with controlled time span of 1 day (daily diet goal) or 7 days (weekly diet goal). This enhancement provides more meaningful diet goal function for the users to track their nutrients intake from their diets.

This explains the use of daily/weekly in setting and editing diet goal commands.

Example of set diet goal command: set-diet-goal DAILY calories/500

Enhancement: Diet goal not only encourages nutrients intake but also discourages nutrients intake.

Previously, users can only set diet goals that keep track of their nutrient intake. Once they have exceeded their target value for the nutrients, the diet goals is marked as achieved.

However, this may not be the case for all nutrients. For example, for athletes who want to gain muscles, they would increase their intake of protein. At the same time, they would need to reduce their weight by cutting on fat consumption. In this case, the diet goal only encourage them to consume more fat. Therefore, ‘unhealthy’ diet goal is created. It marks a diet goal as not achieved if the value consumed is greater than the target value.

The creation of such goal can be accomplished by indicating an optional flag unhealthy.

Example of set diet goal command: set-diet-goal DAILY unhealthy calories/500

Contributions to the UG:

Contributions to the DG:

Sections contributed:

Added UML diagrams:

Class Diagram for AthletiCLI main class:

Class Diagram for data class:

Sequence diagram for creating a diet goal:

Contributions to team-based tasks

Contributions beyond the project team