Key features
- Online ordering from a 33-item menu, with category filters and a cart
- Hosted Square checkout with server-side pricing
- A 41-item shop covering 11 music singles and 30 handmade pieces, on the same checkout
- A product with no price cannot be sold, so nothing can ever be charged at $0
- Catering enquiry page
- Customer reviews with moderation
- Loyalty accounts on an immutable points ledger
- Real downloadable files, served as attachments
- Artist section with music videos and music store
- Admin panel for orders, reviews, catalogue, accounts and downloads
Delivery
We started by reading every request the client had sent and writing a traceability document, so each ask mapped to a change and a verification. The numbered spec was approved before the build.
The build ran in phases: merged site, loyalty and reviews, polish and launch readiness, then a functional test that drove the live site on desktop and mobile and asserted real outcomes rather than page loads.
The biggest change came mid-project. With POS approval still blocked, we moved ordering onto Square's hosted checkout instead of letting the requirement stall, and unified food, music and goods onto that one rail. Placeholder store links that had never resolved were removed and replaced with working purchase paths, and no URL, price or product name was invented to fill a gap. Where a client input was missing, the site showed an honest enquiry option until it arrived.
After launch, the client's menu, pricing and product updates were reconciled line by line against what they sent, and each round was verified before release.
Security and infrastructure
- Prices are server-side only. The amount charged cannot be altered from the browser.
- Hosted payment. Card entry happens on Square, so card data never touches the site.
- Signed webhooks. Unsigned or invalid requests are rejected.
- No accidental duplicates. Each payment link carries a unique key, so a repeated request does not create a second order.
- Payment and service secrets stay server-side, in environment variables. Admin actions are verified on the server.
- Server code stays private. It lives outside the files visitors can download.
- Static delivery on Netlify, with self-hosted fonts and long-cache headers for fonts.










