Streamline Your Shelter: Pawfection - Commanding Care with a Click!
Welcome to Pawfection, your desktop application for managing animals in a pet shelter, designed with you, the volunteer, in mind. Pawfection aims to provide a platform for volunteers to store and retrieve information about animals and tasks easily, ensuring seamless coordination within the shelter.
With Pawfection, experience a new level of convenience and control:
Begin your Pawfection Journey - New to Pawfection? Get started with our Quick Start Guide!
AnimalhelpaddlistdeleteeditsearchaddtaskdeletetaskmarkunmarkresetWelcome to the Pawfection User Guide! Our goal is to empower you with the knowledge and confidence to unleash the full potential of Pawfection.
11 or above installed in your Computer.java --version and press Enter to check if java is installed.java --version and press Enter to check if java is installed.java --version and press Enter to check if java is installed.If Java 11 is not installed, follow the instructions here to install Java 11.
pawfection.jar.) from our Github Release.

Pawfection to keep things organized!Navigate to Workspace. Navigate to the folder containing the pawfection.jar file using this method:
New Terminal at Folder (Mac) or Open in Terminal (Windows) to instantly navigate to the folder in your Terminal.

cd command in your Terminal.Run Pawfection. Use the java -jar pawfection.jar command to run the application.


Main Window:

Here are the components of the Graphical User Interface (GUI), and their details.
| Component Name | Details |
|---|---|
| Menu Bar | Contains the drop down menus: File and Help. |
| Command Input Box | Text box for users to input commands. |
| Message Display Box | Box that displays result of command. Error messages will be displayed here as well. |
| Animal Entries | Contains information about individual animals currently at the shelter, including: Name, ID, Sex, Species and Breed of animal. |
| Selected Animal | Animal that is selected either by left-clicking on the animal entry, or selected by a command. Selected animal is highlighted in orange. |
| Detailed View | Box that contains more details about the currently selected animal. |
help in the command box and pressing Enter. The URL to this user guide will be displayed as seen in the image below.
help command more effectively by typing help ad and pressing Enter. A list of commands that contain the keyword ad will be displayed.
add n/Tofu i/0000 g/Male db/2019-01-01 da/2019-02-02 s/Dog b/Poodle and press Enter. Tofu is now added to the animal list!
Add more Animals. Try it out yourself! Add more animals to the list using the add command.
Searching for Animals. Now that the list view is getting a little too crowded, let us try to search for animals. Type in search n/Tofu and press Enter. The animal list view will now only show animals with the name Tofu.

