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@n
Tip: 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-08
PHONE NUMBER: Phone numbers should contain only numbers, and should be at least 3 digits long.
Prefix: p/
81234567
, 69876543
99
, 9123 4567
, 9 1 2 3 4 5 6 7
EMAIL: 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.com
john.doe.@example.com
, john.doe@exa_mple.com
yyyy-MM-dd
. dob/
2000-01-01
, 1990-12-29
01-01-2001
, 1st Dec 1996
, 2030-02-01
PRIORITY: Priority should be HIGH, MEDIUM, or LOW. The input is case-insensitive, meaning high
is the same as HIGH
. Default: LOW
Prefix: pri/
HIGH
, medium
middle
, less
INCOME: 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
, 10
0
, -3
, 2.5
TAGS: Tag names should be alphanumeric.
Prefix: t/
childcare
, educational
#needslegalhelp
, almost-done
Duplicate 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.
help
Shows 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:
help
help add
help edit
add
Adds 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/5000
add n/Betsy Crowe t/friend e/betsycrowe@outlook.com a/Newgate Prison p/12345678 dob/2002-12-25 pri/MEDIUM t/criminal
list
Shows 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/
:
edit
Edits 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.find
Finds 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/bobby
OR
search) 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 Lim
Example 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.sort
Sorts 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 updated
sort name
Auto-sorting:
delete
Deletes 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.get
Gets 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
clear
Clears 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
.addappt
Adds 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:59
addappt 1 date/2024-11-16 from/00:00 to/01:00
Examples:
addappt 1 date/2024-11-15 from/16:00 to/17:45
addappt 2 date/2024-11-26 from/17:00 to/18:30
Example output for addappt 1 date/2024-11-15 from/16:00 to/17:45
:
listappt
Displays a list of all appointments in SocialBook.
Format: listappt
editappt
Edits 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.deleteappt
Deletes the specified appointment from SocialBook.
Format: deleteappt INDEX
INDEX
.
Examples:
listappt
followed by deleteappt 2
deletes the second appointment from SocialBook.statistics
Displays 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
scheme
Displays 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.addscheme
Adds 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.viewscheme
Displays 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.deletescheme
Deletes 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.archive
Archives 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/
unarchive
Unarchives 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/
undo
Undoes the previous command from SocialBook.
Format: undo
add, edit, delete, clear, addappt, deleteappt, editappt, addscheme, deletescheme, archive, unarchive
If 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.exit
Exits 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 INDEXES e.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:mm e.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 INDEX e.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 |