Stanley Han's Project Portfolio Page
Project: NeoBook
NeoBook is a desktop application for NUS students to better manage their contacts and the events they have scheduled with them. The user interacts with it using a CLI, and it has a GUI created with JavaFX.
Given below are my contributions to the project.
- New Feature: Added the ability to switch between UI tabs (PR #105).
- What it does: allows the user to switch between the
Address Book
,Events
, andMe
tabs using the tab command. - Justification: clicking the buttons in the tab bar requires the user’s hands to leave the keyboard; the tab command alleviates this by duplicating the functionality in the command line.
- Highlights: this feature integrates two types of input methods, necessitating a single source of truth in the model for a cohesive user experience.
- What it does: allows the user to switch between the
- New Feature: Added light and dark modes (PR #129)
- Justification: most contemporary applications have light and dark modes.
- Highlights: this feature required extensive use of CSS variables to propagate the theme colours throughout the UI.
-
Code contributed: RepoSense.
- Project management:
- Initialised team organisation and tP repository
- Created PR to the module’s
master
branch - Enabled issue tracker and GitHub Actions (for CI and codecov)
- Maintained the issue tracker and milestones
- Set up and adapted the project website for NeoBook
- Triaged issues from PE-D
- Enhancements to existing features:
- Redesigned the GUI
- Changed the layout (PRs #39, #56, #57, #59, #62, #74, #87, #96, #107, #131).
- Split the single contacts list panel into list and details panels to accommodate the increased number of information fields without cluttering the list.
- Moved the command box and result display to the bottom of the window, borrowing familiarity from popular desktop messaging applications.
- Added a tabbed view for the events and “me” panels to avoid cluttering the screen space, while borrowing familiarity from the widely used Outlook desktop client.
- Added a system of CSS styling options to increase code reuse.
- Labels have a series of font sizes (
h1..h6, p
). - Paddings have predefined styling (e.g.,
pt
for top padding,pa-l
for “all except left” padding). - The backgrounds for labels and panes have 3 colour types:
normal
,accented
, andmuted
. Generally,muted
is used for background components, whileaccented
is used in components containing information useful to the user.
- Labels have a series of font sizes (
- Enhanced the help window with the list of all commands (PR #181).
- The list uses the
MESSAGE_USAGE
from each of the commands, making it consistent with the help messages that show up in the result display.
- The list uses the
- Added extensive testing for new models and command parsers (PRs #271, #272).
- Improved code coverage by ~10%.
- Fixed several correctness bugs.
- Redesigned the GUI
- Documentation:
- User Guide:
- Added documentation for the
tab
command (PR #105).
- Added documentation for the
- Developer Guide:
- Updated implementation details of the UI (PR #139).
- Added implementation details of the
tab
command (PR #139). - Added
Planned enhancements
section (PR #303).
- User Guide:
- Community:
- Tools:
- Integrated a third party library (CalendarFX) to the project (PR #122), but subsequently removed it due to bugs and usability issues.