REconnect is a desktop application for Real Estate agents to manage their work via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
Ensure you have Java 17 or above installed.
Download the latest REconnect.jar file from here.
Copy the file to the folder you want to use as the home folder for REconnect.
Open a command terminal:
Win + R, type cmd, and press Enter.Cmd + Space, type Terminal, and press Enter.Ctrl + Alt + T or search for "Terminal" in your Activities or Applications menu.cd (change directory) into the folder you put the jar file in.
cd␣ (with a space), and drag the folder into the terminal.
Enter the command java -jar REconnect.jar to start the application. A GUI similar to the one below should appear in a few seconds.
Note: The app contains some sample data, and it may not correspond to the data shown in the image below.
Type the command in the command box and press Enter to execute it.
Some example commands you can try:
help : Opens the help window.
add_client name/John Doe phone/98765432 email/johnd@example.com addr/311, Clementi Ave 2, #02-25 : Adds a client named John Doe to the client list panel.
delete_property 3 : Deletes the 3rd property shown in the current property list.
exit : Exits the application.
Refer to the Features below for details of each command.
REconnect provides autocompletion for all commands. This allows users to quickly find the command they want to use without having to remember the exact syntax. It works by typing the first few letters of the command, choosing the command from the dropdown list, and pressing Enter to choose it. This works for command parameters as well. This is especially useful for long commands with many parameters, as it saves time and reduces the chance of errors.
REconnect keeps track of all the commands entered by the user during a session. To view this history, the cursor should be in the 0th position of the command box. The user can then use the up and down arrow keys to scroll through the history of commands. At most 4 commands are shown at a time in the dropdown list to prevent cluttering the command box. This allows users to quickly re-enter previous commands without having to type them out again.
Note:
The most recent command is shown at the top of the list, and the oldest command is shown at the bottom.
Commands that caused an error are also included in the history and appear in red.
The command history is cleared when the application is closed.
Notes about the command format:
Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. in add_client name/NAME, NAME is a parameter which can be used as add_client name/John Doe.
Words in [square brackets] are optional parameters.
e.g. in edit_client INDEX [name/NAME] [phone/PHONE] ..., NAME and phone are optional and need not be provided.
Parameters can be in any order.
e.g. if the command specifies name/NAME phone/PHONE_NUMBER, phone/PHONE_NUMBER name/NAME is also acceptable.
Extraneous parameters for commands that do not take in parameters (such as help and exit) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
helpShows a message explaining how to access the help page.
Format: help
add_clientCreates a new client in REconnect.
Format: add_client name/NAME phone/PHONE_NUMBER [email/EMAIL] [addr/ADDRESS]
/, \ and '. The name should not start with a special character.Examples:
add_client name/John Doe phone/98765432 email/johnd@example.com addr/John street, block 123, #01-01add_client name/John Doe phone/98765432edit_clientEdits an existing client in REconnect at the specified index.
Format: edit_client INDEX [name/NAME] [phone/PHONE] [email/EMAIL] [addr/ADDRESS]
add_client command also apply here.Examples:
edit_client 1 phone/91234567 email/johndoe@example.com edits the phone number and email address of the 1st client to be 91234567 and johndoe@example.com respectively.edit_client 2 name/Betsy Crower edits the name of the 2nd client to be Betsy Crower.find_clientDisplays all clients that match the given criteria.
Format: find_client [name_keywords/KEYWORDS] [addr/ADDRESS] [email/EMAIL] [phone/PHONE]
AND_ or OR_ (case-sensitive). The prefixes used must be of the same type: either all AND_, or all OR_.Hans Bo will match Bo Hans.name_keywords/KEYWORDS to search names by keywords (case-insensitive)addr/ADDRESS to search by address (case-insensitive)email/EMAIL to search by email (case-sensitive)phone/PHONE to search by phone numberHan will not match Hans.Examples:
find_client name_keywords/John returns John and John Doe.find_client name_keywords/Alice David returns Alice Yeoh, David Li.find_client name_keywords/John AND_addr/123 Main St AND_email/example.com returns clients with John being part of the name
and address containing 123 Main St (case-insensitive) and email containing example.com.list_clientsDisplays all clients in REconnect.
Format: list_clients
find_client command to show the full list of clients again.
delete_clientDeletes the specified client from REconnect.
Format: delete_client INDEX
INDEX.Examples:
list_clients followed by delete_client 2 deletes the 2nd client in REconnect.find_client name_keywords/John followed by delete_client 1 deletes the 1st client in the results of the find_client command.add_propertyCreates a new property in REconnect.
Format: add_property prop/PROPERTY_NAME owner/OWNER_ID addr/ADDRESS price/PRICE [size/SIZE] [desc/DESCRIPTION]
& and @. The property name should not start with a special character.Examples:
add_property prop/Sunset Villa owner/1 addr/123 Sunset Way price/150 size/1200 desc/Beautiful sunset viewadd_property prop/Ocean Heights owner/2 addr/456 Marina Boulevard price/2800 size/1500edit_propertyEdits an existing property in REconnect at the specified index.
Format: edit_property INDEX [prop/PROPERTY_NAME] [owner/OWNER_ID] [addr/ADDRESS] [price/PRICE] [size/SIZE] [desc/DESCRIPTION]
add_property command also apply here.Examples:
edit_property 1 price/1600 desc/Newly renovated edits the price and description of the 1st property in the list.edit_property 2 prop/Sunrise Villa addr/789 Morning Street edits the name and address of the 2nd property in the list.find_propertyDisplays all properties that match the given criteria.
Format: find_property [name_keywords/KEYWORDS] [addr/ADDRESS] [price_</PRICE_BELOW] [price_>/PRICE_ABOVE] [size_</SIZE_BELOW] [size_>/SIZE_ABOVE] [owner/OWNER]
AND_ or OR_ (case-sensitive). The prefixes used must be of the same type: either all AND_, or all OR_.Maple Villa will match Villa Maple.name_keywords/KEYWORDS to search property names by keywords (case-insensitive)addr/ADDRESS to search by address (case-insensitive)price_</PRICE_BELOW to search by price below a certain valueprice_>/PRICE_ABOVE to search by price above a certain valuesize_</SIZE_BELOW to search by size below a certain valuesize_>/SIZE_ABOVE to search by size above a certain valueowner/OWNER to search owner name by keywords (case-insensitive)Han will not match Hans.add_property command.Examples:
find_property owner/John Doe AND_price_>/500find_property addr/123 Main St OR_price_>/1000 OR_size_>/500list_propertiesDisplays all properties in REconnect.
Format: list_properties
find_property command to show the full list of properties again.
delete_propertyDeletes the specified property from REconnect.
Format: delete_property INDEX
INDEX.Examples:
list_property followed by delete_property 2 deletes the 2nd property in REconnect.find_property name_keywords/Villa followed by delete_property 1 deletes the 1st property in the results of the find_property command.add_dealCreates a new property deal in REconnect.
Format: add_deal pid/PROPERTY_ID buyer/BUYER_ID price/PRICE [status/STATUS]
Examples:
add_deal pid/1 buyer/1 price/100 status/CLOSED creates a CLOSED deal for property #1 with buyer #1 at $100,000.add_deal pid/3 buyer/2 price/500 creates a deal for property #3 with buyer #2 at $500,000 with default status of PENDING.update_dealUpdates an existing deal in REconnect at the specified index.
Format: update_deal INDEX [prop/PROPERTY_ID] [buyer/BUYER_ID] [price/PRICE] [status/STATUS]
Examples:
update_deal 3 status/CLOSED changes the status of deal #3 to CLOSED.update_deal 1 price/500 buyer/2 updates deal #1 with a new price of $500,000 and changes the buyer to client #2.find_dealDisplays all deals that match the given criteria.
Format: find_deal [prop/PROPERTY_NAME_KEYWORDS] [buyer/BUYER_NAME_KEYWORDS] [seller/SELLER_NAME_KEYWORDS] [status/STATUS] [price_</PRICE_BELOW] [price_>/PRICE_ABOVE]
AND_ or OR_ (case-sensitive). The prefixes used must be of the same type: either all AND_, or all OR_.Maple Villa will match Villa Maple.prop/PROPERTY_NAME_KEYWORDS to search property names by keywords (case-insensitive)buyer/BUYER_NAME_KEYWORDS to search buyer names by keywords (case-insensitive)seller/SELLER_NAME_KEYWORDS to search seller names by keywords (case-insensitive)status/STATUS to search by deal status (case-insensitive)price_</PRICE_BELOW to search by price below a certain valueprice_>/PRICE_ABOVE to search by price above a certain valueHan will not match Hans.add_deal command.Examples:
find_deal prop/Villa finds all deals involving properties with "Villa" in their names.find_deal status/CLOSED finds all closed deals.find_deal buyer/John AND_seller/Mary finds all deals with buyers containing "John" in their name AND sellers containing "Mary" in their name.find_deal prop/Ocean OR_status/PENDING finds all deals with properties containing "Ocean" in their name OR with PENDING status.list_dealsDisplays all deals in REconnect.
Format: list_deals
add_eventCreates a new event in REconnect.
Format: add_event at/EVENT_DATE_TIME etype/EVENT_TYPE cid/CLIENT_ID pid/PROPERTY_ID note/NOTE
01-01-2025 0000.conference, meeting, workshop or others (case-insensitive).Examples:
add_event at/30-04-2025 1700 etype/meeting cid/1 pid/1 note/Property viewing at 123 Main Stadd_event at/01-09-2026 1400 etype/others cid/3 pid/2 note/Thank client for successful dealedit_eventEdits an existing event in REconnect at the specified index.
Format: edit_event INDEX [at/EVENT_DATE_TIME] [etype/EVENT_TYPE] [cid/CLIENT_ID] [pid/PROPERTY_ID] [note/NOTE]
add_event command also apply here.Examples:
edit_event 1 at/01-05-2025 1200 note/Changed to 12pm edits the start time and note of the 1st event in the list.edit_event 2 etype/meeting cid/3 pid/2 edits the event type, client ID and property ID of the 2nd event in the list.find_eventDisplays all events that match the given criteria.
Format: find_event [before/TIMESTAMP] [after/TIMESTAMP] [etype/EVENT_TYPE] [with/CLIENT_NAME_KEYWORDS] [about/PROPERTY_NAME_KEYWORDS]
💡 Not all prefixes need to be used. You can use any combination of the above prefixes.
All prefixes except for the first one must have a connective keyword prefix AND_ or OR_ (case-sensitive). The prefixes used must be of the same type: either all AND_, or all OR_.
The order of the name keywords does not matter. e.g. Maple Villa will match Villa Maple.
The following prefixes can be used:
before/TIMESTAMP to search for events before a certain date and timeafter/TIMESTAMP to search for events after a certain date and timeetype/EVENT_TYPE to search by event type (case-insensitive)with/CLIENT_NAME_KEYWORDS to search client names by keywords (case-insensitive)about/PROPERTY_NAME_KEYWORDS to search property names by keywords (case-insensitive)For the name keywords, only full words will be matched e.g. Han will not match Hans.
The TIMESTAMP keyword(s) used must follow the constraints defined in add_event command.
Examples:
find_event with/Alice Yeo AND_etype/meeting finds all meeting events with clients containing "Alice" or "Yeo" in their name.find_event before/05-04-2025 1200 AND_after/01-03-2025 1000 finds all events between 01-03-2025 1000 and 05-04-2025 1200.list_eventsDisplays all events in REconnect.
Format: list_events
find_event command to show the full list of events again.
delete_eventDeletes an event from REconnect.
Format: delete_event INDEX
INDEX.Examples:
list_event followed by delete_event 2 deletes the 2nd event in REconnect.find_event etype/meeting followed by delete_event 1 deletes the 1st event in the filtered list.list_allDisplays all data in REconnect.
Format: list_all
exitExits the program.
Format: exit
REconnect data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
REconnect data are saved automatically as a JSON file [JAR file location]/data/addressbook.json. Users who know how JSON files work are welcome to update data directly by editing that data file.
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty JSON file it creates with the JSON file that contains the data of your previous AddressBook home folder.
Q: What happens to the existing deals if I update a property's owner?
A: When you update a property's owner, any existing deals involving that property will automatically have their seller updated to reflect the new owner.
Q: Can I bulk update multiple deals at once?
A: No, deals must be updated individually using the update_deal command with the specific index of each deal.
Q: How are deals sorted in the deals list?
A: Deals are displayed in the order they were created, with the oldest deals appearing first.
Q: Do closed deals still appear in the main list?
A: Yes, deals of all statuses (OPEN, PENDING, CLOSED) remain visible in the main list. Use the find_deal command to filter by status if needed.
Q: If I update a client's name, will it automatically update in all related deals?
A: Yes, updating a client's name will automatically update their name in all deals where they appear as a buyer or seller.
Q: Can I convert the price to a different currency?
A: No, REconnect currently only supports prices in Singapore dollars (S$). All prices are displayed and stored in thousands of S$.
Q: What's the difference between using AND_ and OR_ in deal searches?
A: Using AND_ means all conditions must be met (e.g., specific buyer AND specific status), while OR_ means any condition can be met (e.g., specific buyer OR specific status).
preferences.json file created by the application before running the application again.help command (or use the Help menu, or the keyboard shortcut F1) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.| Action | Format, Examples |
|---|---|
| Add Client | add_client name/NAME phone/PHONE_NUMBER [email/EMAIL] [addr/ADDRESS] e.g., add_client name/John Doe phone/98765432 email/johnd@example.com addr/John street, block 123, #01-01 |
| Edit Client | edit_client INDEX [name/NAME] [phone/PHONE] [email/EMAIL] [addr/ADDRESS]e.g., edit_client 1 phone/91234567 email/johndoe@example.com |
| Delete Client | delete_client INDEXe.g., delete_client 3 |
| Find Client | find_client [name_keywords/KEYWORDS] [addr/ADDRESS] [email/EMAIL] [phone/PHONE]e.g., find_client name_keywords/John AND_addr/123 Main St AND_email/example.com |
| List Clients | list_clients |
| Action | Format, Examples |
|---|---|
| Add Property | add_property prop/PROPERTY_NAME owner/OWNER_ID addr/ADDRESS price/PRICE [size/SIZE] [desc/DESCRIPTION] e.g., add_property prop/Sunset Villa owner/1 addr/123 Sunset Way price/150 size/1200 desc/Beautiful sunset view |
| Edit Property | edit_property INDEX [prop/PROPERTY_NAME] [owner/OWNER_ID] [addr/ADDRESS] [price/PRICE] [size/SIZE] [desc/DESCRIPTION]e.g., edit_property 1 price/1600 desc/Newly renovated |
| Delete Property | delete_property INDEXe.g., delete_property 1 |
| Find Property | find_property [name_keywords/KEYWORDS] [addr/ADDRESS] [price_</PRICE_BELOW] [price_>/PRICE_ABOVE] [size_</SIZE_BELOW] [size_>/SIZE_ABOVE] [owner/OWNER]e.g., find_property addr/123 Main St OR_price_>/1000 OR_size_>/500 |
| List Properties | list_properties |
| Action | Format, Examples |
|---|---|
| Add Deal | add_deal pid/PROPERTY_ID buyer/BUYER_ID price/PRICE [status/STATUS] e.g., add_deal pid/1 buyer/1 price/100 status/CLOSED |
| Update Deal | update_deal INDEX [prop/PROPERTY_ID] [buyer/BUYER_ID] [price/PRICE] [status/STATUS]e.g., update_deal 3 status/CLOSED |
| Find Deal | find_deal [prop/PROPERTY_NAME_KEYWORDS] [buyer/BUYER_NAME_KEYWORDS] [seller/SELLER_NAME_KEYWORDS] [status/STATUS] [price_</PRICE_BELOW] [price_>/PRICE_ABOVE]e.g., find_deal prop/Ocean OR_status/PENDING |
| List Deals | list_deals |
| Action | Format, Examples |
|---|---|
| Add Event | add_event at/EVENT_DATE_TIME etype/EVENT_TYPE cid/CLIENT_ID pid/PROPERTY_ID note/NOTE e.g., add_event at/30-04-2025 1700 etype/meeting cid/2 pid/1 note/N/A |
| Edit Event | edit_event INDEX [at/EVENT_DATE_TIME] [etype/EVENT_TYPE] [cid/CLIENT_ID] [pid/PROPERTY_ID] [note/NOTE] e.g., edit_event 1 at/01-05-2025 1200 note/Changed to 12pm |
| Delete Event | delete_event INDEXe.g., delete_event 2 |
| Find Event | find_event [before/TIMESTAMP] [after/TIMESTAMP] [etype/EVENT_TYPE] [with/CLIENT_NAME_KEYWORDS] [about/PROPERTY_NAME_KEYWORDS]e.g., find_event before/05-04-2025 1200 AND_after/01-03-2025 1000 |
| List Events | list_events |
| Action | Format, Examples |
|---|---|
| List All | list_all |
| Help | help |
| Exit | exit |