FriendBook is a GUI/CLI program made for SoC Students to help them track and manage their friends and plans.

This User Guide is written to help new users understand how to use FriendBook. It contains information on how to install and launch FriendBook, and how to use commands in the application.

Here’s a quick summary of what FriendBook can do for you:

  • All features are easily achieved using simple, typed commands!
  • Reminders on how each command can be used!
  • Add friends into FriendBook and keep track of their information!
  • Add plans into FriendBook and keep track of them!
  • Add useful information like deadlines to each of your plans!
  • Associate a friend with each of your plans!

Table of Contents


Installation Guide

  1. Ensure you have Java 11 or above installed in your Computer. Click here to learn how to find out what Java version you have!
  2. You might also need to install JavaFX 11. You can find the installation guide here.
  3. Download the latest friendbook.jar from here (link coming soon).
  4. Open up the terminal (Mac) or command prompt (Windows).
  5. Type cd followed by the directory path to the folder where you have downloaded FriendBook in and press Enter.
  6. Use the command java -jar friendbook.jar to get the application running!
  7. If you have successfully done everything, a GUI similar to the following image should appear. Please note that the application should have no data when it is used for the first time. Ui

Disclaimers

  1. As FriendBook is still in its beta release stage, we only support a limited number of friends and plans. Our application may not work as expected if too many friends and plans (more than 2147483647) are used!
  2. Currently, each plan can only be associated with exactly one person. We are working on making this requirement more flexible!
  3. When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the preferences.json file created by the application before running the application again.

Important Information

:information_source: The blue block highlights additional information that might be useful.
:bangbang: The red block highlights disclaimers related to each command.
Texts in this box shows a command and its corresponding syntax
  • Words in UPPER_CASE are the parameters to be supplied by the user.
  • Texts in [square brackets] indicate that the argument is optional.
  • ... indicate that more than 1 parameter of that type can be passed into the command. Otherwise, only 1 is allowed.

Prefixes

Prefixes allow you to specify important values when entering a command.

Here is a table of all available prefixes:

Prefixes Description
n/ Used to indicate the name of a Friend or Plan.
p/ Used to indicate the Phone number of a Friend.
e/ Used to indicate the Email of a Friend.
a/ Used to indicate the Address of a Friend.
t/ Used to indicate the Tags of a Friend.
d/ Used to indicate the start or end date of a Plan.
f/ Used to indicate the Friend associated with the Plan.

add-friend

This command allows you to add a friend to your FriendBook.

add-friend n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...

Examples of Correct Usage:

  • add-friend n/John Doe p/98321234 e/johnd@example.com a/Thomson Avenue t/Classmate
  • add-friend n/Jack Ma p/92839102 e/jack.ma@yahoo.com a/Sixth Avenue

Successful Output:

add-friendOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Non-unique person added (by their name or email) : This friend already exists in the FriendBook...

  • Empty or invalid name : Names should only contain alphanumeric characters and spaces, and it should not be blank...

  • Invalid phone number : Phone numbers should only contain numbers, and it should be at least 3 digits long

  • Invalid email format : Emails should be of the format local-part@domain...

  • Invalid tag format : Tag names should be alphanumeric and not contain any spaces.

Disclaimer:

Each friend must have a unique name and email.
Friend’s names are case-insensitive (John and john are the same name).
Friend’s names can only contain alphanumeric characters and spaces. No special characters like / or - are allowed. It cannot consist of only numbers.

delete-friend

This command allows you to delete a friend from your FriendBook.

delete-friend INDEX

Examples of Correct Usage:

  • delete-friend 1
  • delete-friend 2

Successful Output:

delete-friendOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Missing or invalid arguments : Invalid command...

  • INDEX is greater than the number of friends : The friend index provided is bigger than your number of friends.

Disclaimer:

delete-friend command must be provided with a positive non-zero index, else an invalid command message will be shown.
Friends that are associated with a Plan cannot be deleted.
Using an index greater than 2147483647 will lead to an Invalid command... error being raised instead.

edit-friend

This command allows you to edit a friend’s details in your FriendBook.

edit-friend INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]...

Examples of Correct Usage:

  • edit-friend 3 n/Jack Ma
  • edit-friend 1 p/99990000

Successful Output:

