User Guide
Introduction
A warm welcome to all home bakers to our Strack.io User Guide! Strack.io is designed to cater to all your needs, be it creating your menu, recording of customer information, or even tracking of orders. Strack.io aims to help you reduce the number of errors and improve your overall quality of life when tracking and managing orders. Here, you will find all the necessary information you need to kickstart your Strack.io journey. Don’t forget to make snacks, keep track, and use Strack!
Purpose
This User Guide serves both as a tutorial and as an instruction manual to our Strack.io application. To start learning using our app, you can take a look at the Quick Start section, and try out the different commands for yourself. If you are not sure about the format of any command, you can refer to the Features section for a detailed explanation. At the end of this User Guide, we have also provided a glossary of terminologies and a succinct list of commands for your easy reference during daily usage.
As you read through this user guide, you will learn about:
- How to use different commands provided by our app, illustrated by comprehensive examples
- Constraints of input format in order for our app to run normally
- Auxiliary capabilities of Strack.io application, including saving and exportation of data.
Overview
Strack.io is a desktop app for home bakers to manage contacts of their customers, 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, Strack.io can get your customer and order management tasks done faster than traditional GUI apps.
- Introduction
- Purpose
- Overview
- Quick start
-
Features
- Viewing help:
help
- Adding a product to the menu:
menu
- Editing a product on the menu:
edit
- Deleting a product from the menu:
delete
- Adding a customer:
add
- Listing all customers and orders:
list
- Editing a customer:
edit
- Locating customers and orders:
find
- Deleting a customer:
delete
- Creating of orders:
order
- Adding of products to order:
product
- Editing of orders:
edit
- Editing of an order’s deadline:
edit
- Staging of orders:
stage
- Completing of orders:
complete
- Cancelling of orders:
cancel
- Clearing all entries:
clear
- Exiting the program:
exit
- Saving the data
- Editing the data file
- Viewing help:
- FAQ
- Known issues and constraints
- Glossary
- Command summary
Quick start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
strackio.jar
from here. -
Copy the file to the folder you want to use as the home folder for Strack.io.
-
Open a command terminal,
cd
into the folder you put the jar file in, and use thejava -jar strackio.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.
Some example commands you can try:-
list
: Lists all customers and orders. -
menu pn/Cupcake pc/2 ps/5
: Adds a product namedCupcake
to the menu. -
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
: Adds a contact namedJohn Doe
to the customer list. -
delete c/3
: Deletes the 3rd contact shown in the current customer list. -
clear
: Deletes all customers contacts, orders and products in Strack.io. -
exit
: Exits the app.
-
-
Refer to the Features below for details of each command.
Features
Notes about the command format:
-
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. -
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
. -
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.
Viewing help: help
You can show a message explaining how to access the help page.
Format: help
Adding a product to the menu: menu
You can start off by adding a product to be displayed on the product menu.
Format: menu pn/PRODUCT_NAME pc/PRODUCT_COSTS ps/PRODUCT_SALES
-
PRODUCT_COSTS
refer to the costs incurred to make the product. -
PRODUCT_SALES
refer to how much the product is being sold for. -
PRODUCT_NAME
refer to the name of the product being sold. - The order of which
pc/PRODUCT_COSTS
,ps/PRODUCT_SALES
orpn/PRODUCT_NAME
is being input does not matter. - Decimals are supported.
Example:
-
menu pn/Cupcake pc/1 ps/3.50
adds the productCupcake
to the menu.
Editing a product on the menu: edit
You can edit an existing product on the product menu.
Format: edit m/MENU_ID [pn/PRODUCT_NAME] [pc/PRODUCT_COSTS] [ps/PRODUCT_SALES]
- Edits the product of the specified
MENU_ID
. TheMENU_ID
refers to the number reflected on the product menu beside the product name. TheMENU_ID
must be a positive integer 1, 2, 3, … - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
Editing a product on the menu will not update the products on existing orders.
Example:
-
edit m/1 pn/Pie
Edits the product name of the product withMENU_ID
of1
to bePie
.
Deleting a product from the menu: delete
You can delete the specified product from the menu.
Format: delete m/MENU_ID
- Deletes the product of the specified
MENU_ID
. - The
MENU_ID
refers to the number reflected on the product menu beside the product name. - The
MENU_ID
must be a positive integer 1, 2, 3, …
Example:
-
delete m/1
deletes the product on the menu with aMENU_ID
of1
.
Adding a customer: add
You can add a customer to Strack.io.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…
- Names must be unique.
Adding two customers with the same name, will result in future order creation to be tagged to the first customer added with the same phone number.
Examples:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal
Listing all customers and orders: list
You can show a list of all customers and orders in your address book.
Format: list
Editing a customer: edit
You can edit an existing customer in your address book.
Format: edit c/CUSTOMER_ID [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…
- Edits the person of the specified
CUSTOMER_ID
.CUSTOMER_ID
refers to the number shown beside the customer’s name.CUSTOMER_ID
must be a positive integer 1, 2, 3, … - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing tags, the existing tags of the customer will be removed i.e. adding of tags is not cumulative.
- You can remove all the person’s tags by typing
t/
without specifying any tags after it.
Examples:
-
edit c/1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the person withCUSTOMER_ID
of1
to be91234567
andjohndoe@example.com
respectively. -
edit c/2 n/Betsy Crower t/
Edits the name of the person withCUSTOMER_ID
of2
to beBetsy Crower
and clears all existing tags.
Locating customers and orders: find
You can find customers based on name, phone number, address or email and find orders based on ORDER_ID
in Strack.io.
Format: find [n/NAME] [a/ADDRESS] [p/PHONE_NUMBER] [e/EMAIL] [o/ORDER_ID]
- The search is case-insensitive. e.g.
hans
will matchHans
. - The order of the keywords does not matter. e.g.
Hans Bo
will matchBo Hans
. - At least one of the optional fields must be provided and only choose one field.
- You can add different keywords for one chosen field and customers with any matching keyword will be included.
- Only full words will be matched e.g.
Han
will not matchHans
. - Persons matching at least one of the specified information will be returned (i.e.
OR
search).
Examples: -
n/Hans n/Bo
will returnHans Gruber
,Bo Yang
Examples:
-
find n/John
returnsjohn
andJohn Doe
. -
find n/alex n/John
returnsAlex
,john
andJohn Doe
.
-
find a/Lorong
returns customers with address that includesLorong
. -
find p/85012345 p/12345678
returns customers with phone number of85012345
and12345678
. -
find o/4 o/6
returnsOrder 4
andOrder 6
.
Deleting a customer: delete
You can delete the specified customer from Strack.io.
Format: delete c/CUSTOMER_ID
- Deletes the customer of the specified
CUSTOMER_ID
. - The
CUSTOMER_ID
refers to the number shown beside the customer name in the displayed customer contact. - The
CUSTOMER_ID
must be a positive integer 1, 2, 3, …
Examples:
-
list
followed bydelete c/2
deletes the person withCUSTOMER_ID
of2
in the address book. -
find Betsy
followed bydelete c/1
deletes the person withCUSTOMER_ID
of1
in the results of thefind
command.
Creating of orders: order
Now that you have some customers and a product menu set up, you can now create and assign an order to a specified customer in Strack.io.
Format: order p/PHONE_NUMBER [by/DEADLINE]
- Orders are assigned to person with specified
PHONE_NUMBER
. - There must be existing customers in the customer list and products in the menu.
-
DEADLINE
is an optional fields that is used to keep track of an order’s deadline. -
- The format for deadline dates are dd/MM/yyyy.
- For single digit days or months, please precede them with a zero.
- Leaving
DEADLINE
blank will make the order’s deadline marked asNot Specified
. - Strack.io will prompt users to input products using the product command.
- Follow up with products to be added to the order using the following format. Format:
product m/MENU_ID pq/PRODUCT_QUANTITY
. - You can refer to the menu for the
MENU_ID
, i.e.1. Cupcake
MENU_ID
is1
. - This can be repeated as many times as necessary.
Examples:
-
order p/87438807 by/08/04/2024
will create an order for person with phone number87438807
with a deadline08/04/2024
, start adding products for the order to be shown.
Adding of products to order: product
You can add products on the menu into the most recently created order.
Format: product m/MENU_ID pq/PRODUCT_QUANTITY
- You can refer to the menu for the
MENU_ID
, i.e.1. Cupcake
MENU_ID
is1
. - This can be repeated as many times as necessary within one session of using Strack.io.
- This means closing Strack.io will no longer allow you to add products to the order you created previously.
Examples:
- Assuming you have already created an order in this session for the phone number
87438807
, usingproduct m/1 pq/2
andproduct m/2 pq/2
will add products corresponding toMENU_ID
1 and 2 in the menu, in this example it would becupcakes
andcookies
respectively.
Editing of orders: edit
You can edit an existing order of a customer in Strack.io.
Format: edit o/ORDER_ID m/MENU_ID pq/PRODUCT_QUANTITY
-
ORDER_ID
is a unique number for each order. -
ORDER_ID
refers to the number shown under order id in the displayed customer’s contact or the order number in the order list - Products are edited based on
MENU_ID
. - To remove product from order, specify
PRODUCT_QUANTITY
as0
.
Example:
-
edit o/4 m/3 pq/10
will edit the order withORDER_ID
of4
and change the product associated withMENU_ID
of3
which istarts
quantity to10
.
Editing of an order’s deadline: edit
You can edit the deadline of an existing order of a specific customer in Strack.io.
Format: edit o/ORDER_ID by/DEADLINE
-
ORDER_ID
is a unique number for each order. -
ORDER_ID
refers to the number shown under order id in the displayed customer’s contact or the order number in the order list - The format for deadline is dd/MM/yyyy
Example:
-
edit o/1 by/07/04/2024
oredit o/1 by/12/10/2024
will edit the deadline of the order withOrder_ID
of1
to07/04/2024
or12/10/2024
respectively.
Staging of orders: stage
You can move an order to the next stage, in the chain of the four stages defined by Strack.io, in order namely:
Under Preparation
, Ready for Delivery
, Sent for delivery
and Received by customer
.
However, you cannot go back to a previous stage.
Format: stage o/ORDER
-
ORDER_ID
is a unique number for each order. - Any order just created will be in
Under Preparation
stage.
Example:
- Suppose the order with
ORDER_ID
1 is in initialUnder Preparation
stage.
- Running
stage o/1
once will move the order withORDER_ID
1 toReady for Delivery
.
- Running
stage o/1
three or more times will move the order withORDER_ID
1 toReceived by customer
.
Completing of orders: complete
You can demarcate an order in Strack.io as complete. Strack.io will collate completed orders into a csv file.
The csv file can be accessed in this directory: [JAR file location]/data/completedorders.csv
Format: complete ORDER_ID
-
ORDER_ID
is a unique number for each order. -
ORDER_ID
can accept multiple, uniqueORDER_ID
to be marked as completed as shown in the example below. -
ORDER_ID
with at least one non-validORDER_ID
value will be invalid.
Example:
-
complete 1 2 3
will complete orders withORDER_ID
s of1
,2
and3
.
- This would be collated in the csv file in this directory:
[JAR file location]/data/completedorders.csv
Cancelling of orders: cancel
You can remove an ongoing order in your address book. Orders removed using cancel
will not be logged into
completedorders.csv
.
Format: cancel ORDER_ID
-
ORDER_ID
is a unique number for each order.
Example:
-
cancel 3
will cancel order withORDER_ID
of3
.
Clearing all entries: clear
You can clear all entries from Strack.io.
Format: clear
Exiting the program: exit
You can exit the program using a command.
Format: exit
Saving the data
Strack.io 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
Strack.io 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.
Furthermore, certain edits can cause Strack.io to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
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 Strack.io home folder.
Known issues and constraints
-
When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the
preferences.json
file created by the application before running the application again. - Constraint on number of customers, menu items and orders: <= 1 billion, which should be sufficient for almost all homemade bakers. Our app might be unable to handle numbers larger than that.
- Some fields, such as names of customers, are not wrapped in GUI. You can drag the window wider to see full text, which should be sufficient to accommodate almost all common names.
- Customer Names can only contain alphanumeric characters. If the name involves slashes or special alphabets, you have to use an alternative, such as using double space in place of slash.
- Error Messages and suggestions may not always be given in the most straight-forward way, often because slashes in commands may be interpreted in a few different ways. Refer to the user guide if you think error messages and suggestions shown in the app are unclear.
Glossary
Command summary
Action | Format, Examples |
---|---|
Help | help |
Add product to menu |
menu pn/PRODUCT_NAME pc/PRODUCT_COSTS ps/PRODUCT_SALES e.g., menu pn/cupcake pc/5 ps/10
|
Edit product on menu |
edit m/MENU_ID [pn/PRODUCT_NAME] [pc/PRODUCT_COSTS] [ps/PRODUCT_SALES] e.g., edit m/1 pc/20
|
Delete product on menu |
delete m/MENU_ID e.g., delete m/1
|
Add customer |
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
|
List all contacts and orders | list |
Edit customer |
edit c/CUSTOMER_ID [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]… e.g., edit c/2 n/James Lee e/jameslee@example.com
|
Find customer/order |
find [n/NAME] [p/PHONE_NUMBER] [a/ADDRESS] [e/EMAIL] [o/ORDER_ID] e.g., find n/James n/Jake find o/1
|
Delete customer |
delete c/CUSTOMER_ID e.g., delete c/3
|
Create order |
order p/PHONE_NUMBER [by/DEADLINE] e.g., order p/22224444 by/02/04/2024
|
Add product to order |
product m/MENU_ID pq/PRODUCT_QUANTITY e.g., product m/1 pq/10
|
Edit order |
edit o/ORDER_ID m/MENU_ID pq/PRODUCT_QUANTITY e.g., edit o/1 m/1 pq/10
|
Edit order deadline |
edit o/ORDER_ID by/DEADLINE e.g., edit o/1 by/02/04/2024
|
Stage order |
stage o/ORDER_ID e.g., stage o/1
|
Complete order |
complete ORDER_ID e.g., complete 1
|
Cancel order |
cancel ORDER_ID e.g., cancel 1
|
Clear | clear |
Exit | exit |