Tang Zhi Lin's Project Portfolio Page
Project: GithubContact
GithubContact is an address book integrated with Github’s Public API, targeted at software engineering project managers to help them communicate and collaborate with their teams smoothly.
Given below are my contributions to the project.
- New Feature: Added the ability to switch between different pages (e.g. people list page, person details page,
help page).
- What it does: allows the user to navigate between pages with arrow keys and shortcut keys.
- Justification: This feature improves the user experiences because the user can navigate between pages without using
mouse, as we are building keyboard-friendly application. For example,
Esc
for back andF1
for help are very intuitive to users. - Highlights:
- This feature required decent knowledge in
Observable
andEvent
in javaFX. - To implement it correctly, it required hours to test it manually as it have too many possible cases (e.g. user switch to mouse interaction in the middle) and we do not have GUI end-to-end testing.
- This feature required decent knowledge in
- Credits: This idea is heavily inspired by Raycast with some simplification.
- New Feature: Added the ability to navigate back to previous page with
back
command orEsc
key.- What it does: application will record the page history of users, and allow users to go back to previous page with
back
command orEsc
shortcut key. - Justification: This feature improves the user experiences because it is intuitive to users (i.e. it is very common to users such as using browser).
- Highlights: This feature required knowledge in data structure (i.e. stack) and in-depth analysis of page switching so it won’t cause storing infinite pages in history.
- What it does: application will record the page history of users, and allow users to go back to previous page with
- New Feature: Added the ability to sort people.
- What it does: allows the users to sort people by name, role, address in either ascending or descending order.
- Justification: This feature improves the user experiences because it users do not need to scroll to bottom to find person. In addition, people sorted with name in ascending order is intuitive to users.
- Highlights:
- This feature required knowledge in javafx observable
SortedList
and integration with UI because it might breakdelete
command as it change the index of a person. - This feature needs change in abstraction of
Model
andLogic
because we want to preserve the usage offind
which also modify the list.
- This feature required knowledge in javafx observable
- New Feature: Added Help pages that allows user to open help page with
help
orF1
key- What it does: allows the users to open help page to refer command usages with
help
command orF1
key. - Justification: This feature allows the users to check command usages without referring to external source (e.g. user guide).
- Highlights:
- This feature required knowledge in javafx
Event
to listen keyboard events from users and open up help page when user pressedF1
key. - This feature required in-depth knowledge in javafx layout-ing and styling in order to build help pages. (e.g. monospace font in command text, fixed-width commands column)
- This feature required knowledge in javafx
- What it does: allows the users to open help page to refer command usages with
- New Feature: Added Person detail page that allows user to view contact detail and GitHub repositories
- Credits:
- Repositories List is adopted from Person List panel
- Andrew provided the skeleton of the page
- Credits:
- New Feature: Added argument aliases that allows user to pass argument to command with different aliases (e.g.
n/
andname/
will have the same effect).- Highlights:
- This feature is challenging as it required modifications in
ArgumentsTokenizer
.
- This feature is challenging as it required modifications in
- Highlights:
-
Code contributed: RepoSense link
- Project management:
- Managed release
v1.2
,v1.3trials
(2 releases) with ChangeLog. - Created and assigned 80% of GitHub issues to team members.
- Managed release
- Enhancements to existing features:
- Documentation:
- User Guide
- Added Documentation for
sort
andback
- Added brief command usages and examples for every command in order to allow team to modify further.
- Added Documentation for
- Developer Guide
- Added implementation detail (e.g. explanation and UML diagram) for switching page.
- Added implementation for
SortCommand
- Updated Person’s model UML Diagram (Added extra attributes such as
timezone
,role
)
- User Guide
- Community: