User Guide
Welcome to PetPal!

PetPal is your furry and dependable assistant who reminds you of deadlines and consolidates crucial information like pet names, tags dietary needs all in an aesthetically pleasing GUI! You can now focus on spending quality time with your furry friends without having to worry about things accidentally slipping your mind.
PetPal is optimized for Pet DayCare owners to use via the Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). PetPal can help get your pet’s administrative tasks done without needing to be tech-savvy.
This user guide will help you get started and understand how PetPal can seamlessly streamline your pet-administrative duties.
Table of Contents
- Welcome to PetPal!
- Table of Contents
- Quick start
- Getting Familiar With Your User Interface
- How to use the User Guide
- Features
- FAQ
- Glossary
- Command summary
- Acknowledgements
Quick start
- Ensure you have Java
11or above installed on your Computer. - Download the latest
PetPal.jarfrom here. - Copy the file to the folder you want to use as the home folder for your PetPal.
- Double-click the file to start the app. The GUI similar to below should appear in a few seconds. Note how the app contains some sample data.
-
Type the command in the command line and press Enter to execute it. e.g. typing
helpand pressing Enter will open the help window.
Some example commands you can try:-
list: Lists all pets currently stored. -
-
addo/Petricia n/Whiskers p/98746333 e/petricia@petpal.com a/311 Beach Road 2023-03-27 21:09:09 d/Feed cat - 2023-03-27 21:09:09 t/MaineCoon - Adds a
PetnamedWhiskersto your PetPal.
-
-
exit: Exits the app.
-
- Refer to the Features below for details of each command.
- Refer to the Command Summary for a quick summary of all commands.
Getting Familiar With Your User Interface

- Pet Cards: Contain all the information of a pet. (Highlighted in red)
- Command Line: Type in your commands here. (Highlighted in yellow)
- Result Display: The result of your command execution appears here. (Highlighted in blue)
- Help Button: Provides the URL of this user guide.
How to use the User Guide
General formatting conventions
- Text in blue are hyperlinks that direct you to the relevant section of the page or other websites.
- Text in bold is used to emphasize important details to look out for or to distinguish headers from the rest of the text.
- Text in
code snippets such as thisis used to show inputs and their format.
-
Input Shortcut:
Shortened forms of commands which can help increase your efficiency in using PetPal
-
Note:
Information that might be useful to know to enhance your PetPal experience, might not be compulsory to know
-
Caution:
Important information to note which might negatively impact your experience in using PetPal as it might cause fatal
errors
-
Information
Information that you need to know
Command formatting conventions:
- Words in
UPPER_CASEare the information supplied by you.
e.g.OWNER_NAMEis a parameter inadd o/OWNER_NAME, where you can inputadd o/John Doe. - Parameters in
[]are optional.
e.g.DEADLINEis an optional parameter inadd o/OWNER_NAME [d/DEADLINE], where you can inputadd on/John Doe d/Feed dog - 2023-03-27 21:09:09or justadd n/John Doe. - Items with
...after them can be used multiple times.
e.g.[t/TAG...]can be used ast/Pomeranian,t/Pomeranian t/Vegetarianetc. -
INDEXrepresents the index of a specific pet in the PetPal list you are currently viewing, which can change based on prior commands executed (e.g.find,remind)
e.g. You can use the commanddelete INDEXasdelete 2. - Parameters can be in any order.
e.g. You can input eitheradd o/OWNER_NAME p/PHONE_NUMBERor ` add p/PHONE_NUMBER o/OWNER_NAME`. - Only the last occurrence of a parameter that is expected once will be taken if you specify it more than once.
e.g. Givenp/12341234 p/56785678, onlyp/56785678will be taken. - Extraneous parameters for commands that do not take in parameters (such as
help,list,exit,clearandundo) will be ignored.
e.g. if the command specifieshelp 123, it will be interpreted ashelp.
Features
General
Viewing help : help
Helpful feature when you forget the commands!
Format: help, h or Press F1

Listing your pets: list
Will help you get back to the original list of pets stored in PetPal after the find and remind functions.
Format: list or l

Adding
Adding a pet’s information: add
If you have new pet client(s) and need to add your new furry friends to PetPal, you can make use of the add command.
Format: add n/PET_NAME o/OWNER_NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS ts/TIME_STAMP [d/DEADLINE] [t/TAG...]
-
Information
Note:
- The field
n/PET_NAMEis case-sensitive. That isn/Doggoandn/doggowill be treated as 2 different pets. - There are certain constraints which might differ for each parameter, please refer to Figure 1 below for details on each constraint.
- Pets with the
PET_NAMEcannot be created. - There can be multiple tags associated with each pet, simply repeat the tag prefix. e.g.
t/Dog t/BichonFrise
Figure 1 provides a summary of the parameters with their descriptions, prefixes and constraints.
| Parameter | Description | Prefix | Constraints | Required? |
|---|---|---|---|---|
OWNER_NAME |
The name of the owner | o/ |
Names should only contain alphanumeric characters and spaces | COMPULSORY |
PET_NAME |
The name of the pet | n/ |
Names should only contain alphanumeric characters and spaces | COMPULSORY |
PHONE_NUMBER |
The owner’s phone number | p/ |
Phone numbers should only contain numbers, and it should be at least 3 digits long | COMPULSORY |
EMAIL |
The owner’s email | e/ |
Emails should be of the format local-part@domain and adhere to the following constraints: 1. The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, ( + SPECIAL_CHARACTERS + ). The local-part may not start or end with any special “characters.” 2. This is followed by a ‘@’ and then a domain name. The domain name is made up of domain labels separated by periods.The domain name must: - end with a domain label at least 2 characters long - have each domain label start and end with alphanumeric characters - have each domain label consist of alphanumeric characters, separated only by hyphens, if any |
COMPULSORY |
ADDRESS |
The owner’s address | a/ |
COMPULSORY | |
TIMESTAMP |
The date and time when the pet starts boarding | ts/ |
Timestamps should be in theYYYY-MM-DD HH:MM:SS format. eg. 2023-03-27 21:09:09 and in the future |
COMPULSORY |
DEADLINE |
A deadline attributed with the pet | d/ |
Timestamps given in the deadline should be in theYYYY-MM-DD HH:MM:SS format. eg. 2023-03-27 21:09:09 and in the future |
OPTIONAL |
TAG |
A label that you can attach to a pet | t/ |
Tags should be alphanumeric, andcannot include spaces | OPTIONAL |
Figure 1: Parameters with their descriptions, prefixes and constraints.
-
Caution:
The format of the timestamp should strictly follow the convention YYYY-MM-DD HH:MM:SSeg.2023-03-27 21:09:09otherwise, you will encounter errors when adding a new pet.

Example given: Example: add o/Alice n/Doggo p/98765432 e/example@gmail.com a/311, Clementi Ave 2, #02-25 ts/2023-03-27 21:09:09 d/Feed dog - 2023-03-27 21:09:09 t/Dog t/Chihuahua
Other examples:
add o/Petricia n/Whiskers p/98746333 e/petricia@petpal.com a/311 Beach Road 2023-03-27 21:09:09 d/Feed cat - 2023-03-27 21:09:09 t/MaineCoon ts/2023-03-27 21:09:09 t/Catadd o/Robert n/Fluffy p/98746333 e/rob@bmail.com a/622 Rose Road ts/2023-03-27 21:09:09 d/Feed rabbit - 2023-03-27 21:09:09 t/Vegetarian t/Rabbit
Filtering out reminders that are due soon: remind
Get a filtered list of things you should do soon!
Constraints
- The filtering of the list only checks if the deadline for a pet is within 3 days of the current date.
- It does not sort out the list based on the deadline of the pet. (Future implementation)
- However, currently those reminders that are due within the day are highlighted in bright orange on the GUI as seen in the image given below.
Format: remind

Note:
The pets highlighted in bright orange are reminders that are due within a day!
Retrieving
Finding your pet by name: find
Find your pets by their names.
Constraints
- The search is case-insensitive. e.g.
wooferswill matchWoofers - Only the pet name is searched. e.g.
find Alexwill not return owner names, addresses or emails withAlex - Partial words will not be matched. e.g.
Jackwill not matchJackson - Order of the name given does not matter. e.g.
Milo Charliewill matchCharlieandMilo
Format: find n/PET_NAME

