By: Team F09-1
Welcome to the Coupon Stash User Guide! Thank you so much for choosing Coupon Stash, the world’s most popular command-line coupon management desktop application*!
This guide will help you get started quickly, providing useful tips and hints along the way.
*as of April 2020
Contents | Section Number |
---|---|
Introduction |
1 |
About This Document |
2 |
Quick Start |
3 |
User Interface |
4 |
Features
|
5 |
Keyboard Shortcuts
|
6 |
FAQ |
7 |
Command Summary |
8 |
Appendix |
9 |
Hi! I’m Stasher, the mascot of Coupon Stash. Together, we are going to save so much money! Let me guide you to use this wonderful application.
- 1. Introduction
- 2. About This Document
- 3. Quick Start
- 4. User Interface
- 5. Features
- 5.1. Adding a coupon:
add
- 5.2. Editing a coupon:
edit
- 5.3. Deleting a coupon:
delete
- 5.4. Listing coupons:
list
- 5.5. Using a coupon:
used
- 5.6. Viewing savings:
saved
- 5.7. Archiving a coupon:
archive
- 5.8. Unarchiving a coupon:
unarchive
- 5.9. Finding coupons by name:
find
- 5.10. Listing all expiring coupons:
expiring
- 5.11. Sorting coupons:
sort
- 5.12. Copying a coupon:
copy
- 5.13. Sharing a coupon:
share
- 5.14. Undoing the previous command:
undo
- 5.15. Redoing the undone command:
redo
- 5.16. Going to a month-year on the calendar:
goto
- 5.17. Expanding a coupon:
expand
- 5.18. Setting currency symbol:
setcurrency
- 5.19. Viewing help:
help
- 5.20. Clearing all entries:
clear
- 5.21. Exiting the program:
exit
- 5.22. Reminding of coupon expiry
- 5.23. Saving the data
- 5.1. Adding a coupon:
- 6. Keyboard Shortcuts
- 7. FAQ
- 8. Command Summary
- 9. Appendix
1. Introduction
Coupon Stash is meant for School of Computing (SoC) students and staff who enjoy managing their coupons with a desktop command-line interface. It is optimised for efficient usage in this aspect, while still offering a sleek, beautiful Graphical User Interface (GUI).
Jump to the Quick Start section to get started now. We sincerely hope you enjoy using Coupon Stash!
2. About This Document
This document introduces the features of Coupon Stash.
The following are symbols and formatting used in this document:
Tips are used to describe small features or techniques that may come in handy when using Coupon Stash! |
Warnings bring your attention to certain practices that may have unintended consequences! |
Notes describe certain features or behaviour that may not be so obvious! |
Boxes like these contain useful information, for emphasis and easy reference!
-
Coupon Stash command words are formatted with
code blocks
.
-
Blue, underlined words are links! Try clicking on the link on the left!
-
Keyboard buttons are represented in a box, and used to represent certain shortcuts in Coupon Stash. For example, the Ctrl key, which is used for most shortcuts.
3. Quick Start
Getting started! Look no further! The simple steps below will get you up to speed on this program faster than a beetle!
-
Ensure you have Java (version 11 or above) installed in your Computer. Java is an application development platform and version 11 can be downloaded here.
-
Download the latest
CouponStash.jar
. -
Copy the file to the folder you want to use as the home folder for your Coupon Stash.
-
Double-click the file to start the app. The Graphical User Interface (GUI) should appear in a few seconds. If nothing occurs, use the command
java -jar CouponStash.jar
on your computer’s Command Line Interface (CLI) to open the file up. -
Type the command in the command box and press Enter to execute it.
-
Some example commands you can try:
-
add:
add n/Domino’s Pizza Extra Large s/40% p/ILOVEDOMINOS e/30-4-2020 l/5 t/pizza t/delivery
-
adds a coupon named Domino’s Pizza Extra Large to the Coupon Stash, with an expiry date of 30th April 2020, 40% savings with promo code ILOVEDOMINOS, and a limit of 5 usages.
-
-
used:
used 3
: marks the third coupon shown in the current list as used, and automatically archives it if the limit is reached -
saved:
saved
: displays how much you have saved from all coupons -
exit : exits the app (your data will be saved automatically)
-
-
Refer to the Features section below for the details of each command.
4. User Interface
In this section, we look at the key features of Coupon Stash’s graphical user interface. The interface can be broadly split into 4 different parts: the different tabs present in the program (Coupons, Summary and Help), the calendar, the command input box and the command result box.
4.1. Tabs
Tab selection determines the content shown in the main window of Coupon Stash.
The tabs can be switched by pressing Ctrl + Tab or by clicking on the tabs bar on the left side of the application with the name of the tab you want to switch to. The current selected tab will be highlighted with a bolder text, and a darker blue.
The tabs bar is visible on every single tab! It serves as a good visual reference to tell you which tab is currently being displayed. |
The following sections explain the different features of each tab of Coupon Stash, as well as how to use them.
4.1.1. Coupons tab
When you first start Coupon Stash, the default selected tab is the coupons tabs. The coupons tab contains a visual overview of the coupons which you have added to the application.
Coupon card
The coupon card displays information about each coupon, and it is styled to look like a coupon itself!
Duplicate coupons cannot exist in the active coupon list! Coupons are duplicates when they have the same name, promo code, expiry date and savings. |
4.1.2. Summary tab
The summary tab provides an overview of how much you have saved from using coupons in Coupon Stash.
This tab provides an estimate of all the savings you have accumulated, provided the coupon that resulted in those savings is still present in Coupon Stash (this includes archived coupons). This estimate is displayed in the form of a monetary amount at the top of the page, with saved items that may not be easily quantified displayed in a lime-green box at the side, preceded by the text "And these saveables too!".
Also, a graph that shows the monetary amount saved every week is also displayed in the summary tab. The next section will tell you more about how to interpret this graph.
Savings graph
The savings graph provides a bar chart which holds statistics on the amount of money saved per week. The taller the bar, the more savings earned that week. The exact amount is also shown in white text at the top of each bar.
In the graph, Monday is taken to be the first day of a week, and Sunday the last. The date displayed on the bottom axis corresponds to the first day of that week (Monday). Earlier weeks are displayed towards the left, while later weeks are displayed towards the right (direction of time axis is from left to right).
The graph is drawn based on the latest week in which coupon usage was recorded by Coupon Stash, and shows a maximum of 10 bars or 10 weeks of savings before that latest date.
Any savings that were recorded by Coupon Stash before the time period of 10 weeks will not be shown in the graph. However, they can still be calculated using the saved command. |
Although the total monetary amount and saveables list in the summary tab is obtained by adding up all the savings from every coupon regardless of the date, the savings graph may not display every weeks' savings as it only displays up to a maximum of 10 weeks. |
4.1.3. Help tab
The help tab shows you a short description of how to use all the commands in Coupon Stash.
As compared to the User Guide’s descriptions, the descriptions provided in the help tab are less detailed! |
4.2. Calendar
The calendar provides you with an overview of all your coupon’s expiry dates within a month year. It reflects the expiry
dates of the list of coupons in the coupons tab
.
4.2.1. Calendar Title
The calendar title indicates the current month year on display in the calendar .
4.2.2. Previous & Next Arrows
The left and right arrows enable you to change the month year on display on the calendar. A click on the left and right arrows displays the previous month and the next month respectively.
You may also change the month year on display using the goto
command!
|
4.2.3. Dates
The numbers on the calendar represent each date in the current month year on display in the calendar.
Some date cells are highlighted. The following are the meanings of the various highlights:
-
Blue highlight: Indicates the system’s date (usually today’s date)
-
Red highlight: Indicates expiring coupon(s) on that date
4.3. Command Input Box
The command input box is the main way you will interact with Coupon Stash. Simply type in your commands and hit enter!
4.4. Command Result Box
The command result box shows you messages depending on whether your command was successful or not.
5. Features
This section introduces the features of Coupon Stash. There are some examples
for you to try out in Coupon Stash too!
Also, take note of the general format of all the commands below!
5.1. Adding a coupon: add
Adds a coupon. Some fields like name
, expiry date
and savings
are
required.
Optional fields like promo code
and tags
may be provided as well.
Format: add n/NAME e/EXPIRY_DATE s/SAVINGS_OR_FREE_ITEM [sd/START_DATE] [r/REMIND_DATE] [p/PROMO_CODE] [c/CONDITIONS] [u/USAGE] [l/USAGE_LIMIT] [s/EXTRA_FREE_ITEMS]… [t/TAG]…
A coupon can have any number of tags (including 0) |
If unspecified, the default remind date of a coupon will be set to 3 days before the expiry date. Go to Section 5.22, “Reminding of coupon expiry” to learn more about remind dates. |
Examples:
-
add n/McDonald’s McGriddles p/ILOVEMCGRIDDLES e/31-12-2020 s/$2 sd/1-4-2020 l/2 t/value t/savoury
Adds a new Coupon:
-
add n/Grabfood s/40% e/30-4-2020 p/GRAB40 t/delivery
Adds a new Coupon:
If your coupon allows for unlimited usage, set the limit of the coupon to a
number less than 1! E.g. l/0
|
5.2. Editing a coupon: edit
Edits an existing coupon in the coupon book.
Format: edit INDEX [n/NAME] [e/EXPIRY_DATE] [sd/START_DATE] [r/REMIND_DATE] [p/PROMO_CODE] [c/CONDITION] [l/USAGE_LIMIT] [s/SAVINGS_OR_FREE_ITEMS]… [t/TAG]…
Savings cannot be cleared in the same way as clearing tags, as a coupon must have at least 1 saving. |
Remind date cannot be removed or cleared. Go to Section 5.22, “Reminding of coupon expiry” to learn more about remind dates. |
Examples:
-
edit 1 s/50%
Edits the savings of the first coupon in the coupon list to be 50% off. -
edit 2 n/The Deck Nasi Ayam Hainan t/
Edits the name of the second coupon in the coupon list to be The Deck Nasi Ayam Hainan and clears all existing tags.
5.3. Deleting a coupon: delete
Deletes the specified coupon from the Coupon Stash.
Format: delete INDEX
Examples:
-
list
delete 2
Deletes the second coupon in the coupon list. -
find rice
delete 1
Deletes the first coupon in the resulting coupon list of the find command.
5.4. Listing coupons: list
Shows a list of coupons in the Coupon Stash.
There are 3 types of lists:
-
List of active coupons
-
List of archived coupons
-
List of used coupons
This command will change the month year on display in the calendar to the system’s date (usually today’s date). |
Format: list [PREFIX]
PREFIX can be left blank to list all active coupons (coupons that are not fully used/ not archived (except for
coupon(s) that are unarchived on purpose)).
|
Examples:
-
list
Shows a list of all active coupons in Coupon Stash. -
list a/
Shows a list of all archived coupons in Coupon Stash. -
list u/
Shows a list of all used coupons in Coupon Stash.
5.5. Using a coupon: used
Use a coupon if its usage has yet to reach its limit.
Requires an original amount of purchase if the coupon has savings in a
percentage value.
Format: used INDEX
or used INDEX MONETARY_AMOUNT
where MONETARY_AMOUNT
is a number prefixed by a user-defined currency
symbol e.g. ($4.50, where the currency symbol is "$").
Examples:
-
used 1
Uses the first coupon in the coupon list. -
used 1 $10.0
Uses the first coupon in the coupon list, which also has a percentage savings. The total savings of the coupon will be calculated, and can be seen with the commandsaved
.
5.6. Viewing savings: saved
Shows you how much you have saved by using coupons in Coupon Stash. There are three ways to use this command:
-
If just the word "saved" is entered, the total savings accumulated since you started using Coupon Stash will be shown.
Format:
saved
-
If a specific date is given, Coupon Stash will show you savings earned only on that day.
Format:
saved d/DATE_TO_SHOW
-
If a start date and end date are given, Coupon Stash will show you the total savings accumulated over all the dates between that start date and end date, inclusive of those dates as well.
Format:
saved sd/START_DATE e/END_DATE
Examples:
-
saved d/1-3-2020
A message with your total savings and saveables saved on 1 March 2020 will be displayed in the Command Result Box. -
saved sd/1-5-2019 e/20-3-2020
A message with your total savings and saveables saved between 1 May 2019 and 20 March 2020 will be displayed in the Command Result Box.
5.7. Archiving a coupon: archive
Archives a coupon when you want to keep a record of it, without cluttering your current stash of coupons.
To view archived coupons, the user can run the
list a/ command to list all
archived coupons. Alternatively, the find command explained below will
search all archived coupons, thus displaying archives that match the supplied
keywords below unarchived coupons. Finally, the
expiring command will also
include all archived coupons that are expiring in its results.
Read the section on find and
expiring
respectively to find out more.
|
Format: archive INDEX
Examples:
-
archive 1
Archives the first coupon in the coupon list.
To keep your coupons more organized, Coupon Stash will automatically archive your coupons once their usage limit has been reached, or when they have expired. |
5.8. Unarchiving a coupon: unarchive
Unarchive a coupon, thus bringing it back to your active coupons list.
To unarchive a coupon, you have to make sure that the archived coupon is
visible in the Coupon Stash first. Read the section on the
archive command to find out the ways that
you can display archived coupons.
|
Format: unarchive INDEX
Examples:
-
unarchive 1
Unarchive the first coupon in the coupon list.
5.9. Finding coupons by name: find
Find coupon(s) whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]…
For easy finding of coupons, include the store or brand name in your coupon name! |
Examples:
-
find ken
For example, coupons with the keyword ken would be returned:
Ken Kitchen, KEN RIDGE Optical, ken you build a snowman.
5.10. Listing all expiring coupons: expiring
Shows a list of all your coupons expiring on a date or during a month year.
This command will change the month year on display in the calendar to the month year of specified
expiry date or month year. For example, expiring e/30-9-2020 & expiring my/9-2020 both changes the month year on display in the
calendar to September 2020.
|
Format: expiring e/EXPIRY_DATE
or expiring my/MONTH_YEAR
Examples:
-
expiring e/30-9-2020
Shows you all the coupons that expire on 30 September 2020. -
expiring my/9-2020
Shows you all the coupons that expire during September 2020.
The expiring command will include archived
coupons in its results too. Coupons that are expiring in the archives are
displayed below the non-archived matches.
|
5.11. Sorting coupons: sort
Sorts the coupons in Coupon Stash in ascending order. It is possible to sort by coupon name, expiry date, or remind date.
When you edit or
add a coupon, the sorting order will revert to
the original order. Otherwise, the sorting order will persist throughout the
runtime of the program.
|
The command will sort any coupons currently on screen, including archived coupons, if they are present on screen. Archived coupons will always appear below active coupons. |
Format: sort PREFIX
Examples:
-
sort n/
Sorts the Coupon Stash by name in ascending order. -
sort e/
Sorts the Coupon Stash by expiry date from earliest to latest. -
sort r/
Sorts the Coupon Stash by reminder date from earliest to latest.
5.12. Copying a coupon: copy
Copies a coupon as an add
command to your
clipboard so that you can easily share it with your friends/family!
Format: copy INDEX
Below is a short demonstration of the copy
command:
copy
command operation.Examples:
5.13. Sharing a coupon: share
Shares a coupon as a .png
image file (portable network graphic).
Now you can post your coupons on your social media platforms like Instagram!
Format: share INDEX
Image generated will have an index of 1 regardless of its true index! Below is a sample of how a shared coupon image looks like: |
Do not try entering this command with MAX_INT value as INDEX.
This may lead to a bug.
|
Examples:
5.14. Undoing the previous command: undo
Undo the most recent operation on the Coupon Stash. Only operations that change the coupons in the Coupon Stash can be undone.
Format: undo
Changes to user preferences, such as the setting of the currency symbol, cannot be undone. |
You can only undo commands which you have input since you opened Coupon Stash. This means that after you close the application, your undo history will be lost! |
Examples:
5.15. Redoing the undone command: redo
Redo the previously undone operation. This is akin to undoing an
undo
.
Format: redo
Examples:
-
edit 1 r/ 25-12-2020
undo
redo
Un-undo theedit
command. Remind date of first coupon that was in the resulting coupon list is edited. -
delete 1
undo
redo
Un-undo the delete
command. First coupon that
was in the resulting coupon list is deleted.
5.16. Going to a month-year on the calendar: goto
Goes to the specified month and year on the calendar by changing the month year on display.
Format: goto my/MONTH_YEAR
Example:
-
goto my/12-2020
Goes to December 2020 on the calendar by changing the month year on display to December 2020.
5.17. Expanding a coupon: expand
Displays a coupon in its own window, giving you a complete expanded view of it.
Format: expand INDEX
Examples:
-
expand 1
Opens the first coupon in the coupon list in a new window.
5.18. Setting currency symbol: setcurrency
Sets the currency symbol used in Coupon Stash. This will force Coupon Stash to reload all coupons to use the new symbol instead.
Format: setcurrency ms/NEW_MONEY_SYMBOL
Examples:
-
setcurrency ms/€
Sets the money symbol used in commands, as well as to display coupons' savings, to € (Euro). The changes will be visible immediately.
5.19. Viewing help: help
Open a browser window that accesses an offline copy of this user guide.
First run of this command may take some time as the program needs to extract an offline copy of the document. |
Format: help
5.20. Clearing all entries: clear
Deletes every single coupon in Coupon Stash. This
includes archived and non-archived coupons!
Format: clear
If you clear your Coupon Stash on accident, you can
use undo to restore
your Coupons! Just make sure you don’t close the application
immediately after you cleared your Coupons.
|
5.21. Exiting the program: exit
This command immediately exits the program when entered.
When you exit the program, all coupon data is saved to
your computer.
Format: exit
There are many ways of exiting the program! One other way is to click the cross at the top of the application (position of this cross button differs depending on operating system). |
5.22. Reminding of coupon expiry
By default, all added coupons have a remind date that is 3 days before its stated expiry date. This default value can be changed during the process of adding a new coupon or by editing an existing coupon. The remind dates for all coupons are checked on program launch. All coupons that have a remind date which falls on the date of program launch will be listed in a popup window on launch. The popup window can be closed by pressing Ctrl + q.
Remind dates are only checked during program launch. Thus, if a day passes while the program is open, even if there are coupons expiring on the new day, no new reminder window will open. |
As of now, there is no functionality for the disabling of reminders for coupons. This feature will be made available in version 2.0.
-
The format of dates entered via the
r/
field is in the D-M-YYYY format. (Coupon Stash date format)
Examples:
-
add n/McDonald’s McGriddles p/ILOVEMCGRIDDLES e/31-12-2020 s/$2 sd/1-4-2020 l/2 t/value t/savoury
Add a new Coupon without specifying a remind date. Note that the default remind date is 3 days before the state expiry date:
-
add n/Grabfood s/40% e/30-4-2020 p/GRAB40 t/delivery r/10-4-2020
Add a new Coupon while specifying a remind date of
10-04-2020
:
10-04-2020
.-
edit 1 r/10-4-2020
Edit the coupon at index 1 and change its remind date to
10-4-2020
.
5.23. Saving the data
Coupon data is saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.
6. Keyboard Shortcuts
With Coupon Stash being optimized for efficient command line usage, how can we not include some nifty keyboard shortcuts to further streamline your workflow! This section introduces some of the keyboard shortcuts available for use in this program.
6.1. Restore previously entered command texts: ↑ and ↓
Pressing the ↑ keyboard button while the focus is on the command box allows you to restore the text of the previous executed command. Pressing the ↓ keyboard button allows you to revert to a more recently entered command.
Demonstration:
6.2. Close expanded coupon or reminder windows: Ctrl+q
After expanding
a coupon, you can close
the expanded coupon window by keeping the focus on the coupon window and
pressing the keyboard buttons Ctrl and q simultaneously. This
shortcut also works for closing reminder
windows.
Demonstration: during the process of adding .Animation of closing window with Ctrl+q. image::gifs/ctrl q.gif[]
6.3. Cycle through tabs: Ctrl+Tab
You can press the keyboard buttons Ctrl and Tab simultaneously to switch tabs. Do note that the focus has to be on the main panel before the key presses would work.
Demonstration:
7. FAQ
Q: How do I transfer my data to another computer?
A: Simply install Stash in the other computer and overwrite the empty data
file with your intended data file.
Q: Can I add multiple coupons using a command line?
A: Sorry, not at the moment. We may consider adding this feature in version
2.0.0.
Q : Why do I need to tag my coupons?
A : Tagging is not compulsory. However, it allows you to group similar
coupons together for easier identification. For example, you can easily
identify all the coupons that are tagged "cheap", as these tags are
displayed in bright orange at the top of each coupon.
Do refer to section 4.1.1 for more details about the coupon card.
Q : How do I store coupons with no expiry date?
A : Sorry, at the moment, coupon entries with no expiry date cannot be
stored. You would need to enter a much further date like 1-1-2030. To
be added in version 2.0.0
Q : How do you calculate the savings value?
A : Whenever a coupon is marked as used, Coupon Stash will automatically
calculate the values saved based on the details of the coupon. You
can use the saved command to view the amount saved.
Q : What animal is Stasher?
A : Stasher is a beetle that loves discounts and hot deals!
Beetles are resourceful insects that know how to scavenge for
the best coupons, as well as remember these coupons safely
inside their tough exoskeleton and elytra.
8. Command Summary
This section has a summary of all the commands.
Action | Format |
---|---|
Add |
|
Edit |
|
Delete |
|
List |
|
Find |
|
Sort |
|
Expiring |
|
Used |
|
Saved |
saved d/DATE_TO_TRACK_FROM |
Archive |
|
Unarchive |
|
Copy |
|
Share |
|
Undo |
|
Redo |
|
Goto |
|
Expand |
|
SetCurrency |
|
Help |
|
Clear |
|
Exit |
|
9. Appendix
This section talks about features that have not been implemented in Coupon Stash yet, but features that the developers are keen to add in upcoming versions.
9.1. Query expressions (coming in v2.0)
Query expressions serve to enable users to perform efficient batch operations on stored coupons using SQL-like syntax.
Examples:
-
edit favorites set tag=hated where expiry < 19-2-2020
For all coupons tagged asfavorites'', set their tag to
hated'' if they expire before the 19th Feb 2020. -
delete favorites where expiry < 19-2-2020
For all coupons tagged as ``favorites'', delete them if they expire before the 19th Feb 2020.
9.1.1. Bulk edit
Format: edit tag set field1=value1, field2=value2, … [where
condition]
-
The
edit
keyword is compulsory.-
If selecting all tags, put tag as
*
.
-
-
The
set
keyword is compulsory.-
If the field is present in a coupon, update the value, else create the field and value.
-
At least 1 field must be updated/added per edit operation.
-
-
The
where
keyword is optional.-
The
==
,>=
,⇐
,>
,<
,!=
, operators are supported in the condition. -
Only default fields can be compared.
-
Condition syntax:
DEFAULT_FIELD operator LITERAL_VALUE
-
AND
/OR
functionality is not available.
-
9.1.2. Bulk delete
Version 2.0 will bring new features like confirmation of coupons before they are deleted!
Also, a "recycle bin" is in the works for version 3.0, similar to the Recycle Bin in Microsoft Windows.
Format: delete tag [where condition]
-
The
delete
keyword is compulsory.-
If selecting all tags, put tag as
*
.
-
-
The
where
keyword is optional.-
If the
where
keyword is omitted, deletes all coupons with that tag. -
Follows syntax explained above.
-