Brandon's Project Portfolio Page
Project: Track-O
Track-O is a desktop address book application used by private tutors to schedule lessons and track payments. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 17 kLoC.
Given below are my contributions to the project.
- Add lessons: Added the ability to add lessons to a tutee.
- What it does: allows the tutor to add lessons to any of their tutees and keep track of the details of their lessons. The details of each lesson include its subject, day of occurrence, start time and end time, as well as its hourly rate.
- Justification: This feature implements a core functionality for the application as tutors need not manually keep track of lessons using a calendar. Furthermore, commands such as
PaymentAddCommand
andScheduleCommand
depends on lessons being implemented. - Highlights: This enhancement requires lessons to be stored in the hard disk. It required an in-depth analysis of how the
Storage
package works. The implementation too was challenging. An initial approach of storing a nested JSON with lessons nested inside tutees failed due to errors in processing the JSON file on start-up. In the end, the lessons are stored as a JSON string under each tutee. - Credits: https://www.baeldung.com/jackson-exception#2-the-solution
- Schedule: Added the ability to display the tutor’s lessons.
- What it does: allows the tutor to keep track of all their lessons of the week at a glance. The lessons in the schedule are sorted based on the day of week, followed by the start time of the lesson.
- Justification: This feature implements a core functionality for the application as it provides a glance of all the tutor’s lessons with just the
schedule
command. It also helps to enforce the constraint that the tutor’s lessons cannot have any clashes in timing. - Highlights: This enhancement requires adding each tutee’s lessons into the schedule, as well as the name of the tutee involved in that lesson, using a
TreeMap<Lesson, String>
to ensure that the lessons are sorted.
-
Code contributed: RepoSense link
- Project management:
- Set up team repo on GitHub.
- Enhancements to existing features:
- Updated the
help
command to include the usage commands of all commands in the result panel (Pull request #43)
- Updated the
- Documentation:
- User Guide:
- Added the
About
portion to include the explanation of complex terms and the explanation of the GUI layout (Pull requests #162, #183) - Added documentation for the
addlesson
andschedule
commands (Pull requests #67, #91) - Updated existing documentation for the
add
,edit
andclear
commands (Pull request #98)
- Added the
- Developer Guide:
- Added implementation details of the
Schedule
feature (Pull request #56) - Updated the UML diagrams in the Model component section with updated
Tutee
fields (Pull request #171) - Added implementation details of the
Lesson
feature and theAddLessonCommand
(Pull request #191) - Added the use cases for adding and deleting lessons (Pull request #204)
- Added implementation details of the
- User Guide:
- Community:
- Tools:
- Integrated Codecov to the team repo.