Skip to content

Commit 2fc1fa6

Browse files
committed
Feature: Add Sales Receipt app specification
Add Sales Receipt app specification Resolves: N/a See also: N/a
1 parent 9e8058d commit 2fc1fa6

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

Projects/Sales-DB-App.md

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Sales Reciepts
2+
3+
**Tier:** 2-Intermediate
4+
5+
In the [First DB App](./First-DB-App.md) you were able to learn the basics of
6+
how to use the IndexedDB database that's built into the browser. In Sales
7+
Reciepts you'll take this a step further by creating an app that records
8+
point of sales receipts, presumably for subsequent balancing against cash in
9+
the stores cash register.
10+
11+
The objective of Sales Receipts is to implement point-of-sale functionality for
12+
a merchant and to make a record of all sales in a database.
13+
14+
### Requirements & Constraints
15+
16+
- Developer should implement this app as a frontend application that uses the
17+
IndexedDB database in the browser to record all sales receipts.
18+
19+
- Developer may implement the inventory of items available for sale as an
20+
array of objects in the application source. Each item should be defined with
21+
the following attributes:
22+
- Item number (unique)
23+
- Description
24+
- Unit price
25+
26+
- Developer should use her UI/UX skills to create a pleasant and efficient
27+
window layout that makes it easy for the user to purchase items and display
28+
purchase history.
29+
30+
- The primary use case for a browser based database is to maintain state or
31+
status information that needs to persist across sessions, or as a work area for
32+
temporary data. For example, data retrieved from a server that must be
33+
reformatted or cleansed before it's presented to the user.
34+
35+
- It is important to keep in mind that since the client-side browser environment
36+
cannot be secured you should not maintain any confidential or personal
37+
identifying information (PII) in a browser based database.
38+
39+
## User Stories
40+
41+
- [ ] User can see an purchase panel containing buttons for each item containing
42+
the item number, description, and unit price, as well as a 'Clear' and a
43+
'Checkout' button.
44+
- [ ] User can click an item button to make a purchase.
45+
- [ ] User can see an field displaying the total sale amount incremented as
46+
items are purchased.
47+
- [ ] User can see a reciept panel displaying the date and time of the sale,
48+
as well as all items selected for purchase. This includes the item number,
49+
description, and unit price.
50+
- [ ] User can click the 'Clear' button to clear all purchases at any time
51+
before checking out.
52+
- [ ] User can click the 'Checkout' button to complete purchase all selected
53+
items. The final total purchase amount will be added to the end of the reciept
54+
panel and all selected items will be added to the database.
55+
- [ ] User can see the receipt panel cleared after all items have been added
56+
to the database.
57+
- [ ] User can see a 'Daily Sales' and a 'Clear All' button at the bottom of
58+
the app window.
59+
- [ ] User can click the 'Daily Sales' button to display all items purchased
60+
by all customers in the receipt panel along with the total of them all.
61+
- [ ] User can click the 'Clear All' button to clear the receipt panel and
62+
delete the record of all purchases from the database.
63+
64+
## Bonus features
65+
66+
- [ ] User can see an thumbnail image of the items on the item buttons.
67+
- [ ] User can see the 'Clear' button replaced by 'Clear Entry' and 'Cancel
68+
All' buttons under the purchase panel
69+
- [ ] User can click the 'Clear Entry' button to clear the last selected item
70+
from the receipt panel. This has the effect of unselecting that item.
71+
- [ ] User can click the 'Cancel All' button to clear all purchases made
72+
before checking out.
73+
- [ ] User can see an input field in the input panel the user may enter the
74+
name of the customer into when a purchase is made. The customer name will be
75+
added to all items purchased by that customer in the receipt panel and in the
76+
rows added to the database.
77+
78+
## Useful links and resources
79+
80+
- [IndexedDB Concepts (MDN)](http://tinyw.in/7TIr)
81+
- [Using IndexedDB (MDN)](http://tinyw.in/w6k0)
82+
- [IndexedDB API (MDN)](http://tinyw.in/GqnF)
83+
- [IndexedDB Browser Support](https://caniuse.com/#feat=indexeddb)
84+
85+
## Example projects
86+
87+
- N/a

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ required to complete them.
8888
| [🌟Podcast Directory](./Projects/Podcast-Directory-App.md) | Directory of favorite podcasts | 2-Intermediate |
8989
| [🌟QR Code Badge Generator](./Projects/QRCode-Badge-App.md) | Encode badge info in a QRcode | 2-Intermediate |
9090
| [Regular Expression Helper](./Projects/RegExp-Helper-App.md) | Test Regular Expressions | 2-Intermediate |
91+
| [🌟Sales Reciepts App](./Projects/Sales-DB-App.md) | Record Sales Receipts in a DB | 2-Intermediate |
9192
| [🌟Simple Online Store](./Projects/Simple-Online-Store.md) | Simple Online Store | 2-Intermediate |
9293
| [Sports Bracket Generator](./Projects/Sports-Bracket-Generator.md) | Generate a sports bracket diagram | 2-Intermediate |
9394
| [String Art](./Projects/String-Art.md) | An animation of moving, colored strings | 2-Intermediate |

0 commit comments

Comments
 (0)