BASIC ONLINE SALES SYSTEM - BACKEND



\# Admin Panel

\- All pages to be authenticated

\- Use local SQLite database … would redis be any use for performance?

Views / Data structures:

\- Categories > Category Editor (CRUD)

\- Products List > Product Editor (CRUD)

&nbsp;	- Product data is to be:

&nbsp;		- Id (Guid)

&nbsp;		- Name (string)

&nbsp;		- Description (long text + Unicode/emoji support) 

&nbsp;		- ProductWeightUnit (Unit, Micrograms, Grams, Ounces, Pounds, Millilitres, Litres)

&nbsp;		- Product Weight (double? value in relation to Product Weight Unit value)

&nbsp;		- Photos (a sub list of multiple images associated with the product)

&nbsp;		- BasePrice (currently we will assume GBP is the base currency)

\- Users List > User Editor \*(CRUD)

&nbsp;	- Username / Password only. No email.  This is a staff user list only for accessing this system.  Create a default (admin/admin) user.

\- Orders List … see order-workflow below.

\- Accounting … this area will contain these sections:

&nbsp;	- Dashboard … financial overveiew based on the Pending Orders and Payments Received etc.

&nbsp;	- Unpaid Order (aka pending)

&nbsp;	- Payments Received (lists recent first payments detected to crypto wallets relating to active order)

&nbsp;	- Completed … view recent transactions list, a ledger I guess based on all transactions in the system.



\#order-workflow:

1\.  Purchase received via API

2\.  Order create + await payment

3\.  Payment detected > Order gets marked for processing by say the "Picking \& Packing Team".

4\.  The pickers prepare the order, hit the "ITS BEEN PICKED OR WHATEVER" button which then registers the job on royal mail, spits out a label for them to stick on the package and updates the customer with the tracking number. 



\# WEB API

&nbsp;- This should allow a client application to retrieve a list of products, retrieve a list of only orders relating the end clients identity-reference (string), create a new order, retrieve own orders (by identity-reference), retrieve own order details (including the per order crypto payment instructions \& wallet address), cancel order and get help with order



