Project: SalesNote

SalesNote is a desktop application that helps tailors to manage sales and keep track of a smaller, but more recurrent group of clients. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). It has about 20k lines of code written in Java.

Given below are my contributions to the project.

  • New Features:
    • Added gender, measurement and remark fields to the Person class and updated the existing commands to make sure of these fields #30 #31 #32
      • Allows the user to record the gender and body measurements of a client while storing general notes about the client.
      • Justification: This feature extends the product’s functionality because it allows the user to keep track of important crafting details of their clients, which will then help them shorten the workflow.
      • Highlight: This enhancement affects existing commands and commands to be added in the future. This makes the implementation challenging as it required changes to existing main commands and a bug could break the entire application.
    • Implemented tag for the task class #74
      • Allows the user to label a task for the purpose of identification.
      • Justification: This feature improves the product significantly because it allows user to categorise different tasks based on their purposes (a task can be either a general task or linked to a specific order).
    • Implemented add and delete orders functionality #81 #82
      • What it does: allows the user to create and delete orders.
      • Justification: This feature is crucial to the product because it allows the tailors to manage their sales orders of the business more conveniently.
    • Implemented tabs’ auto-switching based on the users’ commands #108
      • What it does: allows the user to observe the respective lists of data based on the type of commands inserted (e.g., the tab will be switched to show the tailor’s orders if the tailor executed a command related to orders).
      • Justification: This feature improves the product significantly because the tailors can visually view and check result of a command.
      • Highlight: This features was challenging. It required a strong understanding of how GUI works and an in-depth analysis of design alternatives so that there is no additional coupling elements resulted.
  • Code contributed: RepoSense link

  • Project management:
    • Set up the GitHub team organisation and repository
    • Managed release v1.2.1, v1.3.1 and v1.4.1 (3 releases) on Github
  • Enhancements to existing features:
    • Improved GUI of the application and updated its color scheme #53
    • Update clear command to remove all data in SalesNote #162
  • Documentation:
    • User Guide:
      • Added documentation for commands related to tasks #138
      • Tweaked the table of content to increase flexibility when there are many headers (of different formats) in the UG #167
      • Rearranged the order of the commands so that it is more intuitive for the readers #167
      • Reviewed, raised and fixed issues throughout the UG
    • Developer Guide:
      • Added use cases for adding and deleting an order #86
      • Updated the Model class diagram #86
      • Tweaked the table of content to increase flexibility when there are many headers (of different formats) in the DG #86
      • Updated diagrams in Logic component #273
      • Updated acknowledgements in the DG #260 #273
      • Updated the Model component’s description and diagrams #273
      • Added sequence diagrams to show how changes in a person’s details are updated in the task or order list #273
      • Reviewed, raised and fixed issues throughout the DG
  • Contributions to team-based tasks:
    • Updated the README.md file to match our project
    • Updated Site Wide Settings in _config.yml, _base.scss and index.md files
    • Wrote test cases for some of the features implemented by other teammates
    • In charge of versioning of the code, maintaining the code repository, integrating various parts of the software to create a whole.
    • Reviewed, raised and fixed issues in the repository
  • Community:
    • Few examples of pull requests reviewed (with non-trivial comments): #21, #44, #45, #68, #79
    • Reviewed and reported bugs in other team’s product (link to the issues)