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
Transaction
class (#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
Transaction
class, and how should it interacts with thePerson
class since eachTransaction
object is associated with somePerson
objects. - Credits: referenced from AddressBook Level 3’s
Person
class.
- New Feature: Added
listTransaction
command (#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
list
andfind
commands.
- New Feature: Added
deleteTransaction
command (#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
delete
command.
- New Feature: Added
duplicateTransaction
command (#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
add
andedit
commands.
- Code Refactoring: Refactor
Descriptor
class (#304)- What it does: abstract a new
Descriptor
class that stores the parameters of a command, linking between someCommand
classes and their respectiveParser
classes. - Justification: improves code quality and maintainability.
- What it does: abstract a new
- Code Refactoring: Refactor
listPerson
command (#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
list
andfind
. - Credits: referenced from AddressBook Level 3’s
list
andfind
commands.
-
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