Dhafin Razaq Oktoyuzan's Project Portfolio Page
Project: FitEgo
FitEgo is a desktop application for fitness instructors to schedule, and keep track of his/her customers’ progress and payments in one place. It is faster compared to manually tracking administrative matters using alternative software like Excel and Google Calendar. The user interacts with it using a CLI, and it has a GUI created with JavaFX.
It is written in Java, and has about 23 kLoC.
Given below are my contributions to the project.
- New Feature: Added the ability to add and delete schedules. (Pull Request #81, #96)
- What it does: Allows the user to add and delete schedules. A schedule contains information about a client and the attended session. Thus, adding a schedule means that the specified client will come to a session.
- Justification: This feature is core to the product because the user needs to be able to associate a client to a session. This is necessary for the other enhancements in the project such as the ability of tracking the sessions attended by a client and tracking which clients will attend a session.
- Highlights: Before implementing this feature, a
Schedule
model must be implemented first. When implementing theSchedule
model (which is then implemented as an association class of client and session) and how it should be stored in the storage, in-depth design analysis were needed. Creating the test cases were also challenging since it needs to test the integration withClient
andSession
objects.
- New Feature: Added the payment tracking feature (PR #137)
- What it does: Allows the user to track the clients’ payment status by looking at either the right side panel or the client’s detail view.
- What I did: Associate each schedule (which contains a client and session) to a payment status (either paid or unpaid) and modify the right side bar and client detail’s table to show the payment status.
- Justification: This feature allows the user to easily spot whether a client has paid for a session by just looking at the color of the texts.
- Highlights: The implementation requires a good understanding in UI (including JavaFX and CSS coloring) and how it relates to the logic.
- Credits: Credit to Kelvin for creating the right side bar and Bennett for creating client’s detail table
-
Code contributed: RepoSense link
- Project management or team-based tasks:
- Contributed to
v1.3
andv1.4
demo and non-feature-specific documentations on UG and DG. - Maintained issue tracker such as labelling and closing finished issues.
- Contributed to
- Enhancements to existing features:
- Modified and enhanced
cedit
fromedit
command. It will automatically show the edited client’s detail view after executing acedit
command. (PR #53, #165) - Modified
cdel
to check for associated Schedules before deleting the Client. (PR #152) - Modified
Session
model (and its relation toStorage
) to use interval as unique identifier. (PR #95) - Added test cases for
Schedule
model. (PR #158) - Adapted saving to
Storage
to includeSchedule
objects. (PR #74) - Refactored
#isUnique()
into#isIdentical()
so that the naming aligns with the expected output. (PR #166)
- Modified and enhanced
- Documentation:
- User Guide:
- Added documentation for the features
schadd
andschdel
. (PR #143) - Added documentation for the feature
cedit
. (PR #242) - Added information on duplicate client. (PR #230)
- Updated FAQ’s contact us link and other potential query. (PR #234)
- Proofread and fixed UG (includes fixing broken links and formatting). (PR #173, #163)
- Added documentation for the features
- Developer Guide:
- User Guide:
- Review or mentoring contributions:
- Regularly discuss design and implementation details with group mates.
- Discuss bugs and feature or enhancement proposals during team meeting, via group communication channels, or via issues. (example: issue #141, issue #174).
- Review and comment on PRs regarding code quality (PR #91), implementation bug (PR #226), and other improvements.
- Community:
- Asked questions in Gitter, one of which was about the convention of code integration.
- Beyond this team: reported bugs and suggestion for other team via CATcher (examples: PR #188)