SocialBook is a desktop app specifically designed to ease the administrative process for social workers in Singapore.
By providing a comprehensive way to store the personal details of those they are helping, as well as functionalities to make the information managing process efficient, SocialBook streamlines the process for these social workers.
SocialBook is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, SocialBook can get your contact management tasks done faster than traditional GUI apps.
Ensure you have Java 17 or above installed in your Computer.
Download the latest .jar file from here.
.jar file named socialbook.jar.Copy the socialbook.jar file into a folder you want to use to put SocialBook.
Open a command terminal, cd into the folder you put the socialbook.jar file in. After which enter java -jar socialbook.jar in the command terminal to run the application.
If done correctly, a GUI similar to the image below should appear in a few seconds. Note that the app will contain some sample data for you to get started and familiarise with.
Type the commands where "Enter command here..." is seen in the command box and press the enter / return key on your computer to execute it. e.g. typing help and pressing enter / return will open a help window.
Some example commands you can try:
list: Lists all current (i.e. not archived) contacts.
add n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2 #02-25 dob/1999-03-09: Adds a contact named John Doe to SocialBook with these specified details.
delete 3: Deletes the 3rd contact shown in the current list.
clear: Deletes all contacts.
exit: Exits the app.
Relaunching App: For relaunching of app, simply run step 4 again.
6. Refer to the Features below for the details of each command.
In SocialBook, a person has multiple details that can be added/edited by you. Here are some notes regarding these details:
n/ John Doe, Alice Tan#John Do&, @l!ce T@nTip: For names with special characters, use either the full or an alternative form of the name.
ADDRESS: Addresses can take any values, and should not be blank.
Prefix: a/
Blk 10 Serangoon Ave 3, #12-12, Blk 410 Clementi Ave 2, #08-08PHONE NUMBER: Phone numbers should contain only numbers, and should be at least 3 digits long.
Prefix: p/
81234567, 6987654399, 9123 4567, 9 1 2 3 4 5 6 7EMAIL: Emails should be of the format local-part@domain. Most common emails will be accepted but refer to the specifications below if you need more information:
Prefix: e/
john.doe@example.com, jane-doe123@example.comjohn.doe.@example.com, john.doe@exa_mple.comyyyy-MM-dd. dob/ 2000-01-01, 1990-12-2901-01-2001, 1st Dec 1996, 2030-02-01PRIORITY: Priority should be HIGH, MEDIUM, or LOW. The input is case-insensitive, meaning high is the same as HIGH. Default: LOW
Prefix: pri/
HIGH, mediummiddle, lessINCOME: Income should be a non-negative decimal number. Default: 0
Prefix: income/
2000.00, 1500-10, 80.0%FAMILY SIZE: Family size should be a positive integer. Default: 1
Prefix: famsize/
5, 100, -3, 2.5TAGS: Tag names should be alphanumeric.
Prefix: t/
childcare, educational#needslegalhelp, almost-doneDuplicate Handling: Since two persons are not allowed to have the same name, in rare cases where you have more than one contact with the exact same full name, it is up to your discretion how you want to differentiate them.
Notes about the command format:
Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. in add n/NAME, NAME is a parameter to be determined by user e.g. add n/John Doe.
Items in square brackets are optional parameters for the user to fill in.
e.g. n/NAME [t/TAG] can be used as n/John Doe t/friend or as n/John Doe.
Items with … after them can be used multiple times including zero times.
e.g. [t/TAG]… can be used as (i.e. 0 times), t/friend, t/friend t/family etc.
Parameters can be in any order.
e.g. if the command specifies n/NAME p/PHONE_NUMBER, p/PHONE_NUMBER n/NAME is also acceptable.
Extraneous parameters for commands that do not take in parameters (such as listappt, statistics, undo, clear and exit) will be ignored.
e.g. if the input specifies statistics 123, it will be interpreted as statistics.
Caution
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.
e.g. if you copy add n/John Doe p/98765432 and p/98765432 is on a new line in the PDF, when copied over into the command box, it may be copied as add n/John Doep/98765432 instead which is an invalid command format.
helpShows a display message with all the available commands as well as the link to the User Guide.
If [COMMAND] is specified, the help message for that command will be displayed.
Format: help [COMMAND]
Examples:
helphelp addhelp editaddAdds a person and their details to SocialBook.
Format: add n/NAME p/PHONE e/EMAIL a/ADDRESS dob/DATE_OF_BIRTH [pri/PRIORITY = LOW] [income/INCOME = 0] [famsize/FAMILY_SIZE = 1] [t/TAG]...
JOHN DOE is the same as john doe.John Doe is the same as John Doe.Info: The input value for the income field is automatically rounded to the nearest 2 decimal places, so values like 900.01 remain unchanged, while values like 900.015 are rounded to 900.02.
Tip: A person can have any number of tags (including 0)
Examples:
add n/John Doe p/98765432 e/johnd@gmail.com a/311, Clementi Ave 2, #02-25 dob/1999-03-09 famsize/3 income/5000add n/Betsy Crowe t/friend e/betsycrowe@outlook.com a/Newgate Prison p/12345678 dob/2002-12-25 pri/MEDIUM t/criminallistShows the list of persons in SocialBook, sorted according to the latest sorting order specified by the sort command. If no sorting order has been specified, the list will be sorted by priority from HIGH to LOW.
Format: list [archive/] [all/]
list: Shows the list of people who are unarchivedlist archive/: Shows the list of people who are archivedlist all/: Shows the list of all people (i.e. both archived and unarchived)Caution:
archive/ and all/ concurrently, e.g. list archive/ all/ ❌, list archive/ ✅archive/ and all/ should not have parameter values, e.g. list archive/bob ❌, list archive/ ✅archive/ and all/ are disallowed, e.g. list 1 ❌, list archie/ ❌Example output for list archive/:
editEdits an existing person's details in SocialBook.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [dob/DATE_OF_BIRTH] [pri/PRIORITY] [income/INCOME] [famsize/FAMILY_SIZE] [t/TAG]…
INDEX.edit INDEX t/ where INDEX is the person's index.Examples:
edit 1 p/91234567 e/johndoe@gmail.com Edits the phone number and email address of the 1st person to be 91234567 and johndoe@gmail.com respectively.edit 2 n/Betsy Crower t/ Edits the name of the 2nd person to be Betsy Crower and clears all existing tags.findFinds persons that match the specified filters.
Format: find [n/START_OF_NAME]... [a/PART_OF_ADDRESS]... [pri/PRIORITY]... [income/INCOME]...
n/alice will match Alice.find command).find n/A returns all persons whose first name starts with A only.find a/clementi returns all persons who stay at clementi only.find pri/high returns all persons with high priority only.find income/2000 returns all persons with income less than or equal to 2000.00 only.find n/alex n/david n/bobbyORsearch) but when combined, only those who also pass the filters of other types are are returned (i.e. AND search) e.g. find n/A n/B pri/HIGH returns all persons whose name starts with either A or B but also have high priority.Examples:
find pri/high returns Alice Tan and David Wong (from sample data)find n/a n/b n/c pri/high pri/medium returns Alice Tan and Benny LimExample output for find pri/high:
Caution: Finding is applied on the currently displayed list of persons. If you have narrowed down the list using the find command previously, and are trying to find someone not part of this filtered list, execute the list command with the appropriate format and execute the find command again. Refer to the list feature above for the exact format required.
find n/Alice filters the list to only those whose names start with "Alice". Then, to find "David" in SocialBook, list all/ followed by find n/David will help to find David, regardless of whether he is archived or not.sortSorts persons in the order of the specified parameter.
Format: sort [name] [address] [priority] [income] [updated]
name, address, priority, income, updated.sort command).sort name works the same as sort NAME.find a/clementi followed by sort address will sort the contact list of those staying in Clementi in order of their address.Examples:
sort updatedsort nameAuto-sorting:
deleteDeletes the specified people from SocialBook.
Format: delete INDEXES
INDEXES.,.Examples:
list followed by delete 2,3 or delete 3,2 deletes the 2nd and 3rd person from unarchived persons.find Betsy followed by delete 1 deletes the 1st person from last viewed person list.list all/ followed by delete 1,1,2 deletes the 1st and 2nd person from all persons.getGets the specified parameters of each individual person in last viewed person list.
Format: get [name] [phone] [email] [address]
get command).get PHONE name will return both the phone number and name details of last viewed person list.Examples:
list followed by get phone EMAIL gets the phone numbers followed by the emails of the unarchived people in SocialBook.list archive/ followed by get pHone phone gets only one set of the phone numbers of the archived people in SocialBook.find pri/HIGH followed by get nAmE ADDress gets the names followed by the addresses of the high priority people in the last viewed person list.Example output for get phone EMAIL:
Here are the PHONE NUMBER details:
81234567,
81234570,
81234568,
81234571,
81234569,
81234572
Here are the EMAIL details:
alice.tan@example.com,
david.wong@example.com,
benny.lim@example.com,
evelyn.chua@example.com,
catherine.lee@example.com,
felix.ng@example.com
clearClears all entries from SocialBook.
Format: clear
Examples:
find n/John followed by clear will delete all persons and their associated appointments in SocialBook, not just those whose names start with John.addapptAdds an appointment with a person in SocialBook.
Format: addappt INDEX date/yyyy-MM-dd from/HH:mm to/HH:mm
INDEX.
date specifies the date of the appointment in the yyyy-MM-dd format, where:
yyyy is the four-digit year (e.g., 2024)MM is the two-digit month (e.g., 01)dd is the two-digit day of the month (e.g., 08)from and to specify the start and end times of the appointment in the HH:mm format (24-hour clock).For more details on the command format, refer to the notes about the command format.
For example, to add an appointment from November 15, 11:00 PM, to November 16, 1:00 AM, you can do:
addappt 1 date/2024-11-15 from/23:00 to/23:59addappt 1 date/2024-11-16 from/00:00 to/01:00Examples:
addappt 1 date/2024-11-15 from/16:00 to/17:45addappt 2 date/2024-11-26 from/17:00 to/18:30Example output for addappt 1 date/2024-11-15 from/16:00 to/17:45:
listapptDisplays a list of all appointments in SocialBook.
Format: listappt
editapptEdits an existing appointment in the address book.
Format: editappt INDEX [date/yyyy-MM-dd] [from/HH:mm] [to/HH:mm]
INDEX.
date specifies the new date of the appointment in the yyyy-MM-dd format, where:
yyyy is the four-digit year (e.g., 2024)MM is the two-digit month (e.g., 01)dd is the two-digit day of the month (e.g., 08)from and to specify the new start and end times of the appointment in the HH:mm format (24-hour clock).For more details on the command format, refer to the notes about the command format.
Examples:
editappt 1 date/2024-11-15 from/16:00 to/18:00: Updates the first appointment to November 15, 2024, from 4:00 to 6:00 PM.editappt 2 from/10:00 to/11:30: Updates the start and end times of the second appointment to 10:00 AM and 11:30 AM, respectively, on the same date.deleteapptDeletes the specified appointment from SocialBook.
Format: deleteappt INDEX
INDEX.
Examples:
listappt followed by deleteappt 2 deletes the second appointment from SocialBook.statisticsDisplays the statistics of the last viewed person list.
Format: statistics
Statistics include:
Examples:
find pri/HIGH followed by statistics shows the above statistics for the high priority people in last viewed person list.Example output for statistics:
Here are the statistics for the current list:
Total Number Of People: 6
Number Of HIGH Priority People: 2
Number Of MEDIUM Priority People: 2
Number Of LOW Priority People: 2
Number Of Appointments Scheduled Within Next 7 Days: 1
Number Of People Eligible For At Least One Scheme: 6
schemeDisplays the schemes that a person in SocialBook is eligible for.
Format: scheme INDEX
INDEX.Examples:
scheme 1 shows schemes that the 1st person in SocialBook is eligible for.addschemeAdds a scheme to the specified person in SocialBook.
Format: addscheme PERSON_INDEX i/SCHEME_INDEX
SCHEME_INDEX to the person at the specified PERSON_INDEX.PERSON_INDEX refers to the index number shown in the last viewed person list.SCHEME_INDEX refers to the index number shown in the displayed scheme list from the scheme PERSON_INDEX command.Tip: Use the scheme command to check the schemes available to a person before adding them.
Examples:
addscheme 1 i/1 adds the 1st scheme from the list of eligible schemes to the 1st person in last viewed person list.viewschemeDisplays the schemes attached to the specified person in SocialBook.
Format: viewscheme INDEX
INDEX is attached to.Examples:
viewscheme 1 shows the schemes currently attached to the 1st person in last viewed person list.deleteschemeDeletes the specified schemes from the specified person in SocialBook.
Format: deletescheme PERSON_INDEX i/SCHEME_INDEXS
SCHEME_INDEXES from the person at the specified PERSON_INDEX.PERSON_INDEX refers to the index number shown in the last viewed person list.
PERSON_INDEX must be a positive integer not exceeding the last index number in the last viewed person list.SCHEME_INDEXES refers to the index numbers shown in the displayed scheme list from the viewscheme PERSON_INDEX command.
SCHEME_INDEXES, they are to be separated using a ,.SCHEME_INDEXES must be positive integers not exceeding the last index number in the displayed scheme list from the viewscheme PERSON_INDEX command.SCHEME_INDEXES can be in any order.Tip: Use the viewscheme command to check the schemes attached to a person before deleting them.
Examples:
deletescheme 1 i/1 deletes the 1st scheme from the 1st person in the last viewed person list.deletescheme 1 i/1,2 deletes the 1st and 2nd scheme from the 1st person in the last viewed person list.archiveArchives the specified person from SocialBook.
Format: archive INDEX
INDEX.Examples:
list followed by archive 2 archives the 2nd person in SocialBook.Info: It is still possible to make edits to archived people.
Tip: To view archived persons, run list archive/ or list all/
unarchiveUnarchives the specified person from SocialBook.
Format: unarchive INDEX
INDEX.Examples:
list archive/ followed by unarchive 1 unarchives the 1st person in the archived person list.Tip: To view unarchived persons, run list or list all/
undoUndoes the previous command from SocialBook.
Format: undo
add, edit, delete, clear, addappt, deleteappt, editappt, addscheme, deletescheme, archive, unarchiveIf you exit and reopen the app, undo would not work to undo past commands that were executed before the app was exited.
Examples:
delete 1,2 followed by undo will add these previously deleted persons back to SocialBook.clear followed by undo will retrieve back the uncleared SocialBook.edit 1 n/John followed by undo will change name back to what it was previously.exitExits the program.
Format: exit
SocialBook data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
SocialBook data is saved automatically as JSON files at [JAR file location]/data/socialbook.json and [JAR file location]/data/appointments.json.
Advanced users are welcome to update data directly by editing that data file.
Caution:
If your changes to the data file makes its format invalid, SocialBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
Furthermore, certain edits can cause SocialBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
Caution: The data files for persons and appointments are independent. Editing a person's name in socialbook.json
will not update their appointments in appointments.json, which can cause inconsistencies. Duplicate entries in either file
can also lead to data loss.
Commands entered into SocialBook are automatically saved while it is running. To go through previously entered commands, use the up and down arrow keys to go to the previous command and next command respectively.
You can press the up key to go through the previous commands until the command entered earliest is reached. Once there are no more previous commands to retrieve, pressing the up key has no effect, and remains at the command entered earliest.
On the other hand, you can press the down key until the command entered most recently is reached, and then pressing the down key once more empties the command field for a new command to be entered. Subsequent presses of the down key has no effect, and leaves the command field empty.
Caution:
The calendar UI allows you to visualize your appointments throughout the day.
The right side of the calendar (denoted by a green rectangle) shows a timeline view of today's appointments. Each appointment is represented by a blue box with the person's name. For appointments lasting 30 minutes or more, the start time is also displayed. The height of the box represents the duration of the appointment.
The left side of the calendar (denoted by a blue rectangle) shows a monthly calendar view along with an agenda view that lists appointments for the next 30 days, including today (e.g., November 7 to December 7). The agenda view provides detailed information for each appointment, including the person's name and the start and end times.
You can also navigate the calendar using these keyboard shortcuts:
Ctrl + P: Go to the previous dayCtrl + N: Go to the next dayCtrl + T: Go to todayNote that the left side of the calendar with the agenda view is only shown when the right panel is sufficiently large. If the agenda view is not visible, you can resize the panel by dragging the divider in the middle of the application. The divider is shown as a green line in the following two images.
After dragging the divider to the left, the agenda view will be shown.
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 SocialBook home folder.
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.| Command | Format, Examples |
|---|---|
| help | help [COMMAND] |
| add | add n/NAME p/PHONE e/EMAIL a/ADDRESS dob/DATE_OF_BIRTH [pri/PRIORITY = LOW] [income/INCOME = 0] [famsize/FAMILY_SIZE = 1] [t/TAG]... e.g., add n/James Ho p/98765432 e/jamesho@example.com a/123, Clementi Rd, 123456 dob/1990-12-19 pri/HIGH income/2000 famsize/3 t/father |
| list | list [archive/] [all/] e.g., list, list archive/, list all/ |
| edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [dob/DATE_OF_BIRTH] [pri/PRIORITY] [income/INCOME] [famsize/FAMILY_SIZE] [t/TAG]…e.g., edit 2 n/James Lee e/jameslee@example.com |
| find | find [n/START_OF_NAME]... [a/PART_OF_ADDRESS]... [pri/PRIORITY]... [income/INCOME]...e.g., find n/A n/B a/clementi pri/High |
| sort | sort [name] [address] [priority] [income] [updated]e.g., sort name |
| delete | delete INDEXESe.g., delete 2,3 |
| get | get [name] [phone] [email] [address]e.g., get email phone |
| clear | clear |
| addappt | addappt INDEX date/yyyy-MM-dd from/HH:mm to/HH:mme.g., addappt 1 date/2024-11-15 from/16:00 to/17:45 |
| listappt | listappt |
| editappt | editappt INDEX [date/yyyy-MM-dd] [from/HH:mm] [to/HH:mm]e.g., editappt 2 from/10:00 to/11:30 |
| deleteappt | deleteappt INDEXe.g., deleteappt 2 |
| statistics | statistics |
| scheme | scheme INDEX e.g., scheme 1 |
| addscheme | addscheme PERSON_INDEX i/SCHEME_INDEX e.g., addscheme 1 i/1 |
| viewscheme | viewscheme INDEX e.g., viewscheme 1 |
| deletescheme | deletescheme PERSON_INDEX i/SCHEME_INDEXES e.g., deletescheme 1 i/1, 2 |
| archive | archive INDEX e.g., archive 1 |
| unarchive | unarchive INDEX e.g., unarchive 1 |
| undo | undo |
| exit | exit |