Checking access…
Dashboard
SKUs tracked
—
—
Units on hand
—
—
Orders, all-time
—
—
Revenue, all-time
—
paid & fulfilled orders only
Quick actions
How this works
Stock and orders live in Supabase; product + variant definitions live in
Sanity Studio. The two are joined by SKU
(FG-<TYPE>-<NUM>-<SIZE>). Adding a new variant in Sanity creates the
SKU but does not create an inventory row — run node scripts/seed-inventory.mjs
to sync new SKUs into the inventory table at zero stock, then adjust quantities on the
Inventory page.
Each order ships with a fresh stripe_idempotency_key generated at order-create time.
When Stripe is wired in, that key is sent as the Idempotency-Key header on the
paymentIntents.create call, so a retried request never charges twice.
Read the full system doc at docs/inventory-system.md.