Example given: find Milo Charlie
Other examples:
-
find MaxreturnsmaxandMax Leo -
find Super WolfreturnsSuper Wolf,Super Dog,Wolf Hunter
Note:
The find command returns a new list. Any commands performed after find is based on the new list. You can use the list command to return to the original list.
Input Shortcut:
Format: f n/PET_NAME
Updating
Updating your pet information: edit
A pet owner changed their contact information? or did you find out new information about your pet client?
You can edit these changes with the edit command. This command can be used to edit: phone numbers, addresses, emails, and tags.
If you accidentally invoked this command with the wrong parameters, you can use the edit command to re-edit the wrong fields or
the undo command to revert the wrong changes.
Constraints
- Edits the pet with the provided index.
-
INDEXis the index of the pet in the currently displayed list. - You must provide at least one of the optional fields.
- Allows you to update a pet to have the same owner name but a different phone number or, the same number but a different owner name as a current pet in the PetPal.
- Pet profiles are auto-saved in PetPal and are reflected in the PetPal list.
- Cost is constantly being updated in PetPal but the latest information may not be reflected to you. To get the latest information, either click on the pet profile or run a command (e.g.
listorl).
Format: edit INDEX [p/PHONE_NUMBER] [a/ADDRESS] [e/EMAIL] [t/TAG...]

Example given: edit 6 t/GoldenRetriever t/Dog a/Blk 235 Ang Mo Kio Ave 8, #11-312 e/alextoh@gmail.com
Note:
If you wish to add tags to the pet, take note to include all previous tags in the edit, or they will be overridden.
Only the parameters provided will be changed.
Other examples:
-
edit 2 p/91234567 a/21 Beach RoadUpdates the second pet entry’s phone number to91234567and address to21 Beach Rd -
edit 3 t/Dog. Updates the third pet entry’s tag toDog, take note that if the third entry has an existing tag, the edit will override the existing tag
Amount indication
Pet Card information indicates the amount of money your customers owe you for taking good care of their pets!
Cost is calculated based on the initial timestamp input by the user. The cost is updated based on user interaction, clicking the pet card or reopening PetPal!

Changing the cost : changecost
Do some pets cost more to board in your daycare than others? You can use the changecost command to
change the parameters for cost calculation for each pet.
Cost is incremented in real-time and is calculated based on FLAT_RATE + (TIMESTAMP - CURR_TIME * RATE).
Note:
The cost will only update in your PetPal list when you click on the PetPal entry.
The update only applies to the selected PetPal entry.
Format: changecost INDEX RATE FLAT_RATE

Example given: changecost 1 0.1 0.5
-
Input Shortcut:
You can also use the shortcut ccto replacechangecost
Additional example:
cc 2 1.0 1.5
Marking a deadline as done: mark
Are you done with a pet’s deadline? You can use the mark command to mark the deadline as done.
Pets that are already marked will not be highlighted.
Format: mark INDEX
Example given: mark 1
Note:
You should always mark the pet’s deadline when you finished it. Otherwise, it will be highlighted as undone.
Pet deadline status will be automatically saved in the form of a status field in the petpal.json file. Unmarked means have not finished yet and Marked means already finished.
Deletion
Deleting a pet: delete
Deletes the specified pet from your PetPal.
You can use this command when:
- You drop a pet.
Constraints
-
INDEXis the index of the pet in the currently displayed list. - Deletes the pet with the specified index in your PetPal.
Format: delete INDEX

Example:
-
delete 2deletes the second pet in the currently displayed pet list in the PetPal.
Archiving a pet: archive
Sometimes a client may become inactive or stop using your services. To keep a record of the pet whilst not cluttering
your active PetPal list, you can use the archive command to move these records to another save file.
Archives the specified pet into the archive.json file in the data folder.
Note that:
- The specified pet will be removed from your PetPal list.
- The index is based on the currently displayed PetPal list, which might change depending on prior commands used
(e.g.
find)
Format: archive INDEX

Example:
-
archive 2archives the second pet in the currently displayed list in PetPal
Clearing PetPal list: clear
Clears all entries from PetPal.json.
Format: clear

Important
If you run this command by accident, you can undo the command to restore the previous state of PetPal.
Undo
Undoing a previous command: undo
Undo the last command executed, only works for supported commands. You can use this if you make a mistake while using PetPal.
Constraints
- The command intended to be undone should be an undoable command.
- Supported commands:
add,delete,edit,clear,undo -
NOT SUPPORTED commands:
exit,find,help,list,remind,changecost,archive
Format: undo