edit-friendOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Empty or invalid name : Names should only contain alphanumeric characters and spaces, and it should not be blank...

  • Invalid phone number : Phone numbers should only contain numbers, and it should be at least 3 digits long

  • Invalid email format : Emails should be of the format local-part@domain...

  • Invalid tag format : Tag names should be alphanumeric and not contain any spaces.

  • INDEX is greater than the number of friends : The friend index provided is bigger than your number of friends.

  • No optional arguments provided : At least one field to edit must be provided.

  • Friend (identified by name or email) already exists : This friend already exists in the FriendBook...

Additional Information:

At least 1 optional field must be provided.

Disclaimer:

edit-friend command must be provided with a positive non-zero index, else an invalid command message will be shown.
Using an index greater than 2147483647 will lead to an Invalid command... error being raised instead.

find-friend

This command allows you to find a friend by name in your FriendBook.

find-friend NAME...

Examples of Correct Usage:

  • find-friend John returns john and John Doe
  • find-friend alex david returns Alex Yeoh, David Li

Successful Output:

find-friendOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Empty arguments : Invalid syntax: Missing arguments...

Additional Information:

The search is case-insensitive. (hans will match Hans).
The order of the keywords does not matter. (Hans Bo will match Bo Hans).
Friends matching at least one keyword will be returned.

Disclaimer:

This search is done by name.
Only full words will be matched (Han will not match Hans).

list-friend

This command allows you to list all your friends in your FriendBook.

list-friend

Successful Output:

list-friendOutput


add-plan

This command allows you to add a plan to your FriendBook and associate an existing Friend with this plan.

add-plan n/PLAN_NAME d/DATE_TIME f/FRIEND_NAME

Examples of Correct Usage:

  • add-plan n/Meeting d/2024-10-23-10:00 f/John

Successful Output:

add-planOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Missing arguments : Invalid syntax: Missing arguments...

  • Date-Time in wrong format or date does not exist: Date-Time given is invalid. Date-Time must be in YYYY-MM-DD-HH:MM format

  • Date-Time in the past : Date-Time given is invalid. Ensure that the Date-Time provided is not in the past.

  • Not a valid friend : The friend does not exist in the FriendBook.

  • Empty or invalid name for Friend : Names should only contain alphanumeric characters and spaces, and it should not be blank...

  • Plan (identified by name, date-time and friend) already exists : This plan already exists in the FriendBook

Additional Information:

DATE_TIME must be in YYYY-MM-DD-HH:MM format.
Only 1 Friend can be associated per Plan.

Disclaimer:

Plans with exactly the same name, date-time and friend as an existing plan is not allowed.
Plan names are case-sensitive (meeting and Meeting are different plan names).
Plan names can only contain alphanumeric characters and spaces. No special characters like / or - are allowed. It cannot consist of only numbers.

delete-plan

This command allows you to delete a plan from your FriendBook.

delete-plan INDEX

Examples of Correct Usage:

  • delete-plan 4

Successful Output:

delete-planOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Missing or invalid arguments : Invalid command...

  • INDEX is greater than the number of friends : The plan index provided is bigger than your number of plans.

Disclaimer:

delete-plan command must be provided with a positive non-zero index, else an invalid command message will be shown.
Using an index greater than 2147483647 will lead to an Invalid command... error being raised instead.

edit-plan

This command allows you to edit a plan’s details in your FriendBook.

edit-plan INDEX [n/PLAN_NAME] [d/DATE_TIME] [f/FRIEND_NAME]

Examples of Correct Usage:

  • edit-plan 3 n/Dota 3
  • edit-plan 1 d/2024-10-23-10:00

Successful Output:

edit-planOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Date-Time in wrong format or date does not exist : Date-Time given is invalid. Date-Time must be in YYYY-MM-DD-HH:MM format

  • Date-Time in the past : Date-Time given is invalid. Ensure that the Date-Time provided is not in the past.

  • INDEX is greater than the number of friends : The plan index provided is bigger than your number of plans.

  • No optional arguments provided : At least one field to edit must be provided.

  • Plan (identified by name, date-time and friend) already exists : This plan already exists in the FriendBook.

  • Not a valid friend : The friend does not exist in the FriendBook.

Additional Information:

At least 1 optional field must be provided.
DATE_TIME must be in YYYY-MM-DD-HH:MM format

Disclaimer:

edit-plan command must be provided with a positive non-zero index else, an invalid command message will be shown.
Using an index greater than 2147483647 will lead to an Invalid command... error being raised instead.