Tofu. Click on the Tofu card on the left of GUI. The animal details view on the right will now show the details of Tofu.
list and press Enter. The animal list view will now show all animals.
Tofu. Type in addtask 3 Feed Tofu and press Enter. A task with the name Feed Tofu is now added to Tofu's task list.
mark 3 1 and press Enter. The first task of Tofu is now marked as done.
Congratulations! You are now ready to use Pawfection! Click here to explore other features.
Here are the main components of the commands:
| Component | Example | Description |
|---|---|---|
| Command Word | add, search | The command to be executed |
| Prefix | n/, i/ | The attribute of the animal |
| Parameter | NAME, ID | The value of the attribute of the animal, which is supplied by users |
| Index | 1, 2 | The position of the animal or task in the current list, based on 1-indexing, i.e first animal will be at index 1. |
To view the full list of animal attributes, refer to Attributes of Animal.
Here are the additional symbols used in the commands:
| Symbol | Example | Description |
|---|---|---|
| None | n/NAME | The parameter NAME is compulsory |
[ ] | [b/BREED] | The parameter BREED is optional |
... | TASK_INDEX ... | Multiple parameters of type TASK_INDEX can be accepted |
Notes about the command format:
Parameters can be in any order EXCEPT commands that take in ANIMAL_INDEX and TASK_INDEX as inputs.
e.g. if the command specifies n/NAME db/DOB, db/DOB n/NAME is also acceptable.
Extraneous parameters for some commands (e.g. list, reset, search) will be ignored.
e.g. if the command specifies search 123 n/Pookie, it will be interpreted as search n/Pookie.
Prefixes are case-sensitive. n/ is not the same as N/.
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.
AnimalSummarized in the table below are the attributes of Animal along with their constraints. You are encouraged to read through
this table for an idea of what the attributes are supposed to look like, and refer to this table if you are unsure.
Animal| Format | Constraints | Example |
|---|---|---|
n/NAME | Alphanumeric, not blank |
|
i/ID | 4-digit, unique number |
|
g/SEX | Male/Female, case-insensitive |
|
s/SPECIES | Alphabets, separated by singular whitespace |
|
b/BREED | Alphabets, separated by singular whitespace |
|
db/DOB | yyyy-MM-dd format. Not in the future.Not chronologically later than DOA |
|
da/DOA | yyyy-MM-dd format. Not in the future.Not chronologically earlier than DOB |
|
helpDisplays either a link to this User Guide in a pop-up, or the usage guide of the specified command.
Format:
Examples:
helphelp addhelp delThings to note:
COMMAND_NAME is case-insensitive, and is able to do partial matches. E.g. "a", "ad", "dd", "AdD" will all match with "add".Upon success:
help will produce a link to the User Guide in a pop-up.
help add will show usage guide of all commands that partial match with add.
Upon failure:
Inputs that result in no partial matches will produce the following error message:
addAdds an animal to the animal catalog.
Format:
Examples:
add n/Pookie i/1234 g/MALE db/2019-01-01 da/2019-02-02 s/Dog b/Poodleadd n/Tofu i/1242 g/female db/2023-04-01 da/2023-05-25 s/cat b/British ShorthairThings to note:
Animal for a better idea of the constraints of each attribute.Upon success:
add n/Tofu i/1242 g/female db/2023-04-01 da/2023-05-25 s/cat b/British Shorthair adds Tofu to the list.
Upon failure:
Attempts to add an animal with missing fields will produce the following error message listing the missing fields:
Attempts to add an animal with an ID that already exists in the AnimalCatalog will produce the following error message:
Attempts to add an animal with a wrong chronological DOB and DOA will produce the following error message:
Attempts to add an animal with a wrong date format, or a date that does not exist e.g. 2019-02-31 will produce the following error message:
listShows a list of all animals in the animal catalog.
Format:
Things to note:
deleteDeletes the animal at the specified index from the animal catalog.
Format:
Examples:
delete 2Upon success:
delete 2 deletes the animal at INDEX 2.
Upon failure:
delete -1 is not a valid command format due to INDEX not being positive and will produce the following error message:
Invalid command formats will produce the following error message:
EditEdits animals specified by the index with the newly specified prefix attributes.
Format:
Examples:
edit 2 n/Pookieedit 1 s/Dog b/PoodleThings to note:
Animal for a better idea of the constraints of each attribute.Upon success:
edit 2 n/Pookie edits the name of the animal at INDEX 2 to be Pookie.
edit 1 s/Dog b/Poodle edits the species of the animal at INDEX 1 to be Dog and the breed to be Poodle.
Upon failure:
edit -1 is an invalid command format due to INDEX not being positive and will produce the following error message:
edit 100 is an invalid command format due to missing prefix and will produce the following error message:
SearchSearches animals that are filtered using the specified prefixes.
Format:
Examples:
search n/Bearsearch n/Pookie b/Poodlesearch something n/Bear is equivalent to search n/Bearsearch nil/something n/Bear etc/else is equivalent to search n/Bearsearch something and search nil/other else/other is equivalent to searchThings to note:
n/pookie will match animals named Pookiesearch n/ear will not match animals whose name contains ear like Bear, it will only search for animals whose names are spelt exactly ear.search b/dog n/tofu will only return a dog named tofu and not any other dog or any pet named tofuAnimal for a better idea of the constraints of each attribute.Upon success:
search n/Bear returns all animals with the name Bear, not animals whose species is Bear
search n/Pookie b/Poodle returns all animals with the name Pookie and is of the breed Poodle
Upon failure:
If no valid inputs are provided, the search will return the following error message.
addtaskAdds a new task with the specified description to the task list of an animal.
Examples:
addtask 1 Feed PookieFormat:
Things to note:
TASK refers to the description of the task that you want to add into the task list of the animal.TASK with the same description is allowed.Upon success:
addtask 1 Feed Pookie adds a task with name Feed Pookie to the task list of the first animal.
Upon failure:
If the ANIMAL_INDEX provided is out of range, the following error message will be produced:
If the ANIMAL_INDEX provided is negative or zero, the following error message will be produced:
deletetaskDeletes the task at the specified task index from the task list of the animal at the specified animal index.
Format:
Examples:
deletetask 1 1Things to note:
ANIMAL_INDEX and TASK_INDEX must be separated by a space. E.g. deletetask 12 will be treated as delete task
from animal with index 12, but because there is a missing TASK_INDEX, the command is invalid.ANIMAL_INDEX and TASK_INDEX is specified must be adhered to.deletetask 1 2.deletetask 1 2 is not equivalent to deletetask 2 1.Examples:
deletetask 1 1Upon success:
deletetask 1 1 deletes the first task from the first animal in the list
Upon failure:
If the ANIMAL_INDEX provided is out of range, the following error message will be produced:
If the TASK_INDEX provided is out of range, the following error message will be produced:
If the ANIMAL_INDEX or TASK_INDEX provided is negative or zero, the following error message will be produced:
markMarks the task at the specified task index as done for the animal at the specified animal index.
Format:
Examples:
mark 1 1mark 2 1 2Things to note:
TASK_INDEX are specified, all the tasks at the specified TASK_INDEX will be marked as done.TASK_INDEX provided is invalid, the rest of the TASK_INDEX will not be marked as done.mark command on task(s) previously marked as done will not cause an error to be thrown, and the task(s) would remain as marked.ANIMAL_INDEX and TASK_INDEX is specified must be adhered to.mark 1 2.mark 1 2 is not equivalent to mark 2 1.Examples:
mark 1 1mark 2 1 2Upon success:
mark 2 1 2 marks the first and second task of the second animal as done.
Upon failure:
If no TASK_INDEX is provided, the following error message will be produced:
If no ANIMAL_INDEX is provided, the following error message will be produced:
If the ANIMAL_INDEX provided is out of range, the following error message will be produced:
If any of the TASK_INDEX provided is out of range, the following error message will be produced:
unmarkMarks the task at the specified task index as uncompleted for the animal at the specified animal index.
Format:
Examples:
unmark 1 1unmark 3 1 2Things to note:
TASKINDEX are specified, all the tasks at the specified ANIMAL_INDEX will be marked as uncompleted.TASK_INDEX provided is invalid, the rest of the TASK_INDEX will not be marked as uncompleted.unmark command on task(s) previously marked as uncomplete will not cause an error to be thrown, and the task(s) would remain as uncomplete (unmarked).ANIMAL_INDEX and TASK_INDEX is specified must be adhered to.unmark 1 2.unmark 1 2 is not equivalent to unmark 2 1.Examples:
unmark 1 1unmark 3 1 2Upon success:
unmark 3 1 2 marks the first and second task of the third animal as uncompleted.
Upon failure:
If no TASK_INDEX is provided, the following error message will be produced:
If no ANIMAL_INDEX is provided, the following error message will be produced:
If the ANIMAL_INDEX provided is out of range, the following error message will be produced:
If any of the TASK_INDEX provided is out of range, the following error message will be produced:
resetSets all tasks of all animals as uncompleted.
Format:
Things to note:
Upon success:
reset will unmark all tasks of all animals and produce the following message:
The detailed view panel on the right shows greater details about the selected animal. There are 2 ways to view the details of a certain animal:
INDEX of animal will automatically show the details of the animal in the detailed view. Commands include: add, edit, addtask, deletetask, mark, unmark.The animal cell whose details are currently being displayed in the detail view will be highlighted in orange.
list, delete, search, and help commands.Examples:

