One system — storefront to back office
This isn't a brochure site bolted onto a separate point-of-sale. The shop your customers use and the back office your staff use are the same application and the same database — so stock, orders and the audit trail always agree.
Demo logins — owner: owner / demo1234 · counter staff: staff / demo1234
What a customer gets
Real catalogue & cart
Browse meat and Christmas boxes, see live stock, add to a signed cart, and check out with pickup or delivery.
Instant order record
Every checkout creates a real order and customer record — no re-keying into a separate till.
Works on any device
Responsive storefront and back office; staff can pack orders from a phone on the shop floor.
What the owner gets
Dashboard
Open orders, weekly revenue, customer count and low-stock warnings at a glance.
Orders & inventory
Advance an order through packing → ready → fulfilled; adjust stock and pricing — stock drops automatically as boxes sell.
Customers
Automatic customer list with order count and lifetime spend.
Security & audit, built in
Not an add-on — these are enforced on every request.
Hashed passwords & roles
Staff passwords stored with bcrypt; owner and staff roles gate what each person can change.
CSRF + rate limiting
Every form carries a signed anti-forgery token; repeated bad logins are throttled per IP and logged as security events.
Full audit trail
Who did what, when, from which IP — logins, order changes, price and stock edits. Nothing changes without a record.
Hardened responses
Strict Content-Security-Policy, HSTS, clickjacking and MIME-sniff protection on every page.
Live audit trail — last 8 events
This is pulled straight from the running database. Place a demo order and watch a new row appear here.
| Time (UTC) | Who | Action | Detail |
|---|---|---|---|
| 2026-11-10 21:49:33 | owner (owner) | auth.login | Signed in |
| 2026-11-10 21:49:32 | owner (owner) | auth.login | Signed in |
| 2026-11-10 17:49:17 | customer | order.placed | 2 item(s), $163.00 |
| 2026-11-10 15:49:17 | unknown | auth.failed | Bad password (attempt 3) — IP temporarily throttled |
| 2026-11-09 18:49:17 | customer | order.placed | 2 item(s), $188.00 |
| 2026-11-09 16:49:17 | staff (staff) | product.stock | stock 18 → 15 |
| 2026-11-08 19:49:17 | customer | order.placed | 1 item(s), $139.00 |
| 2026-11-08 18:59:17 | owner (owner) | order.status | ready → fulfilled |
Want this for your shop?
True Collar Built builds and hosts the whole thing. truecollarbuilt.com