This portfolio page highlights some of my contributions to Calgo - a Software Engineering project developed in my second year of undergraduate studies in the National University of Singapore.
We are 5 Year 2 Computer Science undergraduates reading CS2103T: Software Engineering.
Calgo is an all-in-one personal meal tracking assistant which seeks to encourage a healthy lifestyle among its users. It allows users to not only have a convenient nutritional record of all their favourite food entries, but also track, monitor, and plan their food consumption. Moreover, the team has come up with a plethora of user-centric features to make Calgo well-suited to provide users with both convenience and utility.
My team was tasked with morphing an existing Address Book Level 3 (AB3) project into a new product via Brownfield software development. We were therefore required to use the existing AB3 project as Calgo’s project foundation, to create a desktop application supporting the Command Line Interface. This was to target users who prefer typing but also enjoy the benefits of a Graphical User Interface. With all of us being food lovers and realising a greater societal need for healthy eating, Calgo was born.
-
Major enhancement: I implemented categorical search via the
find
command.-
What it does: This allows users to search for
Food
entries by narrowing down on a specificFood
-related attribute of eitherName
,Calorie
,Protein
,Carbohydrate
,Fat
, orTag
. -
Justification: Users now have an option to perform refined searches, preventing the need to tediously scroll through the
Food Record
. -
Highlights: This enhancement requires in-depth understanding of the application’s architecture. A new parser for the
find
command was created to detect different prefixes entered by the user, as with supporting classes to facilitate background workings.
-
-
Major enhancement: I implemented the
export
command.-
What it does: This allows users to export their current
Food
entries to a portable, neatly formatted editable .txt file. They can now also add their own notes and share their entries. -
Justification: This improves user experience as they can now obtain a copy of their
Food
entries for multiple purposes like printing onto paper. -
Highlights: This enhancement requires comprehensive understanding of how commands are processed. A new class for the command, as well as supporting classes (such as for table formatting) were created. Moreover, as the
report
command is similar, we applied good OOP practices for better code quality and reuse.
-
-
Minor enhancement: I implemented substring search via the
find
command.-
What it does: This allows users to search for
Food
entries by typing incomplete keywords for searching using theName
orTag
prefixes. Results are entries containing these substrings. -
Justification: Users no longer have to type the full keyword. Those who are lazy, or happen to enter incomplete keywords can still have their results shown.
-
Highlights: This enhancement relies on
Predicate
s, as with categorical search above.
-
-
Minor enhancement: I implemented the lexicographical ordering of
Food
objects.-
What it does: This makes the
Food Record
show all entries in lexicographical order. -
Justification: It is frustrating to scroll through messy entries.
-
Highlights: We perform sorting only when Calgo starts up or when new entries are added for efficiency.
-
-
Code contributed: You can view my contributions to Calgo here.
-
Other contributions:
-
Documentation:
-
Wrote sections for
find
,list
,export
of the User Guide: #117, #141, #159, #160, #206, #217, #223, #226, #268, #272, #278, #287 -
Wrote sections for Storage Component, Searching, Lexicographical Ordering, and Exporting, of the Developer Guide: #123, #124, #141, #245, #259, #272, #275, #278, #287
-
Miscellaneous contributions: #65, #67, #68, #89, #116, #121, #165
-
-
Project and team management & contributions:
-
Update team pages/documentation: #40, #42, #52, #65, #67, #89, #117, #121, #123, #124, #141, #159, #160, #206, #223
-
Team lead: facilitated meetings and discussions, standardisation, providing technical help. Also reviewed some PRs: 1, 2
-
Product ideation, user testing, facilitating issue tracker and milestone management, curating some JUnit tests (e.g. for
find
command).
-
Beyond the team:
-
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. Please note that some hyperlinks may not work as the guide is not part of this portfolio. |
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. Please note that some hyperlinks may not work as the guide is not part of this portfolio. |