edit 2 n/Pooh will automatically cause the animal at INDEX 2 to show in the detailed view, since it is a command in the list of animal-specific commands.
Pawfection data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Pawfection data are saved automatically as a JSON file [JAR file location]/data/animalcatalog.json. Advanced users are welcome to update data directly by editing that data file.
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 Pawfection home folder.
preferences.json file created by the application before running the application again.| Action | Format, Examples |
|---|---|
| Add | add n/NAME i/ID db/DOB da/DOA g/SEX b/BREED s/SPECIES |
| Edit | edit INDEX [n/NAME] [g/SEX] [s/SPECIES] [b/BREED] [db/DOB] [da/DOA] |
| Delete | delete INDEXe.g., delete 3 |
| List | list |
| Search | search [n/NAME] [i/ID] [g/SEX] [s/SPECIES] [b/BREED] [db/DOB] [da/DOA]e.g. search n/Pookie b/Poodle |
| Addtask | addtask ANIMAL_INDEX TASKe.g. addtask 1 Feed Pookie |
| Deletetask | deletetask ANIMAL_INDEX TASK_INDEXe.g. deletetask 1 1 |
| Mark | mark ANIMAL_INDEX TASK_INDEX [TASK_INDEX]...e.g. mark 2 1 2 |
| Unmark | unmark ANIMAL_INDEX TASK_INDEX [TASK_INDEX]...e.g. unmark 2 1 2 |
| Reset | reset |
| Help | help [COMMAND_NAME] |