layout | title |
---|---|
page |
Adam Oh Zhi Hong's Project Portfolio Page |
CohortConnect is an advanced desktop address book which facilitates networking among Computer Science (CS) students, in a university setting. It contains advanced features for managing multiple contacts and finding teammates from GitHub data. It is optimised for a CLI, but also has a GUI built using JavaFX. It is written in Java 11 and has about 17k lines of code.
Features Implemented
My code contributions can be found in the tP Code Dashboard.
-
Export Command
- Description: Allows users to export their contacts to a JSON or CSV file for sharing and storing of large amounts of contacts.
- Highlight: Support for CSV was added as it is a more commonly used file format, and can be viewed or modified with Excel.
- Difficulty: Difficult, as I had to add code to the Logic, Model, Storage and Util components, adhering to the existing design patterns. Furthermore, usage of Jackson CSV module introduced regressions which took a long time to fix.
-
Import Command
- Description: Allows users to import a list of contacts from a JSON or CSV file, populating their address books without entering contacts manually.
- Highlight: Support for CSV was added as it is a more commonly used file format. Professors will have an easier time populating CSV files in Excel.
- Difficulty: Intermediate. After implementing Export, I was able to code faster.
-
Command History
- Description: Allows users to recall previous commands using Up and Down arrow keys. Users can retype misspelled commands, repeat previous commands quickly, or just to browse through previous commands.
- Highlight: This feature ties into the target user's preference for the Command Line, as it is a common feature found in terminals.
- Difficulty: Intermediate. The core idea was simple, but there were many edge cases which I did not consider initially.
-
Switching Between Tabs Using Keyboard Shortcuts
- Description: Allows users to switch between the 4 tabs in CohortConnect using Cmd/Ctrl + 1/2/3/4.
- Highlight: Our target user, a fast typist, will greatly benefit from keyboard shortcuts for navigation.
- Difficulty: Intermediate. It was difficult to familiarize with JavaFX's EventHandlers, Accelerators and KeyCombinations.
-
GitHub and Telegram Commands
- Description: Allows users to open the current user's GitHub page or link to Telegram.
- Highlight: Provides a quick method to network with the contact.
- Difficulty: Easy.
Credits: jackson-dataformat-csv for reading and writing to CSV files.
Documentation
- User Guide:
- Added a labelled user interface diagram for easy familiarization with the UI.
- Added usage details for Import, Export, Command History, Switching Between Tabs and GitHub and Telegram Commands.
- Developer Guide:
- Updated requirements as they evolved.
- Added implementation, diagrams and use cases for Import, Export, Command History, Switching Between Tabs and GitHub and Telegram Commands.
Team-Based Tasks
- Managed all releases from
v1.1
tov1.4
. - Ensured project deliverables were done correctly and on time.
- Studied Material Design's Dark Theme Guide and created the UI mockup on Figma to kick-start the GUI re-work.
Review Contributions
- Reviewed numerous PRs of my peers and provided non-trivial feedback regarding code quality. Examples: #24, #65, #125, #224
Contributions Beyond Project Team
- Asked questions and shared useful information to answer queries in the forum with great feedback, for example this answer about fast-forwarding in Git and this discussion question.