FitDesk is a desktop app for front-desk receptionists at small-to-medium private fitness gyms managing member registrations and daily check-ins. Tailored for fast, keyboard-centric workflows, FitDesk empowers receptionists to work more efficiently, reducing wait times and increasing productivity.
Ensure you have Java 17 or above installed in your Computer.
Mac users: Ensure you have the precise JDK version prescribed here.
Download the latest .jar file from here.
Copy the file to the folder you want to use as the home folder for your AddressBook.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar addressbook.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. Use the Up and Down arrow keys (when the command box is focused) to cycle through previously entered commands.
Some example commands you can try:
list : Lists all contacts.
add n/John Doe p/98765432 g/M d/19-01-2004 m/annual e/johnd@example.com ec/98723347 : Adds a member named John Doe to the member list.
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.
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.
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 help, list, exit and clear) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
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.
helpShows a message explaining how to access the help page.
Format: help
addAdds a member to the member list.
Format: add n/NAME p/PHONE_NUMBER g/GENDER d/DATE_OF_BIRTH m/MEMBERSHIP_TYPE e/EMAIL ec/EMERGENCY_CONTACT
Tip: Membership types only include "Monthly" or "Annual"
Examples:
add n/John Doe p/98765432 g/M d/19-01-2004 m/annual e/johnd@example.com ec/98723347A new member John Doe is added to the member list
add n/Betsy Crowe m/monthly ec/93349011 e/betsycrowe@example.com g/F d/28-01-2002 p/91234567listShows a list of all members in the list.
Format: list
editEdits an existing member in the list.
Format: edit INDEX [n/NAME] [p/PHONE_NUMBER] [g/GENDER] [d/DATE_OF_BIRTH] [m/MEMBERSHIP_TYPE] [j/JOIN_DATE] [e/EMAIL] [ec/EMERGENCY_CONTACT]
INDEX. The index refers to the index number shown in the displayed member list. The index must be a positive integer 1, 2, 3, …Examples:
edit 1 p/91234567 e/johndoe@example.com Edits the phone number and email address of the 1st member to be 91234567 and johndoe@example.com respectively.

edit 2 n/Betsy Crower m/annual Edits the name and membership type of the 2nd member to be Betsy Crowerand annual respectively.

findFinds members whose fields contain the search query as a substring.
Format: find QUERY
hans will match Hansfind john doe will only return members whose field contains "john doe", not members with just john or just doeExamples:
find John returns members with John in any fieldfind john doe returns members whose name (or other field) contains "john doe"
find 9123 returns members whose phone number or other field contains 9123find annual returns members with annual membership typefilterFilters member list and displays members who have fields matching the given attribute.
Format: filter [s/STATUS] [g/GENDER] [m/MEMBERSHIP_TYPE] [age>/AGE] [age</AGE] [age=/AGE] [j>/DATE] [j</DATE] [exp>/DATE] [exp</DATE] [exp=/DATE]
Examples:
deleteDeletes the specified member from the list.
Format: delete INDEX
INDEX.Examples:
list followed by delete 2 deletes the 2nd person in the address book.
find Alex followed by delete 1 deletes the 1st person in the results of the find command.
renewRenews specified member's membership.
Format: renew INDEX [m/MEMBERSHIP_TYPE]
INDEX. The index refers to the index number shown in the displayed member list. The index must be a positive integer 1, 2, 3, …MEMBERSHIP_TYPE is an optional field.Examples:
renew 2 renews membership of the 2nd member in the list to 11-04-2026renew 1 m/monthly renews membership and updates membership type of the 1st member in the list to 11-04-2027 and Monthly respectively.remarkAdds or edits a remark for the specified member.
Format: remark INDEX r/[REMARK]
INDEX. The index refers to the index number shown in the displayed member list. The index must be a positive integer 1, 2, 3, …r/ with nothing after it) removes the remark from the member.Examples:
remark 1 r/Likes to swim. adds the remark Likes to swim. to the 1st member.

remark 2 r/ removes the remark from the 2nd member.detailsShows the details of the specified member from the list.
Format: details INDEX
INDEX.Examples:
list followed by details 1 shows the details of the 1st member in the address book.
find David followed by details 1 shows the details of the 1st member in the results of the find command.
clearClears all entries from the address book.
Format: clear
undoUndoes the most recent undoable command (add, edit, delete, clear).
Format: undo
Example:
Allows you to quickly re-use previously entered commands using the arrow keys in the command box.
Up arrow key to navigate to the previous command in history.Down arrow key to navigate to the next command in history.Down past the most recent command clears the command box.exitExits the program.
Format: exit
FitDesk data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
FitDesk data are saved automatically as a JSON file [JAR file location]/data/addressbook.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, FitDesk 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 FitDesk 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.
[coming in v2.0]Details coming soon ...
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 AddressBook 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.| Action | Format, Examples |
|---|---|
| Add | add n/NAME p/PHONE_NUMBER g/GENDER d/DATE_OF_BIRTH m/MEMBERSHIP_TYPE e/EMAIL ec/EMERGENCY_CONTACT e.g., add n/James Ho p/82224444 g/M d/14-05-2001 m/annual e/jamesho@example.com ec/99502281 |
| Clear | clear |
| Delete | delete INDEXe.g., delete 3 |
| Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [g/GENDER] [d/DATE_OF_BIRTH] [m/MEMBERSHIP_TYPE] [j/JOIN_DATE] [e/EMAIL] [ec/EMERGENCY_CONTACT] e.g., edit 2 n/James Lee m/monthly e/jameslee@example.com |
| Find | find KEYWORD [MORE_KEYWORDS]e.g., find James Jake |
| Filter | filter [s/STATUS] [g/GENDER] [m/MEMBERSHIP_TYPE] [age>/AGE] [age</AGE] [age=/AGE] [j>/DATE] [j</DATE] [exp>/DATE] [exp</DATE] [exp=/DATE]e.g., filter s/valid g/M |
| Remark | remark INDEX r/[REMARK]e.g., remark 1 r/Likes to swim. |
| Renew | renew INDEX [m/MEMBERSHIP_TYPE] ]e.g., renew 2 m/monthly |
| Details | details INDEXe.g., details 1 |
| List | list |
| Undo | undo |
| Help | help |