User Guide
ClientEase User Guide
ClientEase is a lightweight customer contact manager designed for tech-savvy home-based online business owners who manage a small to medium customer base, perform frequent daily updates to customer contact information, and prefer fast, command-line-style text input over GUI-driven interactions.
Instead of clicking through multiple menus, ClientEase lets you type short commands to add customers, search by fields, track products and deadlines, and retrieve information instantly, keeping your records organised without the overhead of full-scale business management systems.
- If you are new to ClientEase, start with the Quick Start section.
- If you are looking for a specific command, jump to the Command Summary.
- If you are a developer, refer to the Developer Guide.
Table of Contents
- Who Is This Guide For?
- Quick Start
- Features
- Saving the Data
- Editing the Data File
- FAQ
- Known Issues
- Command Summary
- Glossary
Who Is This Guide For?
ClientEase is built for home-based online business owners who:
- Manage a small to medium customer base (typically under a few hundred contacts)
- Perform frequent daily updates to customer information, such as new orders, contact changes, or delivery deadlines
- Prefer keyboard-driven workflows over clicking through menus
This guide assumes you are comfortable with:
| Assumed Skill | What It Means in Practice |
|---|---|
| Basic terminal use | Opening a terminal, using cd to navigate folders, running java -jar commands |
| Simple command syntax | Typing structured commands like add name/John Doe contact/98765432 |
| Reading on-screen feedback | Interpreting short success or error messages shown in the app |
| Basic data awareness | Understanding that your data is stored in a local file, and knowing to back it up |
Not sure if ClientEase is right for you? If you manage more than a few hundred customers with complex team workflows, you may want a full-scale CRM instead.
Quick Start
Installation
- Ensure you have Java 17 or above installed. Verify by running:
java -versionMac users: Ensure you have the precise JDK version prescribed here.
-
Download the latest
clientease.jarfile from the releases page here. -
Move the file to a folder you want to use as your home folder (e.g.,
~/ClientEase/). - Open a terminal and navigate to that folder:
cd ~/ClientEase - Run the application:
java -jar clientease.jarClientEase will launch with a set of sample customer data so you can explore right away.
Overview of the Interface

| Area | Purpose |
|---|---|
| Command Box (top) | Where you type your commands. |
| Result Display (below command box) | Shows success messages or error feedback after each command. |
| Customer List Panel | Displays all customers. Cards are color-coded by Priority Level (Green/Yellow/Red) based on total product quantity when products are provided. |
| Priority Badge | A small tag (LOW, MEDIUM, HIGH) shown next to the name when the customer has products. |
| Status Bar (bottom) | Shows the data file save location. |
Your First Commands
Here is a short walkthrough to get familiar with ClientEase. Try each command by typing it into the command box and pressing Enter.
Step 1 - See what’s already in the app:
list
Expected output: All sample customers are shown in the Customer List Panel.
Step 2 - Add your first real customer:
add name/Jane Tan contact/91234567;jane@mybusiness.com products/Chocolate Cake:2, Muffin:5 location/Tampines deadline/2025-12-31
Expected output: Added Customer: Jane Tan
Step 3 - Find a customer by name:
find Jane
Expected output: Only customers whose name matches “Jane” are shown.
Step 4 - Update a customer’s contact details:
edit 1 contact/99887766
Expected output: The first customer’s contact details are updated.
Step 5 - Delete a customer:
delete 1
Expected output: The 1st customer in the list is deleted.
Step 6 - Exit the app:
exit
Expected output: Goodbye! Exiting ClientEase. You have <N> customer(s) saved.
[!TIP] All your data is saved automatically after every command. You never need to press a “Save” button.
Features
Notes on Command Format
Read this before using any command.
- Words in
UPPER_CASEare parameters you supply. For example, inadd name/NAME, replaceNAMEwith the actual name, e.g.add name/John Doe. - Items in
[square brackets]are optional. For example,name/NAME [contact/CONTACT]can be used with or without a contact. - Parameters can be entered in any order. For example,
add name/John Doe contact/98765432is the same asadd contact/98765432 name/John Doe. - Commands that take no parameters (e.g.
help,list,exit) will ignore any extra text you type after them. - If you are using a PDF version of this guide, be careful when copying multi-line commands — line breaks may cause spaces to be omitted.
Viewing Help : help
Opens a help window that provides a quick overview of available commands and a link to the full User Guide.