Exiting the program : exit
Exits the program. Data is automatically saved.
Format: exit or e
Saving the data
Your PetPal and archive data are both automatically saved after executing any command that changes the data. This means hassle-free data saving.
Editing the data file
PetPal data are saved as a JSON file [JAR file location]/data/PetPal.json. If you are an advanced user, you are welcome to update data directly by editing that data file.
Archive data is also in a JSON format and can be found in [JAR file location]/data/archive.json.
Caution:
If your changes to either data file make its format invalid, PetPal will discard all data and start with an empty data file at the next run,
which is IRREVERSIBLE.
FAQ
Q: How do I transfer my data to another computer?
A: Follow these steps to transfer your data to another computer:
- Find the save folder on the current computer. The save files can be found in the
datafolder created by the app, it should include bothPetPal.jsonandarchive.json - Transfer the save file to your new computer.
- Download the latest release of PetPal from here on your new computer.
- Launch PetPal on your new computer and exit.
- You should see a new
datafolder containing a newPetPal.jsonwith a sample. Replace this file with the save file copied over from your old computer. - Launch PetPal again. Your data should be there!
-
Note:
If you wish to transfer only 1 of the files over, repeat the same steps, and replace the file you want to move, instead of the entire datafolder
Q: How do I view the entire pet list after a find command?
A: Run list or l to view the entire unfiltered list.
Q: Why there are some pets highlighted even though the deadline is already passed?
A: If you have already done the task, run the mark function to mark it as done and remove the highlight.
Q: PetPal says the index is invalid even though the pet exists in the PetPal list
A: The index of each pet is based on your currently viewable pet list index, so if your currently viewable pet list is empty, the index will be invalid
Run list or l to view all the pets in the list before executing the command again.
Q: Why is my pet cost not updating?
A: After clicking on a PetCard once, the cost will be updated for the first time. To update the cost again, please click on other PetCards.
If you have additional questions that are not present in the User Guide, feel free to contact us via our email contact@petpal.com
or raise an issue in our GitHub
Glossary
| Term | Definition |
|---|---|
| Alphanumeric | Refers to characters that are the combined set of the 26 alphabetic characters, a to Z, both lowercase and uppercase and the 10 Arabic numerals, 0 to 9. |
| Command Line Interface | A command-line interface (CLI) is a text-based user interface (UI) used to run programs, manage computer files and interact with the computer. |
| YYYY-MM-DD hh:mm:ss | Date format wherebyYYYY refers to the year using 4 digits, MM refers to the months in 2 digits, DD refers to the days in 2 digits, hh refers to the 2 digit hours, mm refers to the 2 digit minutes, ‘ss’ refers to the 2 digit seconds. They are each separated by a hyphen: - character for date and : for time. |
| Graphical User Interface | A graphical user interface (GUI) is an interface through which a user interacts with electronic devices such as computers and smartphones through the use of icons, menus and other visual indicators or representations (graphics). |
| Index | The number that corresponds to the position of the pet in the list. The index must be a numeral above 0. |
| Java | The programming language used for this application. Java is a general-purpose computer programming language designed to produce programs that will run on any computer system that has Java installed. |
| JAR | JAR stands for Java ARchive. PetPal uses JAR to deliver its distribution. JAR is a file format based on the popular ZIP file format and is used for aggregating many files into one. |
| JSON | JSON stands for JavaScript Object Notation. JSON is the format used to store your PetPal data. JSON is a lightweight format for storing and transporting data. |
Command summary
| Action | Format, Examples | Shortcut |
|---|---|---|
| Help | help |
h or PRESS F1
|
| List | list |
l |
| Add |
add o/OWNER_NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS ts/TIME_STAMP [d/DEADLINE] [t/TAG...]e.g Example: add o/Alice n/Doggo p/98765432 e/example@gmail.com a/311, Clementi Ave 2, #02-25 ts/2023-03-27 21:09:09 d/Feed dog - 2023-03-27 21:09:09 t/Dog t/Chihuahua
|
|
| Edit |
edit p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG...]e.g Example: edit 6 t/Golden Retriever t/Dog a/Blk 235 Ang Mo Kio Ave 8, #11-312 e/alextoh@gmail.com
|
|
| Delete |
delete INDEXe.g. delete 2
|
|
| Remind | remind |
|
| Mark |
mark INDEX e.g mark 1
|
|
| Find |
find n/PET_NAMEe.g find Milo
|
f |
| Undo | undo |
|
| Change Cost |
changecost INDEX RATE FLAT_COSTe.g. changecost 1 0.1 0.5
|
cc |
| Archive |
archive INDEXe.g. archive 1
|
|
| Clear | clear |
|
| Exit | exit |
Acknowledgements
- This project is based on the AddressBook-Level3 project created by the SE-EDU initiative
- The logo used references the Dog icons created by Flat Icons - Flaticon