Project: HairStyleX

HairstyleX helps managers for budding neighborhood hair salons to manage clients, hairdressers, and appointments. It is optimized for CLI users so that frequent tasks can be done faster by typing in commands. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 20 kLoC.

Summary of Contributions

Code contributed

Access my RepoSense link to view the code that I have contributed.

Enhancements implemented

  • Create CRUD for Hairdresser Classes: Designed and created Add, Edit, Delete and List commands for Hairdresser (Pull request #85, #101)
    • What it does: The CRUD features allows the user to manage the hairdresser data. Also Encapsulates the logic that makes changes to the Model and Storage classes whenever hairdressers are manipulated in HairStyleX.
    • Justification: These commands are essential to ensuring that hairdressers are stored and saved correctly in HairStyleX whenever a user manipulates them.
    • Highlights:
      • CRUD for hairdresser was one of the first CRUD operations built for HairStyleX. This set a direction for adding features and tweaking model, logic and storage packages while morphing the original AddressBook-3 into a multi-entity application, to ensure that the data will be handled in the correct and orderly manner.
      • Improvements for better OOP are made along the way. For instance, Specialisation class was refactored to using enum (#160), as the types of specialisations for hairdressers are rather fixed and abstracting to enum removes possibility of duplicates and increases accuracy for hairdresser data.
  • Create Print command for exportation of data: Designed and created Print command. (Pull request #202, #261)
    • What it does: The Print command allows the user to export the data of hairdresser, client and appointment into .csv files.
    • Justification: The command gives the users an option to save data into an easy-to-read and easy-to-operate format.
    • Highlights:
      • Print command allows the all three lists of hairdresser, client and appointment to be exported into .csv format with user input of one single command, together with timestamp of time of creation written inside the files.
      • Print command allows the concurrent exportation of the three lists using executer and multi-thread, thus reducing the overall runtime for potential large list exportation.
    • Credit: the idea of Print is inspired by Warenager.
  • Integration and enhancement to Id (Pull request #111, #278 (under IdCounter.java), #284)
    • What is does: Enforces the user to identify Clients, Hairdressers and Appointments by their unique Id instead of the default list index that is shown in AddressBook-3.
    • Justification: The Id classes are designed and created by James. Integration of the Id classes into hairdresser and client and enhancement to IdCounter related classes are done later.
    • Highlights:
      • Integrated the PersonId and PersonIdCounter classes into hairdresser and client classes and ensured that Ids are stored and saved correctly in HairStyleX whenever a user manipulates them. (#111)
      • IdCounter#reset() function was designed and implemented so that the stored instance for the singleton class IdCounter can be cleared and reset (#278 (under IdCounter.java)). This is especially useful for testing purposes, where multiple Models will be created and tested.
      • Validation for IdCounter is enforced while constructing HairStyleX(#284).
  • Testing: Create tests for hairdresser related commands and classes that increased coverage by 19.85%. (Pull request #123, #278)

Contributions to the User Guide

  • Provided a detailed guide supplemented with screenshots and examples for hairdresser management commands, including add_hairdresser, list_hairdresser, edit_hairdresser, delete_hairdresser, filter_hairdresser. (Pull request #190)

Contributions to the Developer Guide

Contributions to the team-based tasks

  • Set up github page and CI for the team repo
  • Set up project boards used by the team in the early stages
  • Created and uploaded releases for v1.2 and v1.4, and uploaded video for v1.2 demo
  • Fixed miscellaneous bugs (#211), updated UI (#317)

Review/mentoring contributions

  • PRs reviewed (with non-trivial review comments): #255
  • Guided team members on the basic git workflow for team collaboration

Contributions beyond the project team

  • Reported 10 bugs in group W11-4’s tP during mock PE