Project: PocketEstate

PocketEstate enables easy organisation of mass clientele property information through sorting of information by price, location and housing type, that may otherwise be difficult to manage.

Given below are my contributions to the project:

Code contributed: RepoSense link

New Features & Enhancements

  • New Feature: Added new models Property and Appointment, and all their attributes.
    • What it does: Each Property models a property listing, storing several attributes including the address, postal code, deadline to sell and client information of the property. Each Appointment models a scheduled meeting, storing several attributes including meeting date and time.
    • Justification: The core functionality of our application is heavily reliant on both of these models, as our application is about organizing both property and appointment data.
    • Highlights: Each Property may contain several optional attributes, such as remarks, tags and client’s information. Each attribute also has nicely formatted output to be shown to the user in the GUI.
  • Enhancement: Implemented parsing support for all attributes of Property and Appointment.
    • What it does: Performs strict input validation on user input arguments for each of the attributes of both Property and Appointment. Ensure that user input for each field is correctly validated. Upon invalid inputs, descriptive error messages are shown to user.
    • Justification: The creation and storage of every Property and Appointment is heavily dependent on the correct parsing of user input. Without ensuring correct parsing of user input commands, the application will not be able to store the data of the user accurately.
    • Highlights: Strict but yet flexible regex validation on user input for client’s asking price, allowing for optional dollar sign and optional commas separating the numbers for greater ease of inputting large prices. Strict validation is also performed on user input date and time arguments, with error messages tailored to incorrect input format and invalid dates and times. The implementation was challenging as it required knowledge of regular expressions to construct all the validation regex.
  • Enhancement: Added the ability to add properties and appointments through the two different add commands.
    • What it does: Allows the user to add a property or appointment to the application.
    • Justification: These basic core commands are required for users to add new information to the application.
    • Highlights: Provides greater convenience for fast typists by allowing for a range of attributes (both mandatory and optional) to be entered in one shot.
  • Additional Enhancements:
    • Added check to prevent addition of property with passed deadline and appointment with passed meeting date and time
    • Removed all traces of original addressbook that were not needed (#133)
    • Added icons to application GUI for easier differentiation between property types
    • Added application icon
    • Wrote additional tests (#299, #62, #66)

Project management

  • Managed releases v1.2, v1.2.1, v1.3, v1.3.1, v1.4 (5 releases) on GitHub

Documentation

  • User Guide:
    • Added documentation for commands add property and add appointment (#25, #290)
    • Added introduction and trying out sections (#185)
    • Added storage and appendix sections (#185)
    • Formatted table of contents with numbering for each section (#187)
  • Developer Guide:
    • Added implementation details of the Property component. (#182, #215, #219)
    • Added implementation details of the Appointment component. (#182)
    • Updated Non-Functional Requirements section (#28)
    • Updated Architecture sequence diagram, Ui class diagram, Logic class diagram, Model class diagram (#142, #151, #156, #182)
    • Formatted table of contents with numbering for each section (#323)

Community