User Guide
Welcome to the PocketEstate User Guide! Learn how to use PocketEstate to efficiently organize property data, manage clientele information and keep track of your upcoming appointments.
Table of Contents
- 1. Introduction
- 2. Quick start
- 3. User Interface
- 4. Commands
- 5. Storage
- 6. FAQ
- 7. Command summary
- 8. Appendix
1. Introduction
1.1 What is PocketEstate?
PocketEstate is a desktop application for property agents to efficiently and effectively manage property data and appointment schedules. With PocketEstate, you can easily organize your property and clientele information, as well as keep track of your schedules and deadlines.
PocketEstate is also highly optimized for users who can type fast and prefer typing over other means of input, allowing fast completion of most tasks solely via Command Line Interface (CLI).
1.2 Using this User Guide
This user guide uses various formatting styles to facilitate reading and to communicate ideas more effectively. Here are some important conventions to take note of when reading this user guide:
Conventions | Meaning |
---|---|
Bold | Important information |
Note | Additional information |
Tip | Helpful tips |
Caution | Things to watch out for |
Keyboard | Keyboard buttons |
Code |
Examples |
[SQUARE_BRACKETS] | Optional parameters of a command |
UPPER_CASE | Parameters of a command to be supplied by the user |
… | Parameters of a command that can be used multiple times |
2. Quick start
2.1 Download and Launch
-
Ensure you have Java 11 or above installed in your Computer.
-
Download the latest
pocketestate.jar
from here. -
Copy the file to the folder you want to use as the home folder for PocketEstate.
-
Double-click the file to start the app. A Graphical User Interface (GUI) similar to the below should appear in a few seconds. Note how the app contains some sample data.
2.2 Trying out
- Let’s try out your first command by adding a new property! Type
add property n/Bishan t/Hdb a/Blk 150 Bishan Street 11 #02-101 p/570150 d/30-06-2021
into the command box and press Enter to execute it. After that, scroll down to the bottom of the property list to see your newly added property. - Want to view the properties in order of their asking price? Type the command
sort property o/desc k/price
and press Enter. The property list will now be in descending order based on price, with the property having the highest asking price at the top. - Now let’s try adding a new appointment. Type
add appointment n/Meet Jacob r/For collection of commission d/19-05-2021 t/1930
and hit the Enter button. Scroll down to the bottom of the appointment list to see your newly added appointment. - Forgot when you are supposed to meet Simon again? Let’s try finding out! Type
find appointment n/simon
and press Enter. There it is! Your appointment with Simon is on Sep 20, 2021, at 12:00PM.
-
list all
: Lists all properties and appointments in the app. -
delete property 2
: Deletes the 2nd property shown in the current list of properties. -
clear appointment
: Clears all existing appointment data from the app. -
exit
: Exits the app.
3. User Interface
3.1 Design
PocketEstate boasts a minimalist design with alternating steel blue and light blue colours for regular properties/ appointments as its main design scheme. We also feature a grey background for property and appointment listings with an expired deadline to allow users to better focus on current properties/ appointments.
3.2 Property Icons
We also use the following symbols for easier identification of different property types in the app:
Property Types |
Symbols |
---|---|
Hdb |
|
Condo |
|
Landed |
|
4. Commands
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. inadd property n/NAME
,NAME
is a parameter which can be used asadd property n/Bishan
. -
Items in square brackets are optional.
e.gadd property n/NAME t/PROPERTY_TYPE a/ADDRESS p/POSTAL_CODE d/DEADLINE [r/REMARKS] [cn/CLIENT_NAME] [cc/CLIENT_CONTACT_NUMBER] [ce/CLIENT_EMAIL] [ca/CLIENT_ASKING_PRICE] [tags/TAGS_SEPARATED_BY_COMMAS]
can be used asadd property n/Bishan t/Hdb a/Blk 150 Bishan Street 11 #02-101 p/570150 d/30-06-2021
or asadd property n/Bishan t/Hdb a/Blk 150 Bishan Street 11 #02-101 p/570150 d/30-06-2021 r/Urgent to sell cn/George cc/91124788 ce/george_4788@gmail.com ca/$750,000 tags/Urgent, 4 bedrooms
. -
Items with
…
after them should be used at least once.
e.g.[KEYWORD]...
can be used asgeorge
,george jacob
etc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME r/REMARKS
,r/REMARKS n/NAME
is also acceptable. -
If a parameter is expected only once in the command but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyn/The Mayfair n/Mayfair
, onlyn/Mayfair
will be taken. -
Extraneous parameters for commands that do not take in parameters (such as
help
, andexit
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
.
4.1 General
4.1.1 Viewing help : help
Shows a message explaining how to access the help page. A link to the user guide will be provided.
Format: help
4.1.2 Exiting the program : exit
Exits the program.
Format: exit
4.2 Adding
4.2.1 Adding a property: add property
Adds a property to the app.
Format: add property n/NAME t/PROPERTY_TYPE a/ADDRESS p/POSTAL_CODE d/DEADLINE [r/REMARKS] [cn/CLIENT_NAME] [cc/CLIENT_CONTACT_NUMBER] [ce/CLIENT_EMAIL] [ca/CLIENT_ASKING_PRICE] [tags/TAGS_SEPARATED_BY_COMMAS]
Description:
- Each property has a unique pair of address and postal code.
- No two properties with the exact same pair of address and postal code can exist in the app at the same time.
- Property types can be either Hdb , Condo or Landed
- The format for specifying a deadline date is
DD-MM-YYYY
. - Postal codes should have a minimum of 5 digits and a maximum of 10 digits.
- Client’s contact number should have a minimum of 7 digits and a maximum of 15 digits.
- There can be multiple tags but different tags should be separated with a comma.
e.g.tags/TAGS_SEPARATED_BY_COMMAS
can be used astags/Freehold
,tags/Freehold, 5 bedrooms
,tags/Freehold, 5 bedrooms, Near MRT
etc. - The property to be added cannot have a deadline that is already passed.
Examples:
add property n/Bishan t/Hdb a/Blk 150 Bishan Street 11 #02-101 p/570150 d/30-06-2021
add property n/The Estuary t/Condo a/97 Yishun Ave 1 p/769138 d/01-01-2022 r/Owner is up for negotiation of selling price cn/Sam cc/87553781 ce/sam_goh@gmail.com ca/$1,200,000 tags/99 year leasehold, Reservoir view
4.2.2 Adding an appointment: add appointment
Adds an appointment to the app.
Format: add appointment n/NAME r/REMARKS d/DATE t/TIME
Description:
- Each appointment has a unique pair of date and time.
- No two appointments with the exact same pair of meeting date and time can exist in the app at the same time.
- The format for specifying a date is
DD-MM-YYYY
. - The format for specifying a time is
HHMM
(in 24-hour clock). - The appointment to be added cannot have a meeting date and time that is already passed.
Examples:
add appointment n/Meet Jacob r/For collection of commission d/19-05-2021 t/1930
add appointment n/Meeting at agency r/Company is setting new sales target for the month d/01-06-2021 t/1300
4.3 Editing
4.3.1 Editing a property : edit property
Overwrites the information of the property according to the user input provided.
Format: edit property INDEX [n/NAME] [t/PROPERTY_TYPE] [a/ADDRESS] [p/POSTAL_CODE] [d/DEADLINE] [r/REMARKS] [cn/CLIENT_NAME] [cc/CLIENT_CONTACT_NUMBER] [ce/CLIENT_EMAIL] [ca/CLIENT_ASKING_PRICE] [tags/TAGS_SEPARATED_BY_COMMAS]
e.g.
tags/TAGS_SEPARATED_BY_COMMAS
can be used as tags/Freehold
, tags/Freehold, 5 bedrooms
, tags/Freehold, 5 bedrooms, Near MRT
etc.
Description:
- Edits the entry at the specified
INDEX
. The index refers to the index number shown in the displayed list. The index must be a positive integer 1, 2, 3, … - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- The edited property cannot have a deadline that is already passed.
edit property INDEX tags/
. e.g.
edit property 1 tags/
can be used to remove all the tags from the property at index 1.
Examples:
-
edit property 1 r/Urgent to sell cc/96011846
Edits the remark and client’s contact number of the 1st property to beUrgent to sell
and96011846
respectively.
4.3.2 Editing an appointment : edit appointment
Overwrites the information of the appointment according to the user input provided.
Format: edit appointment INDEX [n/NAME] [r/REMARKS] [d/DATE] [t/TIME]
Description:
- Edits the entry at the specified
INDEX
. The index refers to the index number shown in the displayed list. The index must be a positive integer 1, 2, 3, … - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- The edited appointment cannot have a meeting date and time that is already passed.
Examples:
-
edit appointment 3 d/21-07-2021 t/1500
Edits the date and time of the 3rd appointment to be21-07-2021
and1500
respectively.
4.4 Deleting
4.4.1 Removing a property : delete property
Deletes the property at the specified index from the app.
Format:
delete property INDEX
Description:
- Deletes the property at the specified
INDEX
. The index refers to the index number shown in the displayed list. The index must be a positive integer 1, 2, 3, … - The field INDEX must be provided.
Examples:
-
delete property 7
deletes the property at index7
.
4.4.2 Removing an appointment : delete appointment
Deletes the appointment at the specified index from the app.
Format:
delete appointment INDEX
Description:
- Deletes the appointment at the specified
INDEX
. The index refers to the index number shown in the displayed list. The index must be a positive integer 1, 2, 3, … - The field INDEX must be provided.
Examples:
-
delete appointment 7
deletes the appointment at index7
.
4.5 Listing
4.5.1 Listing all properties and appointments : list all
Shows a list of all properties and appointments in the app.
Format:
list all
4.5.2 Listing all properties : list property
Shows a list of all properties in the app.
Format:
list property
4.5.3 Listing all appointments : list appointment
Shows a list of all appointments in the app.
Format:
list appointment
4.6 Updating status
4.6.1 Updating the status of a property : update
Updates the status of a property from Option to Purchase, to Sales and Purchase Agreement to Completion
Format:
update INDEX OPTION
Description:
- Updates the status of the property at the specified
INDEX
. The index refers to the index number shown in the displayed list. The index must be a positive integer 1, 2, 3, …
Options:
-
u/new AMOUNT
u/new
can only be used on a property without an existing status.AMOUNT
is the amount of money that is offered in the Option to Purchase -
u/proceed
Can only be used on a property with an existing status.
u/proceed
would move the status on to the next one. e.g.Option
toSalesAgreement
orSalesAgreement
toCompletion
. -
u/cancel
Can only be used on a property with an existing status.
u/cancel
would remove the status of the property
Status Types:
-
Option
represents the state when the Option to Purchase has been exercised for the property -
SalesAgreement
represents the state when the Sales and Purchase Agreement has been issued -
Completion
represents the state when the sales of the property has completed
Examples:
-
update 1 u/new 600000
Creates a new status with amount 600000 for the 1st property. -
update 3 u/proceed
Moves the status of the 3rd property to next one.
4.7 Sorting
4.7.1 Sorting properties: sort property
Sorts and shows a list of properties that are sorted by the specified sorting key in the specified sorting order.
Format:
sort property o/SORTING_ORDER k/SORTING_KEY
Description:
- Sorts properties by the specified sorting key in ascending or descending order.
- The sorting key and sorting order fields must be specified.
- The
SORTING_ORDER
can only take values ofasc
anddesc
. - The
SORTING_KEY
can take values ofname
,price
,postalcode
,address
, ordeadline
, and it should not be any other values.
Examples:
-
sort property o/asc k/name
Sortsproperty
byname
in ascending order.
4.7.2 Sorting appointments: sort appointment
Sorts and shows a list of appointments that are sorted by the specified sorting key in the specified sorting order.
Format:
sort appointment o/SORTING_ORDER k/SORTING_KEY
Description:
- Sorts appointments by the specified sorting key in ascending or descending order.
- The sorting key and sorting order fields must be specified.
- The
SORTING_ORDER
can only take values ofasc
anddesc
. - The
SORTING_KEY
can take values of eitherdatetime
orname
, and it should not be any other values.
Examples:
-
sort appointment o/asc k/datetime
Sortsappointment
bydatetime
in ascending order.
4.8 Undoing
4.8.1 Undoing : undo
Undoes the last add, delete, edit or clear commands in the command history.
Format:
undo
Description:
- Undoes the last add, delete, edit, or clear commands in the command history.
Examples:
-
undo
after commanddelete appointment 1
adds the deleted appointment back to the app.
4.9 Searching
4.9.1 Searching properties: find property
Finds all properties containing any of the specified keywords (case-insensitive) and/or with the given options.
Format:
find property [n/NAME] [pl/UPPER_PRICE_LIMIT] [pm/LOWER_PRICE_LIMIT] [t/PROPERTY_TYPE] [a/ADDRESS] [p/POSTAL_CODE] [d/DEADLINE] [r/REMARKS] [cn/CLIENT_NAME] [cc/CLIENT_CONTACT] [ce/CLIENT_EMAIL] [tags/TAGS_SEPARATED_BY_COMMAS]
Description:
- There can be 1 or more parameters.
- If a same option is used multiple times, entries matching either will be returned as results.
- For example:
find property n/jurong n/woodlands
will match all properties containing either “jurong” or “woodlands” in their names, i.e. both “Jurong BLK123” and “Woodlands Condo” will be matched.
- For example:
- All text are case insensitive.
Options:
-
[n/NAME]
Searches for properties with names that contain the keywords in
NAME
, i.e. “Mayfair” matchesfind property n/mayfair
but notfind property n/may
. -
[pl/UPPER_PRICE_LIMIT]
Searches for properties with prices less than
[UPPER_PRICE_LIMIT]
. -
[pm/LOWER_PRICE_LIMIT]
Searches for properties with prices more than
[LOWER_PRICE_LIMIT]
. -
[t/PROPERTY_TYPE]
Searches for properties whose property type field contain patterns specified in
[t/PROPERTY_TYPE]
.The following property types are supported:
Hdb, Condo, Landed -
[a/ADDRESS]
Searches for properties containing
[ADDRESS]
in address. -
[p/POSTAL_CODE]
Searches for properties containing
[POSTAL_CODE]
in postal code. -
[d/DEADLINE]
Searches for properties containing
[DEADLINE]
in deadline. -
[r/REMARKS]
Searches for properties containing
[REMARKS]
in their remarks. -
[cn/CLIENT_NAME]
Searches for properties whose clients contain
[CLIENT_NAME]
in their names. -
[cc/CLIENT_CONTACT]
Searches for properties whose clients’ contact numbers contains
[CLIENT_CONTACT]
. -
[ce/CLIENT_EMAIL]
Searches for properties whose clients’ emails contains
[CLIENT_EMAIL]
. -
[tags/TAGS_SEPARATED_BY_COMMAS]
Searches for properties whose tags contains tags in
[TAGS_SEPARATED_BY_COMMAS]
.TAGS_SEPARATED_BY_COMMAS
consists of all tags you wish to search for, all separated with comma.
Examples:
find property n/mayfair
find property n/bishan north t/hdb pl/$1,000,000
find property pl/1000000 t/hdb a/1 Jurong East Street 32, #08-111 tags/3 bedrooms, need renovation cc/91234567
4.9.2 Searching appointments: find appointment
Finds all appointments containing any of the specified keywords (case-insensitive) and/or with the given parameters.
Format:
find appointment [n/NAME] [r/REMARKS] [d/DATE] [t/TIME]
Description:
- There can be 1 or more options.
- If a same option is used multiple times, entries matching either will be returned as results.
- For example:
find appointment n/john n/alex
will match all appointments containing either “alex” or “john” in their names, i.e. both “Meet Alex” and “Meet John” will be matched.
- For example:
- All text are case insensitive.
Options:
-
[n/NAME]
Searches for appointments that contain the keywords
[NAME]
in their names, i.e. “Meet Alex” matchesfind appointment n/alex
but notfind appointment n/al
. -
[r/REMARKS]
Searches for appointments containing
[REMARKS]
in their remarks. -
[d/DATE]
Searches for properties with
[DATE]
as date. -
[t/TIME]
Searches for properties with
[TIME]
as time.
Examples:
find appointment n/bob
find appointment n/alex d/25-12-2021
find appointment t/2030
4.9.3 Searching clients: find client
Finds appointments that matches the keywords and properties whose clients matches the same keywords. Both are done at the same time.
Format:
find client [KEYWORD]...
Description:
- There can be 1 or more keywords. Keywords are case insensitive.
Examples:
find client jacob
find client george
4.10 Clearing
4.10.1 Clearing all entries : clear all
Clears all properties and appointments from the app.
Format:
clear all
4.10.2 Clearing all properties : clear property
Clears all properties from the app.
Format:
clear property
4.10.3 Clearing all appointments : clear appointment
Clears all appointments from the app.
Format:
clear appointment
5. Storage
5.1 Saving the data
PocketEstate data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. PocketEstate data are saved as a JSON file after any command that modifies the data of the app.
The default storage data file paths used are:
- Property storage data file:
[JAR file location]/data/propertybook.json
. - Appointment storage data file:
[JAR file location]/data/appointmentbook.json
.
5.2 Editing the data files
Advanced users are welcome to update data directly by editing the data files.
5.3 Specifying the data files
It is also possible to specify your own property and/or appointment storage data files. In the preferences.json
file that is generated when you first launch the app, you may edit the values of propertyBookFilePath
and/or appointmentBookFilePath
to your own property and appointment storage file paths respectively.
6. FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous PocketEstate home folder.
7. Command summary
Action | Format, Examples |
---|---|
Help | help |
Exit | exit |
Add property |
add property n/NAME t/PROPERTY_TYPE a/ADDRESS p/POSTAL_CODE d/DEADLINE [r/REMARKS] [cn/CLIENT_NAME] [cc/CLIENT_CONTACT_NUMBER] [ce/CLIENT_EMAIL] [ca/CLIENT_ASKING_PRICE] [tags/TAGS_SEPARATED_BY_COMMAS] e.g. add property n/Bishan t/Hdb a/Blk 150 Bishan Street 11 #02-101 p/570150 d/30-06-2021 r/Urgent to sell cn/George cc/91124788 ce/george_4788@gmail.com ca/$750,000 tags/Urgent, 4 bedrooms
|
Add appointment |
add appointment n/NAME r/REMARKS d/DATE t/TIME e.g. add appointment n/Meet Jacob r/For collection of commission d/19-05-2021 t/1930
|
Edit property |
edit property INDEX [n/NAME] [t/PROPERTY_TYPE] [a/ADDRESS] [p/POSTAL_CODE] [d/DEADLINE] [r/REMARKS] [cn/CLIENT_NAME] [cc/CLIENT_CONTACT_NUMBER] [ce/CLIENT_EMAIL] [ca/CLIENT_ASKING_PRICE] [tags/TAGS_SEPARATED_BY_COMMAS] e.g. edit property 1 r/Urgent to sell cc/96011846
|
Edit appointment |
edit appointment INDEX [n/NAME] [r/REMARKS] [d/DATE] [t/TIME] e.g. edit appointment 3 d/21-07-2021 t/1500
|
Delete property |
delete property INDEX e.g. delete property 7
|
Delete appointment |
delete appointment INDEX e.g. delete appointment 7
|
List all properties and appointments | list all |
List property | list property |
List appointment | list appointment |
Update status |
update INDEX OPTION Options:
update 1 u/new 600000
|
Sort property |
sort property o/SORTING_ORDER k/SORTING_KEY e.g. sort property o/asc k/price
|
Sort appointment |
sort appointment o/SORTING_ORDER k/SORTING_KEY e.g. sort appointment o/asc k/datetime
|
Find property |
find property [n/NAME] [pl/UPPER_PRICE_LIMIT] [pm/LOWER_PRICE_LIMIT] [t/PROPERTY_TYPE] [a/ADDRESS] [p/POSTAL_CODE] [d/DEADLINE] [r/REMARKS] [cn/CLIENT_NAME] [cc/CLIENT_CONTACT] [ce/CLIENT_EMAIL] [tags/TAGS_SEPARATED_BY_COMMAS] e.g. find property n/bishan north t/hdb pl/$1,000,000
|
Find appointment |
find appointment [n/NAME] [r/REMARKS] [d/DATE] [t/TIME] e.g. find appointment n/bob d/23-12-2021
|
Find client |
find client [KEYWORD]... e.g. find client alice
|
Clear all properties and appointments | clear all |
Clear property | clear property |
Clear appointment | clear appointment |
Undo | undo |
8. Appendix
8.1 Launching application via command line
For advanced users, it is also possible to launch the app via the command line. Doing so will allow you the option of specifying your own configuration file. The configuration file can be used to specify the location of the preferences file, which contains the preferred storage file paths for both property and appointment data.
The default file paths used are:
- Configuration file:
[JAR file location]/config.json
- Preferences file:
[JAR file location]/preferences.json
To launch PocketEstate via the command line,
- First, open up your command prompt or terminal.
- Then,
cd
into the base directory containing thepocketestate.jar
file. - Run
java -jar pocketestate.jar --config={path_to_config_file.json}
, replacing{path_to_config_file.json}
with your own JSON configuration file.
E.g.java -jar pocketestate.jar --config=myConfigFile.json