Yan Xiaozhi's Project Portfolio Page
Project: SociaLite
SociaLite is a desktop app for connecting avid social media users with their contacts’ social media pages, optimized for use via a command line interface (CLI). At the same time, it has a graphical user interface (GUI) created with JavaFX. It is written in Java, and has about 10 kLoC.
Given below are my contributions to the project.
- New Feature: Command history (PR #52, #130)
- What it does:
- Allows users to browse through commands that they have entered by pressing
UP/DOWN
key in the command box. - Resembles the behavior of macOS or Windows terminal.
- Allows users to browse through commands that they have entered by pressing
- Justification:
- Previously, if a user made a careless typo in the command, he/she would have to re-type the entire command, which can be very frustrating and time-consuming.
- With command history, users can simply press the
UP
key, make slight edit to the previous command and hitEnter
again. - This feature improves the UX significantly because a user can now rectify his/her typo in an efficient way.
- Highlights:
- Command history of the current session, as well as all previous sessions, are stored in a
.json
file. This requires good grasp of json serialisation. - The design of this feature involves thorough understanding of the
Storage
component, and multiple new classes are created.
- Command history of the current session, as well as all previous sessions, are stored in a
- What it does:
- New Feature: Pin/Unpin contact card (PR #81, #142)
- What it does:
- Allows users to pin/unpin specified contact cards to the top of the list, similar to Telegram.
- Users can either type
pin/unpin INDEX
in the command box, or press thePin/Unpin
button on the top-right hand corner of the contact card.
- Justification:
- Users might want to keep a few of their closest friends/family members at the top of their contact list for easy reference.
- Highlights:
- The design of this feature involves thorough understanding of
ContactList
,UniquePersonList
. - This feature provides support for both CLI and GUI.
- The design of this feature involves thorough understanding of
- What it does:
- New Feature: Share contact (PR #71, #140)
- What it does:
- Allows users to copy contact information of a selected contact card (e.g. name, phone number, social media handles) to the system clipboard.
- Users can either type
share INDEX
in the command box, or press theShare
button on the top-right hand corner of the contact card.
- Justification:
- The main idea of SociaLite is individualized online interaction. This new feature aligns with the product concept.
- By attaching a URL to the product site, contact sharing will introduce more users to try SociaLite in the future.
- Highlights:
- This feature provides support for both CLI and GUI.
- What it does:
- New Feature: Telegram handle support (PR #31)
- What it does:
- Allows users to add/edit a contact’s Telegram handle using the
tele/
prefix.
- Allows users to add/edit a contact’s Telegram handle using the
- Justification:
- CRUD of social media handles is an integral feature of SociaLite.
- Highlights:
- What it does:
- Altered Feature: Optional remark (PR #56)
- What it does:
- Allows users to create/update a contact without remark.
- Justification:
- With Zac’s implementation of making social media handles optional (PR #42), it only makes sense to make remark optional as well.
- Highlights:
- What it does:
- Code contribution:
- Please refer to the RepoSense link.
- Project management:
- Team leader of the SociaLite team, facilitated discussions during weekly team meetings and oversaw the entire project.
- Created GitHub organization and set up team project repository.
- Managed all four milestones (
v1.1
,v1.2
,v1.3
,v1.4
) on GitHub and assigned issues to respective team members. - Managed four releases (
v1.3
,v1.3.1
,v1.3.2
,v1.4
) on GitHub.
- Enhancements to existing features:
- Documentation:
- Community: