Skip to content

Latest commit

 

History

History
92 lines (62 loc) · 9.82 KB

eugenetyc.adoc

File metadata and controls

92 lines (62 loc) · 9.82 KB

Eugene Tan Yew Chin - Project Portfolio

PROJECT: Calgo

Overview

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.

About the Team

We are 5 Year 2 Computer Science undergraduates reading CS2103T: Software Engineering.

About the Project

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.

Summary of contributions

Enhancements

  • 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 specific Food-related attribute of either Name, Calorie, Protein, Carbohydrate, Fat, or Tag.

    • 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 the Name or Tag 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:

Contributions to the User Guide

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.

Contributions to the Developer Guide

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.