CinnamonBun User Guide
CinnamonBun is a desktop app for managing client information, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
- CinnamonBun - As good as it sounds.
- Quick Start
- Graphical User Interface (GUI) Overview
-
Commands
- Command Syntax
- User Guide Syntax
- Fields and Tags
- Command Summary
- Getting Help (
help
) - Add Client (
add
) - Edit Client (
edit
) - Append Remark to Client (
remark
) - Append Fields to Client (
append
) - Remove Fields from Client (
remove
) - Delete Client (
delete
) - Delete All Data (
clear
) - List All Clients (
list
) - Sort Client List (
sort
) - Find Client by Keyword (
find
) - Clear Filtered Clients (
clearFiltered
) - Add Transaction (
addTransaction
) - List All Transactions (
listTransaction
) - Find Client’s Transaction (
findTransaction
) - Delete Transaction (
deleteTransaction
) - Pay Transaction (
pay
) - Unpay Transaction (
unpay
) - Add Membership (
addMembership
) - Remove Membership (
removeMembership
) - List Members (
listMembers
) - Undo Last Modification (
undo
) - Exit Program (
exit
)
- Special Features
- Save Data
- FAQ
CinnamonBun - As good as it sounds.
Are you a small business owner or freelancer? Want an easy way to store your client’s information, but there’s no free and easy solution available? No worries, CinnamonBun has got you covered! CinnamonBun enables you to keep track of your clients and their transaction records.
As a Command-line Interface (CLI) app, you’ll never have to move your hands away from the keyboard to get all your tasks done. If you can type fast, the CLI will allow you to execute your tasks quickly. While this may be daunting for a new user, it only takes a short time to get accustomed to CinnamonBun.
This guide aims to be the one-stop shop to get you up and running.
Quick Start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
CinnamonBun.jar
from here. -
Copy the file to the folder you want to use as the home folder for CinnamonBun.
-
Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
-
Alternatively, you can run the application via the terminal using
java -jar ./CinnamonBun.jar
fromCinnamonBun.jar
’s home folder. -
If are unable to run it due to lack of permissions, run
chmod +x ./CinnamonBun
in the terminal fromCinnamonBun.jar
’s home folder. - Type the command in the command box and press
Enter
to execute it. For example, typinghelp
and pressing Enter will open the help window.
Some example commands you can try:-
list
: Lists all clients. -
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
: Adds a client namedJohn Doe
to CinnamonBun. -
delete 3
: Deletes the 3rd client shown in the current list. -
clear
: Deletes all client records. -
undo
: Undo the last executed command. -
exit
: Exits the app.
-
- Refer to the commands below for details of each command.
Graphical User Interface (GUI) Overview
Commands
Command Syntax
Commands in CinnamonBun can be broken down into several components.
COMMAND_WORD PREAMBLE PREFIX/ARGUMENT...
Component | Description |
---|---|
COMMAND_WORD |
Trigger for the command to be executed. |
PREAMBLE |
Text before the first valid parameter prefix in the command. Certain commands may require a preamble. |
PREFIX |
Commands may have one or more arguments. The prefix specifies which arguments to map to the parameters. All prefixes end with a / . |
ARGUMENT |
The argument to pass to the command. |
Attention
- Commands and their arguments are case-sensitive
- 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 is specified 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
andclear
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
. - Any invalid parameters for commands will be regarded as part of the value of the preceding parameter. For example:
- In
addTransaction 1 a/123 td/2020-11-11 n/this is a note --not paid
,--not paid
will be regarded as part of the noten/this is a note --not paid
since--not paid
is not a valid attribute. - In
add n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 t/vendor c/not a prefix t/owesMoney
,c/not a prefix
will be regarded as part of the preceding tagt/vendor c/not a prefix
sincec/not a prefix
is not a valid attribute/prefix.
- In
User Guide Syntax
-
Words in
UPPER_CASE
are the arguments to be supplied by the user.
e.g. inadd n/NAME
,NAME
is an argument which can be used asadd n/John Doe
. -
Items in square brackets are optional.
e.gn/NAME [t/TAG]
can be used asn/John Doe t/friend
or asn/John Doe
. -
Items with
…
after them can be used zero or more times.
e.g.[t/TAG]…
can be used ast/friend
,t/friend t/family t/colleague
etc.
Fields and Tags
A client can have many fields and tags, including both optional and compulsory ones.
Attention
- Multiple clients can have the same data (e.g. same name, phone number, address, etc.), except emails. Emails must be unique to the client.
Field | Prefix | Constraints | Compulsory | Example |
---|---|---|---|---|
Name | n/ |
Alphanumeric and spaces only. | n/Regina Lee |
|
e/ |
Must be in username@domain.suffix format and unique to each client. Alphanumeric and special characters, +_.- only. |
e/lovelee@mailinator.com |
||
Phone | p/ |
Minimum 3 numeric characters. | p/81312224 |
|
Address | a/ |
No constraints. | a/123 Sesame Street |
|
Birthday | b/ |
Must be in YYYY-MM-DD format and a valid date. | b/2022-03-12 |
|
Remark | r/ |
No constraints. | r/Foreman of Project Zero Dawn. |
|
Tags | t/ |
Alphanumeric only. No spaces allowed. Multiple tags are allowed per client. |
t/Frequentclient t/AppointmentOverdue |
A transaction also have compulsory and optional fields.
Field | Prefix | Constraints | Compulsory | Example |
---|---|---|---|---|
Index | NO PREFIX | Must be an Integer greater than 0. | 1 |
|
Amount | a/ |
Must be a number between 0 and 9999999.99 inclusive. The number will be rounded to 2 decimal places. | a/12.45 |
|
Transaction Date | td/ |
Must be in YYY-MM-DD format and a valid date. | td/2020-11-11 |
|
Due Date | dd/ |
Must be in YYY-MM-DD format and a valid date and not before the transaction date. | dd/2020-11-11 |
|
Note | n/ |
No constraints. | n/2 Box of ice cream |
|
Status | NO PREFIX | Use --paid flag to set the transaction status to paid . Otherwise, the status is set to unpaid by default. |
--paid |
Command Summary
Action | Format, Examples |
---|---|
Help | help |
Add |
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]… e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague
|
Edit |
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [r/remark] [t/TAG]… e.g., edit 2 n/James Lee e/jameslee@example.com
|
Remark |
remark INDEX r/REMARK e.g., remark 5 r/Needs marble flooring delivered by next Tuesday.
|
Append | append INDEX r/REMARK b/BIRTHDAY e/wolololol@aoe.net t/senior |
Remove |
remove [r/] [b/] [t/TAG]… e.g., remove INDEX r/ b/
|
Delete |
delete INDEX e.g., delete 3
|
Clear | clear |
List | list |
Sort |
sort [n/] [desc] [p/] [desc] [e/] [desc] [a/] [desc] [r/] [desc] [b/] [desc] e.g., sort n/ desc p/ , sort b/ a/
|
Find |
find KEYWORD [MORE_KEYWORDS] e.g., find James Jake
|
Clear Filtered | clearFiltered |
Undo | undo |
Add Transaction | addTransaction INDEX a/AMOUNT td/TRANSACTION_DATE [dd/DUE_DATE] [n/NOTE] [--paid] |
List Transaction | listTransaction |
Find Transaction | findTransaction INDEX |
Delete Transaction | deleteTransaction INDEX_TRANSACTION |
Pay Transaction | pay INDEX_TRANSACTION |
Unpay Transaction | unpay INDEX_TRANSACTION |
Add Membership | addMembership INDEX m/TIER [d/DATE] |
Remove Membership | removeMembership INDEX |
List Members | listMembers [TIER] |
Exit | exit |
Getting Help (help
)
Opens a window that includes a link to this user guide.
Format: help
Add Client (add
)
Adds a client to CinnamonBun.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [r/REMARK] [b/BIRTHDAY] [t/TAG]…
Examples:
add n/Andy Lau p/98765432 e/andy_lau@example.com a/Pasir Ris Grove, Block 73, #02-38, Singapore 518206
add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal
Edit Client (edit
)
Edits an existing client in CinnamonBun.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [r/REMARK] [b/BIRTHDAY] [t/TAG]…
Info
- Edits the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
- At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- Note: Editing email value to an existing email in the addressBook is not allowed.
- When editing tags, the existing tags of the client will be removed i.e. adding of tags is not cumulative.
- You can remove all the client’s tags by typing
t/
without specifying any other tags. - You can also remove a client’s remarks by typing
r/
without anything else.
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.
Append Remark to Client (remark
)
Appends a remark to an existing client.
Format: remark INDEX r/REMARK
Info
- Edits the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
- You can also remove a client’s remarks by typing
r/
without anything else.
Append Fields to Client (append
)
Append fields to an existing client.
Format: append INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [r/REMARK] [b/BIRTHDAY] [t/TAG]…
Info
- Edits the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
- Fields and tags that did not previously exist in the client will be added. Fields and tags that already existed will be replaced.
- Unlike
edit
, typingt/
without anything else is invalid.
Remove Fields from Client (remove
)
Remove optional fields from an existing client.
Format: remove INDEX [r/] [b/] [t/TAG]…
Info
- Compulsory fields cannot be removed.
- Edits the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
- Unlike
edit
, typingt/
without anything else is invalid.
Delete Client (delete
)
Deletes a client in CinnamonBun.
Format: delete INDEX
Info
- Deletes the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
- When the client is deleted, all of its transactions are also deleted.
Examples:
-
list
followed bydelete 2
deletes the 2nd client in the client list. -
find Betsy
followed bydelete 1
deletes the 1st client in the results of thefind
command.
Delete All Data (clear
)
Clears all data from CinnamonBun.
Format: clear
List All Clients (list
)
Shows a list of all clients in CinnamonBun.
Format: list
Sort Client List (sort
)
Sorts the client list based on the order of the fields specified.
Format: sort [n/] [desc] [p/] [desc] [e/] [desc] [a/] [desc] [r/] [desc] [b/] [desc]
Info
- Fields that can be sorted:
- Name
n/
- Phone number
p/
- Email
e/
- Address
a/
- Birthday
b/
- Remark
r/
- Name
- At least one of the above fields must be specified.
- Specifying
desc
after a field will sort it in descending order. By default, fields are sorted in ascending order. - The fields are to be specified in their prefix. They can be specified in any order, however, priority will be given based on the order specified.
- Clients with null values in the fields to be sorted will have lesser priority.
- For example
sort n/ b/
, ‘Alice’ will be at the top of the list. However, if there are multiple clients with the same name ‘Alice’, the client whose birthday field is empty, will be sorted to the bottom of the other clients named ‘Alice’.
- For example
- After sorting, the application will show the full client list, regardless if it was filtered beforehand or not. This is to prevent confusion where users filter first, then sort and realized some data is ‘missing’ as they had unintentionally filtered it out.
Examples:
-
sort n/ desc p/
: Clients will be sorted in descending order of their name. Clients with the same name will be then sorted based on their phone numbers in ascending order. -
sort b/ a/
: Clients will be sorted in ascending order of their birthday. Clients with the same birthday will then be sorted based on their addresses in ascending order.
Find Client by Keyword (find
)
Finds clients whose attributes contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
Info
-
find
always searches all clients and not filtered clients. - The search is case-insensitive.
- The order of the keywords does not matter. e.g.
find Hans Bob
will work the same asfind Bob Hans
. - Partial matches are allowed e.g.
find Bob
will match a client namedBobs
. - Clients with attributes or tags matching at least one keyword will be returned (i.e.
OR
search).
Examples:
-
find bob
returns clients with attributes containingbob
e.g. clients namedSponge Bob
andBobs Doe
-
find kent ridge
returns clients with attributes containingkent
orridge
. e.g. A client namedClark Kent
and a client who lives at123 Ridgeview Cres
.
Clear Filtered Clients (clearFiltered
)
Deletes the clients filtered after using the find
function.
Format: clearFiltered
Info
-
clearFiltered
deletes all the clients shown in the filtered client list. - Use
find
to filter the clients to delete. - Alternatively, use
listMembers
to filter clients by membership to delete. - Otherwise, if the client list is not filtered, it acts like
clear
. - When the client is deleted, all of its transactions are also deleted.
Examples:
-
find Bob
followed byclearFiltered
deletes all people named Bob. Alternatively,find Bob | clearFiltered
does the same thing. -
listMembers
followed byclearFiltered
deletes all people with a membership. -
listMembers gold
followed byclearFiltered
deletes all people with a gold membership.
Add Transaction (addTransaction
)
Add a transaction associated with a client.
Format: addTransaction INDEX a/AMOUNT td/TRANSACTION_DATE [dd/DUE_DATE] [n/NOTE] [--paid]
Info
- Add a transaction to the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
- The
AMOUNT
specified must be between 0 and 9999999.99 inclusive. The number will be rounded to two decimal places. - The
TRANSACTION_DATE
andDUE_DATE
specified must be a valid date inYYY-MM-DD
format. - The flag
--paid
will set the transaction status topaid
Examples:
addTransaction 1 a/123.456 td/2020-11-11
addTransaction 1 a/123.456 td/2020-11-11 dd/2020-12-11 n/Unpaid order CONTACT ASAP --paid
-
find Bob | addTransaction 1 a/123.456 td/2020-11-11
will add the transaction to the first client that contains Bob in its’ attributes
List All Transactions (listTransaction
)
List all the clients’ Transactions.
Format: listTransaction
Examples:
listTransaction
Find Client’s Transaction (findTransaction
)
List all the transactions associated with a client.
Format: findTransaction INDEX
Info
- List all transactions of the client at the specified
INDEX
. - The index refers to the index number shown in the displayed client list.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
Examples:
-
find Bob | findTransaction 1
will list the transactions of the first client that contains Bob in its’ attributes.
Delete Transaction (deleteTransaction
)
Delete a transaction.
Format: deleteTransaction INDEX_TRANSACTION
Info
- Delete the transaction at the specified
INDEX_TRANSACTION
. - The index refers to the index number shown in the displayed transaction list NOT the client list.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
Examples:
deleteTransaction 2
-
findTransaction 1 | deleteTransaction 1
will delete the first transaction of the first client.
Pay Transaction (pay
)
Set the status of a transaction to paid
.
Format: pay INDEX_TRANSACTION
Info
- Set the status of the transaction at the specified
INDEX_TRANSACTION
topaid
. - The index refers to the index number shown in the displayed transaction list NOT the client list.
- The index must be a positive integer e.g. 1, 2, 3, …
Examples:
pay 2
-
findTransaction 1 | pay 1
will set the first transaction of the first client topaid
Unpay Transaction (unpay
)
Set the status of a transaction to unpaid
.
Format: unpay INDEX_TRANSACTION
Info
- Set the status of the transaction at the specified
INDEX_TRANSACTION
tounpaid
. - The index refers to the index number shown in the displayed transaction list NOT the client list.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
Examples:
unpay 2
-
findTransaction 1 | unpay 1
will set the first transaction of the first client tounpaid
Add Membership (addMembership
)
Adds a membership to a specified user.
Format: addMembership INDEX m/TIER [d/Date]
Info
- Adds a membership to the specified
INDEX
. - If the user already has an existing membership, the membership is overwritten.
- The index refers to the user at the index number displayed.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
- The tier can be either Bronze,Silver or Gold. This is not case-sensitive.
- The date has to be in the format ‘YYYY-MM-DD’
Examples:
addMembership 1 m/Gold d/2022-02-02
-
find Bob | addMembership 1 m/Silver
will add the silver membership to the first client that has Bob in its’ attributes.
Remove Membership (removeMembership
)
Removes a membership from the specified user.
Format: removeMembership INDEX
Info
- Removes a membership from the specified
INDEX
. - The index refers to the user at the index number displayed.
- The index must be between 1 and 2147483647 inclusive. e.g. 1, 2, 3, …
- If the user has no membership, it simply does nothing.
Examples:
removeMembership 1
-
find Bob | removeMembership
remove the membership from the first client that has Bob in its’ attributes.
List Members (listMembers
)
List all members belonging to the specified tier.
Format: listMembers [TIER]
Info
- Lists all members belonging to the specified TIER.
- The tier is optional. If no tier is specified, it simply lists all members.
- The tier can be either Bronze,Silver or Gold. This is not case-sensitive.
Examples:
-
listMembers gold
list all users with gold membership. -
addMembership 2 m/silver | listMembers
will add the silver membership to the second client displayed and then list all existing members.
Undo Last Modification (undo
)
Undo last modification made to the clients list.
Format: undo
Info
- Saves your latest 10 modifications to the clients or the clients list.
- If the previous command have multiple modifications through command chains, it is counted as one modification.
- Calling undo will show the entire list, regardless of whether you filtered the list previously. (Filtering through the Find command is not considered a modification)
Types of modification that will be undone:
Exit Program (exit
)
Exits the program.
Format: exit
Special Features
Command Chains
Multiple commands can be chained by separating each command with the |
character.
Info
- Each command is run sequentially from first to last.
- Take note of indexes. E.g.
delete 7 | delete 8
may not work as expected as deleting item 7 will in turn cause item 8 to become item 7 which may result in unintended consequences. Instead, rundelete 7 | delete 7
which is what you would do anyway if you wanted to achieve the same effect by running each command individually. This is intended behaviour. - If invalid commands and the special commands
help
,exit
andundo
are found anywhere in the command chain, the whole chain will be invalidated causing none of the commands in the chain - even valid commands - to execute. - Anything bounded by the start of the command, the end of command and the
|
separators will be considered a command. E.g.find alex | clearFiltered |
will be considered three commands, namely “find alex”, “clearFiltered” and “ “. Since the third command, “ “, is empty and thus invalid, the first two will not execute. - The user will only receive the command feedback of the last command. E.g. Running
delete 2 | add n/John p/81234567 e/john@email.com a/42 Doe St
will only showAdded John.
in the result box.
Examples:
- Valid command chain:
add n/John p/81234567 e/john@email.com a/42 Doe St | edit 5 p/999 | delete 2
- Invalid command chains:
add n/John p/81234567 e/john@email.com a/42 Doe St | invalidCommand | delete 2
(add and delete commands will not execute as an invalid command was found)
add n/John p/81234567 e/john@email.com a/42 Doe St | delete 2 | undo
(add and delete commands will not execute as a special command, in this case undo
, was found)
add n/John p/81234567 e/john@email.com a/42 Doe St |
(add command will not execute as the second command is empty and is thus invalid)
Command History
You can navigate through your command history by using the up and down arrow keys. The command history works similarly to the Linux bash terminal.
Clickable Client Card
You can list all transactions of a client by left-clicking the client’s card.
This is equivalent to typing findTransaction INDEX
in the command box. Left-clicking a selected client card will deselect that card and list all transactions. Up to one client card can be selected at anytime.
Themes
You can change between the light or dark theme by click on the menu bar and selecting Theme > Cinnamon
or Theme > Caramel
.
Command Correction/Completion
Pressing TAB
while typing a command will change the last word of the command into the closest command word.
Examples:
-
dele
->delete
-
sddTranssaction
->addTransaction
-
delete 7 | ed
->delete 7 | edit
Save Data
CinnamonBun’s data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
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 CinnamonBun home folder.
Q: Why is this named CinnamonBun?
A: Because we like Cinnamon Buns.