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 and Hours Studied Pie Chart, and Danqi, who helped with the GUI design

GUI

Other contributions

  • Test code
    • Wrote JUnit Tests for existing and new features (1.2k+ LOC for tests): #48, #65, #231
    • 100% test coverage for Alias feature
  • 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:
      • Cosmetic tweaks to existing documentation & README, with a focus on brand voice and user-centricness: #102, #144, README
      • Updated and standardized diagrams, and created annotated screenshots of StudyTracker: #155
    • Developer Guide:
      • Added thorough implementation details with accompanying PlantUML diagrams, documenting the alias command and Themes feature: #96, #110
  • Contributions to team-based tasks
    • Refactored existing AB-3 code to fit StudyTracker. This was at the beginning of the project, since a lot of the class names did not match StudyTracker’s needs: #22, #48.
    • Facilitated team meetings :relaxed:
  • Non-trivial code reviews
    • #50 Improving code logic
    • #81 Suggestions for code quality
    • #90 Suggestions for coding standards
    • #97 Identified potential UX and consistency issues
  • My overall code contribution can be found at this RepoSense link