Sweet Sprinkles
A bakery that owns its orders again
A storefront for a Singapore bakery, then the order system behind it: PayNow payments, stock that can’t oversell, and an admin the team runs themselves.
Where it started.
Sweet Sprinkles sells celebration cakes, loaves and festive bakes across Singapore. After their old setup broke, orders came in by email and spreadsheet, and nobody could see at a glance what had been paid, what was in stock or what needed baking tomorrow. They needed a shop that looked like the bakery and a back office that kept every order honest without adding admin work.
ConceptHow we approached it.
We started with a fast storefront on headless Shopify so the bakery could sell quickly. When the bakery asked to take PayNow directly and own the whole order flow, we moved commerce onto their own backend: a Postgres order database, PayNow QR payments that staff confirm against the bank, and an admin built around how the kitchen actually works: orders in, stock reserved, bakes prepared, customers emailed.
Where it stands.
The bakery now runs its online orders from its own admin: every order has a clear status, stock is held the moment someone checks out, and payment is confirmed against the bank before anything is baked. The storefront is live at sweetsprinkles.sg.
The system behind it.
Sweet Sprinkles, taken apart: from the screen people use to the work that keeps it running.
-
Interface
What customers see
- Celebration bakes
- Pickup & delivery slots
- Order status page
-
Storefront
SvelteKit, mobile-first
- /shop
- /collections/[handle]
- /products/[handle]
- /cart
- /checkout
- /orders/[id]/[token]
-
Admin
Run by the bakery
- /admin/orders
- /admin/products
- /admin/inventory
- /admin/customers
- /admin/settings/content
- PayNow → staff verify
-
Data
Its own order database
- orders
- order_items
- reservations
- inventory_adjustments
- payment_records
- products
- variants
- admin_audit
-
Operations
Runs nightly, emails every step
- cron · /api/commerce/reconcile
- Resend · order emails
- CI · Postgres 18 service
- Vitest + Playwright
- Vercel · Singapore
What we built.
Storefront
Catalogue, collections and product pages with pickup and delivery slots, built mobile-first for customers ordering on the go.
Order system
Checkout reserves stock the moment an order is placed. A retried checkout returns the same order instead of creating a second one.
PayNow, verified
Customers pay by PayNow QR. An order only counts as paid once staff confirm it against the bank, never on the customer’s word.
Admin
Products, variants, images, collections, inventory, orders, customers and homepage content, managed by the bakery with no developer needed.
Order emails
Customers hear from the bakery at every step: order placed, payment confirmed, preparing, ready for pickup.
Nightly clean-up
A scheduled job releases stock held by unpaid orders, so cakes don’t sit “reserved” for customers who never paid.
Under the hood.
- Frontend
- SvelteKit, Svelte 5, Tailwind 4, GSAP
- Commerce
- Custom checkout, PayNow QR, Stock reservations, Audit ledger
- Data & backend
- Neon Postgres, Drizzle, SQL migrations, Redis rate limiting
- Infrastructure
- Vercel (Singapore), Cloudflare R2, Resend, Daily cron
- Quality
- Vitest, Playwright, GitHub Actions CI
By the numbers
- 76 products on a store the bakery runs itself
- 1 admin for orders, stock, payments and customers
- 5 order stages, from placed to collected
