Nguyen Cao Duy's Project Portfolio Page
Project: Spend N Split
Spend N Split (SNS) is a desktop app for managing expense from contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, SNS can get your contact expense management tasks done faster than traditional GUI apps.
Given below are my contributions to the project.
- New Feature: Added
Transactionclass (#66, #76, #79)- What it does: provides an internal representation of a transaction in the application, with necessary fields and methods to support the application’s features.
- Justification: This feature is foundational to support all the application’s transaction-related features.
- Highlights: This feature required an in-depth analysis of what fields should be included in the
Transactionclass, and how should it interacts with thePersonclass since eachTransactionobject is associated with somePersonobjects. - Credits: referenced from AddressBook Level 3’s
Personclass.
- New Feature: Added
listTransactioncommand (#81)- What it does: allows the user to view the transactions based on the name of people involved in the transaction.
- Justification: user can store a lot of transactions with many people, and it is useful to be able to view specific transactions based on some given criteria.
- Credits: referenced from AddressBook Level 3’s
listandfindcommands.
- New Feature: Added
deleteTransactioncommand (#106)- What it does: allows the user to delete a transaction from the transaction list.
- Justification: user can delete transactions that are no longer relevant or were created by mistake.
- Credits: referenced from AddressBook Level 3’s
deletecommand.
- New Feature: Added
duplicateTransactioncommand (#106)- What it does: allows the user to create a new transaction based on an existing transaction with optional changes.
- Justification: user might have some recurring transactions or transactions with similar details, and it is convenient to be able to create a new transaction based on an existing transaction.
- Credits: referenced from AddressBook Level 3’s
addandeditcommands.
- Code Refactoring: Refactor
Descriptorclass (#304)- What it does: abstract a new
Descriptorclass that stores the parameters of a command, linking between someCommandclasses and their respectiveParserclasses. - Justification: improves code quality and maintainability.
- What it does: abstract a new
- Code Refactoring: Refactor
listPersoncommand (#192)- What it does: allows the user to view specific people based on keywords, or view all people in the list if no keywords are provided.
- Justification: user can now have a single command to view people in the list, instead of having to use two separate commands
listandfind. - Credits: referenced from AddressBook Level 3’s
listandfindcommands.
-
Code contributed: RepoSense link
- Project management:
- Managed releases
v1.3-v1.4(3 releases) on GitHub - Managed milestones
v1.1-v1.4(6 milestones) on GitHub
- Managed releases
- Documentation:
- User Guide:
- Developer Guide:
- Community:
- Tools:
- Set up team repo with access control, branch protection, and page deployment
- Added Java CI and Codecov with GitHub Actions