Jefferson Lim's Project Portfolio Page
Project: StudyTracker
StudyTracker is a desktop application for students to keep track of their favourite study spots. The user interacts with it using a CLI, and it has a GUI created with JavaFX. This project was built upon AddressBook - Level 3. It is written in Java, and the team has contributed about 12 kLoC.
StudyTracker was built to solve the problem of not finding productive study spots. We aim to maximise students’ productivity by making it easy to find the best place to study.
Feature contributions
-
Alias feature:
Added an Alias Command for user-defined commands (PRs #65, #103)
- What it does: allows the user to set custom commands to reduce typing
- Justification: aliases improves StudyTracker significantly because a user can customize the program to their own needs, and complements other features (e.g. logging, editing) seamlessly
- Design considerations: designing this feature required overhauling logic to parse user input, in order to maintain a list of commands in addition to user aliases
- Design considerations: I also considered whether aliases should simply map a shortcut to a single command word, or allow aliases to map to other aliases (like in Unix shell). Ultimately, a middle option between the two was chosen.
-
Colour themes & GUI enhancements: Designed and implemented the GUI of StudyTracker in JavaFX.
Also implemented custom colour themes using CSS to change the look of StudyTracker, along with a Style Guide for developers and designers.
(PRs #85, #92, #110, #131)
- What it does: users access a Settings menu to select the colourscheme of their choice. With the Style Guide, developers can further enhance and create new themes of their own.
- Created mockups of GUI using Figma
-
Credits: Team members Joenz, who wrote the logic for
Help Window
andHours Studied Pie Chart
, and Danqi, who helped with the GUI design
Other contributions
- Test code
-
Documentation
- Documentation was written with the intent to be clear and user-centric. When technical depth was required, I aimed to be concise and understandable.
- User Guide:
- Developer Guide:
- Contributions to team-based tasks
- Non-trivial code reviews
- My overall code contribution can be found at this RepoSense link