Peana — Neighborhood miniatures shop
Peana is the neighborhood shop for miniature painters. Browse ranges, fill a cart with minis, paints, dice and kits with a bill of materials, pay immediately and get a real pickup QR. Staff scan the code at the counter (paid → preparing → ready → picked_up). The truth layer is atomic checkout: stock drops in the same transaction, a kit cannot sell if a component is missing (409 KIT_INCOMPLETE), and the last base cannot be sold twice (409 NO_STOCK). Table points are derived from euros paid. There is no 15-minute hold.
Key features
Atomic checkout: pay and decrement stock in one transaction
Kits with BOM: 409 KIT_INCOMPLETE if a component is missing
Anti double-sale: 409 NO_STOCK next to the CTA
Real QR (qrcode SVG + URL /pedido/:code) on confirmation and public GET 200
Staff scan by code or URL; second picked_up → 409 ALREADY_PICKED_UP
Derived points: floor(totalEur) of paid orders
Technologies used
Angular
TypeScript
SQLite