User Guide
About FitBook
FitBook is a desktop application for managing clients, 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, FitBook can get your client management tasks done faster than traditional GUI apps.
This User Guide provides brief documentation on how you can install the application and describes how each feature should be used. Start by looking at the quick start guide to get you started.
- Quick start
- User Interface Introduction
-
Features
- Prefixes for Client Commands
- Prefixes for Routine Commands
- Client Commands
- Client’s Weight Commands
-
Exercise Routine Commands
- Adding a routine:
addRoutine
- Listing all Routines in FitBook :
listRoutines
- Editing a routine :
editRoutine
- Locating routines by name:
findRoutine
- Deleting a routine :
deleteRoutine
- Adding an exercise :
addExercise
- Deleting an exercise :
deleteExercise
- Clearing all routine entries :
clearRoutines
- Exporting routine details :
exportRoutines
- Adding a routine:
- FitBook Miscellaneous Commands
- FitBook Storage Usage
- FAQ
- Command summary
Quick start
- Before using FitBook, make sure to install Java
11
or later version in your Computer. This is required to ensure proper functionality of the application. Please install the correct Java version to use FitBook. -
Download the latest
fitbook.jar
from here. - Copy the file to the folder you want to use as the home folder for your FitBook. You may create a new folder under any directory.
- Open a command terminal and navigate into the folder you put the jar file in using
cd
. Then, use thejava -jar fitbook.jar
command to run the application.
A GUI similar to the one shown below should appear in a few seconds. Note how the app contains some sample data.
- For example, if your jar file is stored in a folder ‘FitBook’ located in the desktop directory of your computer, the commands in the command terminal will be:
cd Desktop
cd FitBook
java -jar fitbook.jar
- If you are unsure how to open the command terminal, you may refer to the guide below.
- For example, if your jar file is stored in a folder ‘FitBook’ located in the desktop directory of your computer, the commands in the command terminal will be:
-
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:-
listClients
: Lists all Clients. -
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 w/50 g/M
: Adds a contact namedJohn Doe
to the FitBook. -
delete 3
: Deletes the 3rd contact shown in the current list. -
clear
: Deletes all contacts. -
export
: Exports all Client’s details in FitBook into a csv file. -
exportRoutine
: Exports all Routine details in FitBook into a csv file. -
addRoutine r/Cardio ex/3x5 1km Jog ex/3x10 Jumping Jacks
: Adds a new routine namedCardio
with 2 exercises3x5 1km Jog
and3x10 Jumping Jacks
. -
exit
: Exits the app.
-
- Refer to the Features below for details of each command.
User Interface Introduction
This section provides a brief overview of the graphical user interface (GUI) components that are present in FitBook. These components are designed to provide an easy-to-use interface that enables users to track and improve their clients’ fitness goals.
Menu Bar
The menu bar is typically located at the top of the user interface and is primarily used for navigation purposes. It provides users with access to various features and functions within the application or dashboard, allowing them to easily navigate between different tabs. The menu bar is commonly used in user guides to help users understand how to navigate and use the different features within the application.
FitBook
- ‘Schedule’ item allows you to switch to the Schedule panel.
- ‘Exit’ item directly exits out of the application.
Exercise
- ‘Exercise’ menu item allows you to switch to Exercise panel.
Summary
- ‘Summary’ menu item allows you to switch to Summary panel.
Help
- Provides a new tab outside FitBook with the link to the User Guide.
Result Panel
Panels are empty when the data for that specific panel is empty.
Schedule
- Left panel (
Schedule
tab) displays the list of clients’ basic information. -
Right panel (
Schedule
tab) displays the list of appointments sorted chronologically. (Refresh the page by changing tabs or reopening FitBook to see the appointment get removed after it passes its deadline.)
Exercise
- Left panel (
Exercise
tab) displays the list of clients’ basic information including weight, average calories, goal, any unique routines and exercises. -
Right panel (
Exercise
tab) displays the list of routines added.
Summary
- Left panel (
Summary
tab) displays the list of clients’ basic information including name and scheduled appointments. -
Right panel (
Summary
tab) displays all information about the selected client. (Using the view command)
Result Display
When you enter a command into the Command Box of the application, the system will provide a feedback message to you through the display. This feedback message is designed to inform you of the status of the command you have entered, such as whether it was executed successfully or encountered an error. The feedback message may also include additional information related to the command, such as the results of the command’s execution or the specific error encountered.
Command Box
The Command Box is where you can type in your commands. It is found below the Feedback Box. To execute the command, simply press the “Enter” button on your keyboard. This will send the command to the system for processing.
Features
Notes about the command format:
-
These rules apply to all commands including for Clients and Routines.
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. inadd n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
. -
Items in square brackets are optional.
e.g.n/NAME [t/TAG]
can be used asn/John Doe t/friend
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/friend
,t/friend t/family
etc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
If a parameter is expected only once in the command, but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyp/12341234 p/56785678
, onlyp/56785678
will be taken. -
Extraneous parameters for commands that do not take in parameters (such as
help
,list
,exit
,export
,exportRoutine
,listRoutines
,clearRoutines
andclear
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
. -
Client list can be found in the Client panel. Routine list can be found in the Routine Panel of the
Routine
tab.
Prefixes for Client Commands
Prefix | Compulsory field for adding client | Multiple Input | Prefix Meaning | Characters restrictions |
---|---|---|---|---|
n/ |
Yes | Only Last Taken | Name of Client | Alphabets, numbers and spaces |
p/ |
Yes | Only Last Taken | Phone number | At least 3 digits |
e/ |
Yes | Only Last Taken | local-part@domain | |
a/ |
Yes | Only Last Taken | Address | Any characters except blank |
w/ |
Yes | Only Last Taken | Weight | Positive number from 0.1 to 999.9 with 0 or 1 decimal place |
g/ |
Yes | Only Last Taken | Gender | M or F (not case sensitive) |
c/ |
No | Only Last Taken | Recommended Calories | At least 4 digits long |
gl/ |
No | Only Last Taken | Goal for Client | Any characters except blank |
r/ |
No | All Taken | Routines for Client (Must be in Exercise Routine | Valid routine names in exercise routine portion |
t/ |
No | All Taken | Tag | Alphabets and numbers |
app/ |
No | All Taken | Appointment | dd-mm-yyyy HH:mm format that is after current date and time |
d/ |
NA | NA | Date used for adding weight | dd-mm-yyyy HH:mm format that is before current date and time |
Prefixes for Routine Commands
Prefix | Compulsory field for adding routine | Multiple Input | Prefix Meaning | Characters restrictions |
---|---|---|---|---|
r/ |
Yes | Only Last Taken | Routine Name | Alphabets, numbers and spaces |
ex/ |
No | All Taken | Exercise Name | Alphabets, numbers and spaces |
exno/ |
NA | NA | Exercise index | Numeric |
Multiple Input Column
, Only Last Taken
means that for example add n/John Doe n/Richard Yang...
there are 2 name prefixes, the last name prefix which is Richard Yang
will be stored as the name of the client to be added.
While All Taken
means for example add ... t/friends t/VIP ...
both tags will be added to the client. Client Commands
Adding a client: add
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS w/WEIGHT g/GENDER
[cal/RECOMMENDED_CALORIES_INTAKE] [g/GOAL] [r/ROUTINE]… [app/APPOINTMENT_TIME]… [t/TAG]…
- A client can have any number of
tags
,appointments
andexercise routines
(including 0). - A user cannot add an exercise routine that does not exist in the exercise routine list in the
Exercise
tab to a client. -
APPOINTMENT
needs to be later than the current time, or it will get deleted.
Gender
should be either M or F (not case-sensitive). Routine
is case sensitive. Weight
is specified in kilograms (Kg). Examples:
-
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 w/50 g/M r/Cardio
(Cardio routine has to exist in exercise routine). add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/93125841 t/John's Friend w/55 g/F
add n/Betsy Crowe app/12-12-2030 12:00 cal/2300 g/F e/betsycrowe@example.com a/Newgate Prison p/93125841 t/Friend
Editing a client : edit
Format: edit CLIENT_INDEX n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS w/WEIGHT g/GENDER
[cal/RECOMMENDED_CALORIES_INTAKE] [g/GOAL] [r/ROUTINE]… [app/APPOINTMENT_TIME]… [t/TAG]…
- Edits the client at the specified
CLIENT_INDEX
. The index refers to the index number shown in the displayed client list. - The index must be a positive integer 1, 2, 3, …
- The index must not contain signs +1, +2, +3, …
- The index must not be larger than
Integer.MAX_VALUE
i.e. 2147483647 - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing
tags
,appointments
androutines
, the existingtags
,appointments
androutines
of the client will be removed i.e. adding oftags
,appointments
androutines
are not cumulative. - You can remove all the client’s tags by typing
t/
without specifying any tags after it. (same forappointments
with/app
prefix androutines
with/r
) -
APPOINTMENT
needs to be later than the current time, or it will get deleted.
Gender
should be either M or F (not case-sensitive). Routine
is case sensitive. Examples:
-
edit 1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st client to be91234567
andjohndoe@example.com
respectively. -
edit 2 n/Betsy Crower t/
Edits the name of the 2nd client to beBetsy Crower
and clears all existing tags. -
edit 3 w/23.0
Edits the weight of the 3rd client to23.0
. -
edit 4 w/25.0 g/m
Edits the weight and gender of the 4th client to25.0
andm
.
Locating clients by fields: find
Format: find n/NAME p/PHONE e/EMAIL a/ADDRESS w/WEIGHT g/GENDER cal/CALORIE t/TAG
app/APPOINTMENT gl/GOAL…
hans
will match Hans
Han
will match Hans
, John
will match John Li
and John Tan
, 19
will match 1900
and 0190
Available Prefixes:
-
n
filters by Name -
p
filters by Phone -
e
filers by Email -
a
filters by Address -
t
filters by Tag -
w
filters by Weight -
g
filters by Gender -
gl
filters by Goal -
cal
filters by Calorie -
app
filters by Appointment
Examples:
-
find n/Alex
returns every client with ‘Alex’ in their name. -
find p/91234567
returns every client with phone numbers that match or contains ‘91234567’. -
find n/Alex p/91234567
returns every client with ‘Alex’ in their name OR with phone numbers that match or contain ‘91234567’
Deleting a client : delete
Format: delete INDEX
- Deletes the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be a positive integer 1, 2, 3, …
- The index must not contain signs +1, +2, +3, …
- The index must not be larger than
Integer.MAX_VALUE
i.e. 2147483647
Examples:
-
list
followed bydelete 2
deletes the 2nd client in the FitBook. -
find Betsy
followed bydelete 1
deletes the 1st client in the results of thefind
command.
Viewing a client summary: view
Exercise Routines
tagged to the client.
Format: view INDEX
- Views the summary of the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be a positive integer 1, 2, 3, …
- The index must not contain signs +1, +2, +3, …
- The index must not be larger than
Integer.MAX_VALUE
i.e. 2147483647
Examples:
-
view 1
views the summary of the first client in the FitBook. -
find n/Alex
followed byview 1
views the summary of the 1st client in the results of theview
command.
Listing all clients : listClients
Format: listClients
- Initiate the command with
listClients
- All clients in FitBook has been listed once again!
Clearing all entries : clear
Format: clear
Exporting client details : export
Format: export
- The exported client data includes:
- Name of Client
- Phone number of Client
- Email of Client
- Address of Client
- Weight of Client
- Gender of Client
-
Example generated CSV file when opened using Microsoft Excel:
Client’s Weight Commands
Adding new weight to a client: addWeight
Format: addWeight INDEX w/WEIGHT d/DATE
- Adds weight to the weight history of the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must not contain signs +1, +2, +3, …
- The index must not be larger than
Integer.MAX_VALUE
i.e. 2147483647 - The new
DATE
must be specified indd-MM-yyyy HH:mm
format. -
DATE
field must be a date that has passed. -
WEIGHT
field is specified in kilograms (Kg). - The weight of the client displayed in the client list is updated to the latest weight inputted by the user. Use
listClients
to refresh the client list and view the updated weight of the client.
Examples:
-
addWeight 1 w/70 d/10-03-2023 18:00
adds weight 70kg to the weight history of the first client in the FitBook and dates the weight at 10 March 2023, 6pm. -
find n/Alex
followed byaddWeight 1 w/70 d/10-03-2023 18:00
adds weight 70kg, dated 10 March 2023, 6pm to the weight history of the 1st client in the results of thefind
command.
Plotting weight history graph for a client: graph
Format: graph INDEX
- Plots the weight history of the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be a positive integer 1, 2, 3, …
- The index must not contain signs +1, +2, +3, …
- The index must not be larger than
Integer.MAX_VALUE
i.e. 2147483647 - The weight history graph will be shown only for weights dated within one month of the current date and time.
Examples:
-
graph 1
plots the weight history of the first client in the FitBook. -
find n/Alex
followed bygraph 1
plots the weight history of the 1st client in the results of thefind
command.
Example:
Exercise Routine Commands
- All routines and exercises must be in alphanumeric characters and spaces between characters are allowed.
Adding a routine: addRoutine
Format: addRoutine r/ROUTINE_NAME [ex/EXERCISE]…
Exercise
(including 0). Examples:
addRoutine r/Cardio
addRoutine r/HIIT ex/3x10sets of Jumping ropes
Example: (Adding Routine without any exercises)
Listing all Routines in FitBook : listRoutines
Format: listRoutines
- Initiate the command with ‘listRoutines’
- All Routines in FitBook has been listed once again!
Editing a routine : editRoutine
Format: editRoutine ROUTINE_INDEX r/ROUTINE_NAME
or editRoutine ROUTINE_INDEX exno/EXERCISE_INDEX ex/EXERCISE
- Edits the routine at the specified
ROUTINE_INDEX
. The index refers to the index number shown in the displayed exercise routine list. - The index must be a positive integer 1, 2, 3, …
- The index must not contain signs +1, +2, +3, …
- The index must not be larger than
Integer.MAX_VALUE
i.e. 2147483647 - At least one of the two types should be used. Mixture of the two types is not allowed.
- This command only allows the editing existing Routine’s name or existing Exercise’s name.
Examples:
-
editRoutine 1 r/Cardio
edits the routine name of the 1st routine to beCardio
respectively. -
editRoutine 2 exno/1 ex/3x10sets dumbbells
edits the exercise of the 2nd routine to be3x10sets dumbbells
. -
editRoutine 3 r/Cardio exno/1 ex/3x10 sets dumbbells
will throw an error as it attempts to change both the routine name and the exercises in the routine.
Locating routines by name: findRoutine
Format: findRoutine KEYWORD
cardio
will match Cardio
. Fun swimming
will match Swimming fun
. Examples:
findRoutine OPM
Example:
Deleting a routine : deleteRoutine
Format: deleteRoutine ROUTINE_INDEX
- Deletes the routine at the specified
ROUTINE_INDEX
. - The index refers to the index number shown in the displayed exercise routine list in the
Exercise panel
. - The index must be a positive integer 1, 2, 3, …
- The index must not contain signs +1, +2, +3, …
- The index must not be larger than
Integer.MAX_VALUE
i.e. 2147483647
Examples:
-
listRoutines
followed bydeleteRoutine 2
deletes the 2nd Routine in FitBook. -
findRoutine Cardio
followed bydeleteRoutine 1
deletes the 1st Routine in the results of thefindRoutine
command.
Adding an exercise : addExercise
Format: addExercise ROUTINE_INDEX ex/EXERCISE_NAME
- Adds an exercise
EXERCISE_NAME
to the routine in FitBook at the specifiedROUTINE_INDEX
. - The
ROUTINE_INDEX
refers to the index number shown in the displayed exercise routine list in the exercise panel. - The
ROUTINE_INDEX
must be a positive integer 1, 2, 3, … - The index must not contain signs +1, +2, +3, …
- The index must not be larger than
Integer.MAX_VALUE
i.e. 2147483647
Examples:
-
listRoutines
followed byaddExercise 1 ex/push ups
adds the exercisepush ups
to the first routine in the exercise routine list in FitBook.
Deleting an exercise : deleteExercise
Format: deleteExercise ROUTINE_INDEX EXERCISE_INDEX
- Deletes the exercise specified by the
EXERCISE_INDEX
of the routine in FitBook specified byROUTINE_INDEX
. - The
ROUTINE_INDEX
refers to the index number shown in the displayed exercise routine list in the exercise panel. - The
EXERCISE_INDEX
refers to the index number shown in the displayed exercise routine list in the exercise panel. - Both
ROUTINE_INDEX
andEXERCISE_INDEX
must be a positive integer and a valid integer according to the list displayed 1, 2, 3, … - Both
ROUTINE_INDEX
andEXERCISE_INDEX
must not contain signs +1, +2, +3, … - Both
ROUTINE_INDEX
andEXERCISE_INDEX
must not be larger thanInteger.MAX_VALUE
i.e. 2147483647
Examples:
-
listRoutines
followed bydeleteExercise 1 2
deletes the exercise specified at index2
from the Routine specified at index1
in the Routine list in FitBook. -
findRoutine Cardio
followeddeleteExercise 1 1
deletes the exercise specified at index1
from the Routine specified at index1
in the results of thefindRoutineCardio
command.
Clearing all routine entries : clearRoutines
Exercise
Tab.
Format: clearRoutines
Exporting routine details : exportRoutines
Format: exportRoutines
- The exported client data includes:
- Name of routine
- Exercises in the routine
-
Example generated CSV file when opened using Microsoft Excel:
FitBook Miscellaneous Commands
Viewing help : help
Format: help
Exiting the program : exit
Format: exit
FitBook Storage Usage
Saving the data
FitBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
FitBook data are saved as a JSON file [JAR file location]/data/fitbook.json
. Advanced users are welcome to update data directly by editing that data file.
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 FitBook home folder.
Q: Must I exit the FitBook app through the exit
command?
A: There is no need to exit the FitBook app through the exit
command as everything is saved after each action changes to the list.
Q: Why can I not tag the exercise routine to the client?
A: The exercise routine is probably not inside the list of routines or the routine name is wrong. The routine name is case-sensitive.
Q: When I try to edit my weight a few times, and it updates in the client panel, but the data does not show up on the graph?
A: To view historical weight data on the line graph, more values of weight must be added using addWeight command. edit command only changes the latest weight of the client.
Q: Why is my FitBook empty even though I have data saved in the storage?
A: The format of your json file storage is invalid. Hence, it will create an empty storage system for the FitBook as a measure.
Command summary
Action | Format, Examples |
---|---|
Add |
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS w/WEIGHT g/GENDER [cal/RECOMMENDED_CALORIES_INTAKE] [g/GOAL] [r/ROUTINE_NAME]… [app/APPOINTMENT_TIME]… [t/TAG]… e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague w/55 g/M
|
Clear all client entries in FitBook | clear |
Delete |
delete INDEX e.g., delete 3
|
Edit |
edit CLIENT_INDEX n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS w/WEIGHT g/GENDER [cal/RECOMMENDED_CALORIES_INTAKE] [gl/GOAL] [r/ROUTINE_NAME]… [app/APPOINTMENT_TIME]… [t/TAG]… e.g., edit 2 n/James Lee e/jameslee@example.com
|
Find |
find n/NAME p/PHONE e/EMAIL a/ADDRESS w/WEIGHT g/GENDER cal/CALORIE t/TAG app/APPOINTMENT gl/GOAL e.g., find n/James Jake e/jamesjake@example.com
|
List | listClients |
Help | help |
Export Client Details | export |
Add Exercise |
addExercise ROUTINE INDEX ex/EXERCISE e.g, addExercise 1 ex/4 x 3 sprints
|
Add Routine |
addRoutine r/ROUTINE_NAME [ex/EXERCISE]… e/g, addRoutine r/Cardio ex/3x5 1km Jog ex/3x10 Jumping Jacks
|
Edit Routine(RoutineName) |
editRoutine ROUTINE_INDEX r/ROUTINE_NAME e/g, editRoutine 1 r/Cardio
|
Edit Routine(Exercise) |
editRoutine INDEX exno/EXERCISE_INDEX ex/EXERCISE e/g, editRoutine 1 exno/1 ex/3x10sets of Dumbbell curls
|
Delete Exercise |
deleteExercise ROUTINE INDEX EXERCISE INDEX e.g, deleteExercise 1 2
|
Delete Routine |
deleteRoutine ROUTINE INDEX e.g, deleteRoutine 1
|
List Routine | listRoutines |
Clear Routine | clearRoutines |
Find Routine |
findRoutine ROUTINE NAME e.g, findRoutine Cardio
|
Export Routine Details | exportRoutine |
Add weight |
addWeight INDEX w/WEIGHT d/DATE e.g., addWeight 1 w/70 d/10-10-2023 18:00
|
Graph |
graph INDEX e.g., graph 1
|
View |
view INDEX e.g., view 1
|