complete-plan

This command allows you to mark a plan as completed in your FriendBook.

complete-plan INDEX

Examples of Correct Usage:

  • complete-plan 4

Successful Output:

complete-planOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Missing or invalid arguments : Invalid command...

  • INDEX is greater than the number of friends : The plan index provided is bigger than your number of plans.

Disclaimer:

complete-plan command must be provided with a positive non-zero index else, an invalid command message will be shown.
Using an index greater than 2147483647 will lead to an Invalid command... error being raised instead.

uncomplete-plan

This command allows you to unmark a plan’s completion status in your FriendBook.

uncomplete-plan INDEX

Examples of Correct Usage:

  • uncomplete-plan 4

Successful Output:

uncomplete-planOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Missing or invalid arguments : Invalid command...

  • INDEX is greater than the number of friends : The plan index provided is bigger than your number of plans.

Disclaimer:

uncomplete-plan command must be provided with a positive non-zero index else, an invalid command message will be shown.
Using an index greater than 2147483647 will lead to an Invalid command... error being raised instead.

find-plan

This command allows you to find a plan by name in your FriendBook.

find-plan FRIEND_NAME

Examples of Correct Usage:

  • find-plan John returns all plans associated to John

Successful Output:

find-planOutput

Unsuccessful Output:

  • Invalid command : Invalid command...

  • Missing FRIEND_NAME argument : Invalid syntax: Missing arguments...

  • Not a valid friend : The friend does not exist in the FriendBook.

Additional Information

The search is case-insensitive (hans will match Hans).

Disclaimers

FRIEND_NAME must be the full name of a friend in the FriendBook.
Only one full name should be provided.

list-plan

This command allows you to list all your plans in your FriendBook.

list-plan

Successful Output:

list-planOutput

General Commands

clear

This command clears the stored friends and plans on the friendbook.json file which is located in the data folder in FriendBook’s home folder.

help

This command provides the FriendBook user guide’s link.

exit

This command closes the FriendBook application.


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 FriendBook home folder.

Q: How do I suggest feedback for FriendBook?
A: You may email us at friendbook@u.nus.edu.sg.

Q: What features can we look forward to in the future?
A: We are currently looking into the following features: Allowing Plans to have multiple Friends, cloud storage of Plan and Friend data, and allowing users to create their own FriendBook themes and plugins.


Command Summary

Action Format, Examples
add-friend add-friend n/NAME p/PHONE_NUMBER e/EMAIL [t/TAG]...
e.g., add-friend n/John Doe p/98321234 e/johnd@example.com
edit-friend edit-friend INDEX [n/NAME] [p/PHONE] [e/EMAIL] [t/TAG]...
e.g., edit-friend 3 n/Jack Ma
delete-friend delete-friend INDEX
e.g., delete-friend 1
find-friend find-friend KEYWORD [MORE_KEYWORDS]
e.g., find-friend Jack
list-friend list-friend
add-plan add-plan n/PLAN_NAME d/DATE_TIME f/FRIEND_NAME
e.g.,add-plan n/Project Meeting d/2023-10-23-10:00 f/Royden
edit-plan edit-plan INDEX [n/PLAN_NAME] [d/DATE_TIME] [f/FRIEND_NAME]
e.g., edit-plan 1 d/2025-01-01-10:00
complete-plan complete-plan INDEX
e.g., complete-plan 4
uncomplete-plan uncomplete-plan INDEX
e.g., uncomplete-plan 4
delete-plan delete-plan INDEX
e.g., delete-plan 4
find-plan find-plan FRIEND_NAME
e.g., find-plan John
list-plan list-plan
clear clear
help help
exit exit

Glossary

Term Description
Case-insensitive Treating or interpreting upper- and lower-case letters as being the same.
CLI Stands for Command Line Interface. It is a text-based interface where users can input commands that interact with a computer’s operating system.
Command A sequence of words that represents an action that FriendBook can understand and execute.
Directory Path A type of “road map” to a specific file or directory.
GUI Stands for Graphical User Interface. It is a digital interface in which a user interacts with graphical components such as icons, buttons, and menus.
JAR A file that contains all the resources needed for FriendBook to run.
Java A general-purpose programming language on which FriendBook is built.
Syntax The set of rules that define what the various combinations of words and symbols mean.