Format: help
Notes
- The help window does not block the main application — you can continue using ClientEase while it is open.
- If the help window is already open, running
helpagain will focus on the existing window. - Command ignore extra space
[!TIP] Use the help window as a quick reference when you forget command formats, instead of searching through the full guide.
Adding a Customer : add
Adds a new customer record to ClientEase.
Format:
add name/NAME [products/PRODUCTS] [location/LOCATION] [deadline/DEADLINE] [contact/CONTACT]
Parameter details:
| Parameter | Required? | Notes |
|---|---|---|
name/NAME |
Yes | 1-100 characters after trimming and space normalisation. Only ASCII letters (A-Z), spaces, ., ', and -. Must contain at least one letter. Names are unique case-insensitively and with repeated spaces collapsed. |
products/PRODUCTS |
No | Comma-separated list of product names from the product catalog. There is no fixed limit on the number of product names, but quantities must not exceed 10,000 per product or 100,000 in total. Items can optionally include a quantity using a colon (e.g., Muffin:3); if omitted, quantity defaults to 1. Matching is case-insensitive and spaces are normalised. Empty items are invalid. Duplicate product names are allowed and their quantities are summed. Use product add to create products before referencing them. |
location/LOCATION |
No | Non-blank after trimming. Maximum length 200 characters. |
deadline/DEADLINE |
No | Accepted formats: yyyy-MM-dd HH:mm, yyyy-MM-dd, dd/MM/yyyy (24-hour time). Entries without a time default to 23:59. |
contact/CONTACT |
No | Semicolon-separated entries. Each entry must be either an 8-digit local phone number or an international phone in +<2-3 digit country code><1-12 digit number> format; spaces in phone numbers are ignored. Emails are up to 100 characters, must start with an alphanumeric character, contain only letters, digits, dots, and hyphens, and contain exactly one @ with an alphanumeric at the start of the domain. Entries are stored with phone spaces removed and emails lowercased, then sorted. Empty entries (e.g. trailing or double ;) are invalid. |
[!IMPORTANT] Priority Tagging: ClientEase automatically tags customers with a priority color based on the total quantity of products:
- Green (Low): 1–5 total items
- Yellow (Medium): 6–10 total items
- Red (High): 11 or more total items
- No priority tag is shown if the customer has no products.
Other constraints:
- Shorthands
n/,p/,l/,d/, andc/are accepted. - Each prefix can appear at most once.
- Unrecognised
<word>/prefixes are rejected. - Optional fields can be omitted.
- For optional fields, if a prefix is provided with no value (e.g.
products/), the field is treated as empty. - Non-ASCII characters (e.g. Chinese) are rejected in
name/andcontact/.products/values must match product names already in the product catalog (case-insensitive, spaces normalised). Product names cannot contain,or:.location/accepts any characters as long as it is non-blank and within the length limit.
[!WARNING] If you try to add a customer with a name that already exists (case-insensitive, spaces normalised), ClientEase will reject the entry and display an error. Check the existing list with
listbefore adding.
Products are shown as a bulleted list with quantities (e.g., - Muffin (x2)). If no products are provided, the card shows Products: None.
Examples:
add name/John Doe contact/98765432;johnd@example.com products/Chocolate Cake:2, Muffin:5 location/Clementi Ave 2 deadline/2025-12-31
Adds a customer named John Doe, with two unique products with specified quantities, a location, a deadline of 31 Dec 2025 at 23:59, and two contact details.
add name/Sarah Lim
Adds a customer named Sarah Lim with no other details. You can edit to fill in the rest later.
Listing All Customers : list
Shows a list of all persons in ClientEase.
Format: list
Managing Products : product
Manages the product catalog used by add and edit.
Formats:
product add product/NAME (or p/NAME)
product delete product/NAME (or p/NAME)
product list
Notes:
- Product names are case-insensitive with spaces normalised.
- Product names must be non-blank and cannot contain
,or:. - You cannot delete a product if any customer is currently using it.
productcommands, subcommands, and theproduct/orp/prefix are case-insensitive.product listshows products in alphabetical order.- If the catalog is empty,
addandeditwill reject anyproducts/input and show “(no products in catalog)” in the allowed list.
Examples:
product add product/Muffinproduct delete p/Muffinproduct list
Editing a Customer : edit
Edits an existing person in ClientEase.
Format:
edit INDEX [name/NAME] [products/PRODUCTS] [location/LOCATION] [deadline/DATE] [contact/CONTACT]
Short prefixes are supported: n/ for name/, p/ for products/, l/ for location/, d/ for deadline/, and c/ for contact/.
- Edits the person at the specified
INDEX. The index refers to the index number shown in the displayed person list. The index 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.
- Products follow the same constraints as
add.
Examples:
edit 1 contact/91234567— Edits the contact of the 1st person to be91234567.edit 2 name/Betsy Crower products/Muffin location/Newgate Prison— Edits the name, products, and location of the 2nd person.
Locating Customers : find
Finds persons whose names contain any of the given keywords.
Format:
find KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g.
hanswill matchHans. - The order of the keywords does not matter. e.g.
Hans Bowill matchBo Hans. - The name, contact and location of each users will be searched.
- For name and contact, only full words will be matched. e.g.
Hanwill not matchHans. - For location, words containing the keyword will be matched. e.g.
gatewill matchNewgate. - Persons matching at least one keyword will be returned (i.e.
ORsearch). e.g.Hans Bowill returnHans Gruber,Bo Yang.
Examples:
find JohnreturnsjohnandJohn Doefind alex davidreturnsAlex Yeoh,David Li

