SocialBook is a desktop app designed for social workers in Singapore, 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. It helps you manage your beneficiaries by storing contact information, important remarks and information on the last time you visited them.
Ensure you have Java 17
or above installed in your Computer.
Download the latest .jar
file from here.
Copy the file to the folder you want to use as the home folder for your SocialBook.
Open a command terminal, cd
into the folder you put the jar file in, and use the java -jar socialbook.jar
command to run the application.
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
Type the command in the command box and press Enter to execute it. e.g. typing help
and pressing Enter will open the help window.
Some example commands you can try:
list
: Lists all contacts.
view 2
: Toggles the view on the 2nd contact shown in the current list with more/less information.
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 d/06-01-2024
: Adds a contact named John Doe
to the SocialBook.
delete 3
: Deletes the 3rd contact shown in the current list.
clear
: Deletes all contacts.
exit
: Exits the app.
Refer to the Features below for details of each command.
n/
prefix.p/
prefix.a/
prefix.add
a contact without the a/
prefix, or with a a/
followed by whitespace.e/
prefix.localPart@domainName
. This includes a few restrictions:
localPart
component of the email can only contain alphanumeric characters and the following 4 special characters: +
, -
, .
, _
. But take note that it cannot start or end with these special characters.domainName
component of the email will consist of one or more domain labels, separated by periods (.
).-
). They must also start and end with alphanumeric characters, so no starting or ending email addresses with hyphens!domainName
must be at least 2 characters long.localPart
and domainName
components of the email must be separated by a @
.add
a contact without the e/
prefix, or with a e/
followed by whitespace.d/
prefix.dd-MM-yyyy
format and range of dates follows the ISO-8601 calendar system.add
a contact without the d/
prefix, or with a d/
followed by whitespace.ec/
prefix.Phone
.add
a contact without the ec/
prefix, or with a ec/
followed by whitespace.t/
prefix.add
a contact without any t/
prefixes.
add
ing a contact with a t/
prefix followed by whitespace is not supported. Omit the t/
tag for contacts without tags.financial
and FINANCIAL
would not be considered as duplicates.r/
prefix.r/
prefix can be used when adding remarks.
r/
prefix will cause the first part of the r/
prefix to be lost.r/
to remark, enclose the prefix with " ". e.g. remark 1 r/ use "r/" to add remark
Take note: contacts will always be created without remarks. To write a remark about a contact, you can do this with the remark
command, or with the edit
command by specifying an r/
prefix.
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 which can be used as add n/John Doe
.
Items in square brackets are optional.
e.g n/NAME [t/TAG]
can be used as n/John Doe t/friend
or as n/John Doe
.
e.g n/NAME [a/ADDRESS]
can be used as n/Jane Smith a/123 Hollywood Street 55
or as n/Jane Smith
.
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 will result in an error for the list
and view
commands. Other commands like help
, exit
, and clear
will ignore any additional parameters and execute as intended.
e.g. if the command specifies help 123
, exit please
or clear 5
, it will be interpreted as help, exit or clear respectively. However, if the command specifies list something
or view 2 3
, it will throw an error.
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.
help
Shows a table of commands with their respective descriptions and a link to the user guide.
Format: help
add
Adds a person to the address book with the provided information.
Format: add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG]… [d/DATE_OF_LAST_VISIT] [ec/EMERGENCY_CONTACT]
add
command allows users to fill in all information fields about a person, except for the "remarks" field.
remark
command or edit
command (which are explained below).Tip: A person can have any number of tags (including 0).
Examples:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 d/02-01-2024
add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/62345678 t/criminal d/28-03-2024
add p/92345678 n/Jane Smith d/01-01-2024 ec/98765432
add p/92345678 n/Sam Smith
list
Shows a list of all persons in the address book.
Format: list
edit
Edits an existing person in the address book.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]… [d/DATE_OF_LAST_VISIT] [ec/EMERGENCY_CONTACT] [r/REMARK]
INDEX
. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, …t/
without
specifying any tags after it.Examples:
edit 1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st person to be 91234567
and johndoe@example.com
respectively.edit 2 n/Betsy Crower t/ e/
Edits the name of the 2nd person to be Betsy Crower
, clears all existing tags and deletes the stored email.find
Finds contacts whose names or/and phone numbers or/and address or/and tags contain any of the given field keywords.
Format: find [n/NAMEKEYWORDS] [p/PHONEKEYWORDS] [a/ADDRESSKEYWORDS] [t/TAGKEYWORDS]
NOTE: At least one field MUST be provided
e.g. find n/Hans
or find p/82345678
or find a/wall street
will work
e.g. find Hans
or find wall street
or find
will fail
hans
will match Hans
or wall Street
will match Wall Street
Hans Bo
will match Bo Hans
Han
will match Hans
OR
search).
e.g. Hans Bo
will return Hans Gruber
, Bo Yang
AND
search).find t/friends_colleague_owes money
or find a/wall street_michigan
find n/andy ben carl
or find p/98233211 81212899
Take Note: using an edit
command on a contact after a find
operation may remove them from the displayed list, if the contact is edited to no longer match the find
requirements. Use the list
command to return to the view of all contacts, or find
them again with new parameters.
Examples:
find n/John
returns john
and John Doe
find n/alex david
returns Alex Yeoh
, David Li
find p/87438807 91031282
returns Alex Yeoh
, David Li
find a/serangoon
returns David Li
find n/alex p/87438807 a/geylang
returns Alex Yeoh
delete
Deletes the specified person or persons from the address book.
Format: delete INDEX
delete INDEX INDEX ...
INDEX
or INDEX INDEX ...
.Examples:
list
followed by delete 2
deletes the 2nd person in the address book.find Betsy
followed by delete 1
deletes the 1st person in the results of the find
command.list
followed by delete 1 2
deletes the 1st and 2nd person in the address book.remark
Add remarks to an existing person in the address book.
Format: remark INDEX r/REMARK
INDEX
. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, …Examples:
remark 1 r/Financial Issues
Adds the remark of the 1st person to be Financial Issues
.remark 1 r/
Clears remarks (if any) of the 1st person.sort
Sorts the list of persons being viewed by name (prefix: n) or date of last visit (prefix: d) in ascending or descending order.
Format: sort PARAMETER_PREFIX/ORDER
ORDER
is omitted, contacts will be sorted in ascending order based on the PARAMETER
.ORDER
with ascending
or its short form asc
.ORDER
with descending
or its short form desc
.Examples:
sort n/
sorts by name in ascending order.sort d/
, sort d/asc
, sort d/ascending
are all equivalent, and they sort by date of last visit in ascending order.sort d/desc
sorts by date of last visit in descending order.view
Toggles the contact card on the specified person, switching between more and less information.
The default view for all contact cards will display less information to avoid visually overwhelming users, but users may decide to toggle the view
for all information on one or more persons.
Format: view INDEX
view
more information about a contact. Using the view
command on a contact that's already expanded will collapse it back to its default view.view
by name, address, or any other fields will result in an error.Examples:
view 2
will expand the contact card for the second person in the contact list. view 2
again will collapse the contact card back down to its default view. Take Note: Viewing is executed based on the currently displayed list.
Executing any commands that alter the displayed list (such as delete
, sort
, or find
) may change the person being viewed.
For this reason, it is recommended to execute view
commands after the displayed list has been modified as intended.
clear
Clears all entries from the address book.
Format: clear
seed
Adds dummy data to the address book.
Format: seed
NOTE: There are 6 contacts in the dummy data. seed
works in a way that would be similar to if the user were to iteratively issue add
command on the 6 person. This means that,
seed
will add them to the contact list if they are not presently inside.seed
does not clear or reset the list.Note: Seed command does not inform you if a duplicate person was skipped, it will only state that it has "seeded sample data" regardless of outcome.
exit
Exits the program.
Format: exit
SocialBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
SocialBook data are saved automatically as a JSON file [JAR file location]/data/socialbook.json
. Advanced users are welcome to update data directly by editing that data file.
Caution:
If a person's data values are changed to an invalid format, Socialbook will discard that particular person's data while keeping the rest. However, if your changes to the data file makes the file format invalid, SocialBook will discard all data and start with an empty data file at the next run only if user exits SocialBook with the exit
command. Hence, it is recommended to take a backup of the file before editing it.
Furthermore, certain edits can cause the 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.
Q1: How do I transfer my data to another Computer?
Q2: Why can't I include a remark when using the add
command to add a person to the address list?
add
the person to the address list, and then subsequently use the edit
or remark
commands to write remarks about a contact.Q3: How does SocialBook determine a duplicate contact?
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.edit
or remark
command, the result display panel will not show the updated or changed information. Use the view
command on the person of interest to view the updated details.add
and edit
) may have difficulty parsing input if some input fields match the prefixes for contact fields (such as n/
, p/
, a/
, e/
, d/
, ec/
, t/
, and r/
).
This is due to the way that parsing is handled: any text matching special prefixes will be identified as such.
To work around this, please prepend a _
, or any other accepted special character, in front of any input fields that contain a special prefix.ec/
and p/
field, if both are present.free
and FREE
are not considered duplicates.Action | Format, Examples |
---|---|
Add | add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG]… [d/DATE_OF_LAST_VISIT] [ec/EMERGENCY_CONTACT] e.g., add n/James Ho p/82224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague d/23-07-2024 |
Clear | clear |
Delete | delete INDEX e.g., delete 3 |
Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]… [d/DATE_OF_LAST_VISIT] [ec/EMERGENCY_CONTACT] [r/REMARK] e.g., edit 2 n/James Lee e/jameslee@example.com |
Find | find [n/NAMEKEYWORD] [p/PHONEKEYWORD] [a/ADDRESSKEYWORD] [t/TAGKEYWORD] e.g., find n/James Jake a/clementi street_woodlands |
List | list |
View | view INDEX e.g., view 1 |
Help | help |
Seed | seed |
Sort | sort PARAMETER_PREFIX/ORDER e.g., sort n/ascending |
Remark | remark INDEX r/REMARK e.g., remark 1 r/some remark about contact |