Rcorp EnterprisesStart a project

Live, handed over

An ordering website and back office for a Liverpool cake maker

Vivi's Cakery sells a set menu of cakes and bespoke cakes for special occasions. We built a website where customers can order and pay for a menu cake or ask for a bespoke quote, plus a back office the baker runs herself, mostly from her phone.

Client
Vivi's Cakery
Sector
Bakery (made-to-order celebration cakes)
Cakes on the menu
9
Client change requests shipped and checked live
31
Settings the baker can edit
14
Backup history kept
14 daily + 8 weekly

The challenge

  • The bakery sells two different ways: set menu cakes at fixed prices, and bespoke cakes that have to be quoted from what the customer describes and the photos they send.
  • The site it had was not something the baker could run herself: photos went in by pasting a web address, and the admin password could only be changed on the server.
  • The legal pages, robots.txt and sitemap all returned 'page not found', so the site was missing basic information a food business must show and search engines need.
  • There was no backup of the customer data anywhere: names, contact details, delivery addresses, order history and the photos customers had sent in.

The screens

What we built

  • Public site and cake menu

    A homepage, menu, gallery of past commissions, about and contact pages. Each cake has its own page with sizes, options and an allergen declaration.

  • Menu ordering with Stripe

    The customer picks a size, a delivery date and slot, and a Liverpool postcode, then pays on Stripe's hosted checkout. Card details never touch the bakery's server.

  • Bespoke quote request

    A six-step form where the customer describes the cake and uploads reference photos. The baker sends a quote and the customer pays through a Stripe payment link.

  • Back office

    A dashboard for orders, quotes, cakes and site settings. From it the baker can move an order through its stages, pause ordering, cap how many cakes she takes each day, and edit menu cakes with real photo uploads.

  • Order tracking

    Customers follow their order on a public tracking page. It uses a private code, not the order number, which would be easy to guess.

  • Hosting, deploys and backups

    The site runs in Docker behind Caddy. GitHub Actions checks, builds and deploys every change. The database and uploaded photos are backed up every night, encrypted, and a restore has been tested.

What it does

Built with

  • Next.js 16
  • React 19
  • TypeScript
  • PostgreSQL 16
  • Drizzle ORM
  • Auth.js
  • Stripe Checkout and webhooks
  • Resend
  • Tailwind CSS v4
  • Vitest
  • Playwright
  • Docker
  • Caddy
  • GitHub Actions
  • Card payment through Stripe Checkout, confirmed by webhook
  • Bespoke quote requests with reference photo uploads, visible only to a signed-in admin
  • Order on/off switch and a daily cake limit
  • Status buttons that update the customer's tracking page
  • Fourteen site settings the baker can edit, including contact details, without a new deploy
  • Photo upload with alt text and priced size options in the cake editor
  • A made-to-order note on every menu cake, and photos labelled when they show an example rather than that exact cake
  • Search-friendly product and bakery data, with no invented reviews or ratings
  • A deploy check that stops the site going out without the trader details a consumer site must show
  • Nightly encrypted backups of the database and customer photos, with a tested restore

Where it stands

Related services

The site is live at viviscakery.co.uk and has been handed over to the client, with the complete source code and a self-hosting guide, which she owns outright.

All 31 changes the client asked for during the handover were shipped and checked on the live site.

The site was once taken off its server and restored from an off-site copy with its customer data intact. It now has nightly encrypted backups, and a restore has been tested.

It is now in maintenance only: changes are limited to fixing real problems.

Want something like this?

Tell us about your business and what you need. We will reply with honest questions, then a written proposal.