Slate Desk

SKU = Product + Colour + Version. Size lives in stock and billing, not the code.

The Slate Society

Level 01 · Product

Enter Department, Category and Product Name. If it already exists, its code appears automatically — if not, you can create one on the spot, including its default price.

Level 02 · Colour

Pick a colour, or add a new one — it's saved for next time.

New version?

Photo

Optional — attach a photo of this SKU. Resized automatically, stored in R2.

SKU photo preview

Price & Stock

This version's selling price — different versions/colours of the same product can price differently.

Record initial stock. Add another line for each size/location combination this batch covers.

This category has no default size type yet — choose one:

What happens here

The SKU code is Product-Colour-Version, e.g. SCL-PC-01 — it stops at the version, no size. The first time a Product + Colour combination is created it becomes version 01 automatically. Build that exact combination again and you'll be asked whether to create a new version (02, 03, …) or go manage the existing one's stock. Size is tracked as part of stock (this page) and chosen again at billing time. Each version sets its own price.

Find a SKU

SKU

SizeLocationQuantity

Quantity is colour-coded — red is low stock, green is healthy stock.

History

Permanently removes the SKU and its stock history. Requires a reason.

Select a SKU from the list to view and adjust its stock.

Full inventory export

Every SKU with its current total quantity and a size/location breakdown, one row per SKU.

New bill

Stock is deducted from this location for every line below. Prefilled from your personal default, or the shop-wide default in Master Data → Settings.

What happens here

Enter the customer's phone number first — if they've billed before, their name is suggested automatically, so the same person is never billed as two different customers. Search for a product by code or name, choose its size and quantity. Prices are entered inclusive of GST — the 5% split is shown only at the bill total, after any discount. Split the payment across more than one method if needed — the first method's amount fills in automatically from whatever's left. Saving deducts stock and opens a print-ready bill (the customer's name and phone aren't printed on it, only kept on file here).

Bill history

Level 01 master list

+ Add product directly

Import an updated master CSV (same columns as the original file, plus Price). New rows are added; existing ones (by department + category + name) are skipped.

Colour library

Location library

Payment modes

Settings

Business details used on printed bills, and a shop-wide default billing location (a user's own personal default, set from the Billing tab, takes priority over this).

Team logins

Owner — full access, and the only login that can manage other logins; it can never be deleted. Level 02 — full access except user management and Analytics. Level 03 — level 02, minus clear-history and delete-bill. Level 04 — billing only, no add/edit permission anywhere.

Add a login

Sales, last 40 days

Date-wise orders, items sold, and overall sales amount (grand total, after discount).

Sales by mode of payment

Date-wise sales amount split across how it was paid.

Slate Desk — all data (products, colours, locations, SKUs, stock, bills, logins, customers) is stored centrally in Cloudflare D1, with photos in R2 — everyone on the team sees the same data, from any device. Use Export CSV for offline sharing/backup, or Import to pull in changes made elsewhere. See the README for deployment and security details.

Change my password