Deleting a Customer : delete
Deletes a customer from ClientEase using either their displayed index or exact name.
Format:
delete INDEX
- Deletes the person at the specified
INDEX. - The index refers to the index number shown in the displayed person list.
- The index must be a positive integer 1, 2, 3, …
Examples:
listfollowed bydelete 2deletes the 2nd customer in ClientEase.find Betsyfollowed bydelete 1deletes the 1st customer in the results of thefindcommand.
delete NAME
- Deletes the customer with the given
NAME. - Matching is case-insensitive and ignores extra spaces.
Examples:
delete John Doedelete john doedelete John Doe [extra space]All delete the same customer ‘John Doe’
Clearing All Customers : clear
Clears all entries from ClientEase.
Format: clear
[!WARNING] This action is irreversible and will permanently delete all customer records. Consider backing up
data/ClientEase.json(see Saving the Data) before running this command.
Exiting the App : exit
Exits the program after displaying a farewell message with the current customer count.
Format: exit
- A farewell message will be displayed:
Goodbye! Exiting ClientEase. You have <N> customer(s) saved. - The app will close automatically after a short delay.
Saving the Data
ClientEase automatically saves your data to disk after every command that changes data. There is no Save button and no need to save manually.
Your data is stored at:
[home folder]/data/ClientEase.json
Editing the Data File
Advanced users may edit the data file directly using any text editor.
[!CAUTION] If your changes to the data file makes its format invalid, ClientEase 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 ClientEase 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.
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 ClientEase home folder.
Q: Can I have two customers with the same name?
A: No. ClientEase treats names as unique identifiers (case-insensitive, spaces normalised). If two customers share a
name, consider differentiating them, e.g. John Doe (Clementi) and John Doe (Tampines).
Known Issues
-
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.jsonfile created by the application before running the application again. -
If you minimize the Help Window and then run the
helpcommand (or use theHelpmenu, or the keyboard shortcutF1) 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.
Command Summary
| Action | Format | Example |
|---|---|---|
| Help | help |
help |
| Add | add name/NAME [products/PRODUCTS] [location/LOCATION] [deadline/DEADLINE] [contact/CONTACT] |
add name/John Doe contact/98765432;johnd@example.com products/Chocolate Cake:5 deadline/2025-12-31 |
| Product Add | product add product/NAME (or p/NAME) |
product add product/Muffin |
| Product Delete | product delete product/NAME (or p/NAME) |
product delete p/Muffin |
| Product List | product list |
product list |
| List | list |
list |
| Edit | edit INDEX [name/NAME] [products/PRODUCTS] [location/LOCATION] [deadline/DATE] [contact/CONTACT] |
edit 2 name/James Lee contact/jameslee@example.com |
| Find | find KEYWORD [MORE_KEYWORDS] |
find James Jake |
| Delete | delete INDEX |
delete 3 |
| Clear | clear |
clear |
| Exit | exit |
exit |
[!TIP] Shorthand Prefixes: For the
addandeditcommands, you can use shorter versions of the prefixes to save time:
n/instead ofname/p/instead ofproducts/l/instead oflocation/d/instead ofdeadline/c/instead ofcontact/Example:
add n/John Doe p/Muffinis equivalent toadd name/John Doe products/Muffin.
Glossary
| Term | Definition |
|---|---|
| CLI | Command Line Interface - a text-based way of interacting with software by typing commands |
| GUI | Graphical User Interface - the visual window of the app |
| Customer | A record representing a person who has placed or may place an order with your business |
| Command | A text instruction you type into the command box to perform an action |
| Parameter | A piece of information supplied alongside a command, e.g. name/John Doe |
| Prefix | The short label before a parameter value, e.g. name/, products/, contact/ |
| Index | The 1-based number shown beside each customer in the displayed list |
| Deadline | A date (and optional time) representing when an order is due |
| Contact | Consolidated contact details (phone and/or email) for a customer, separated by semicolons |
| Product | An item from the product catalog associated with a customer’s order, listed under Products |
| Home folder | The folder where clientease.jar and the data/ directory are stored |
| JSON file | The data file (ClientEase.json) where ClientEase stores all customer records |