Websites

Two sites, up close

Two sites, both live. One is a restaurant that takes orders and payments online. The other is a mystery game that runs in a browser tab. Each is written up below — what it does, and how it works.

Own work · live

The Pembroke File

A locked-cabinet noir mystery, and the site that has to sell it.

A five-puzzle mystery that runs entirely in a browser tab — no install, no account, no loading screen. The whole game is a single 130 KB file with nothing behind it: no framework, no build step, and not one network call, so it plays offline and will still play in a decade.

The Pembroke File
The Pembroke File site — a dark case room lit by a single desk lamp.

What is built into it

The puzzles are real mechanisms rather than riddles. A lamp is rewired on a cable that hangs and swings under Verlet physics on canvas. A sliding-block tray was generated and then solved exhaustively by breadth-first search before shipping, so its seventeen-move minimum is a measured fact instead of a guess. Every sound — the drawer, the dial, the flourish when the last lock gives — is synthesised at runtime, which is why there is nothing to download.

It is built to be played by everyone. Each of the five puzzles has a keyboard route to its solution, motion respects the reduced-motion setting, and progress survives a closed tab, so a drawer opened tonight is still open tomorrow.

The site around it was built with the same care as the game. The case room drifts behind the words as you scroll, dust moves through the lamplight, and the five drawers slide open in sequence as you reach them. Its original artwork was generated for it and compressed from 4.2 MB to 176 KB, so all of that atmosphere costs almost nothing to load.

0
Dependencies, network calls
130 KB
The entire game
176 KB
Artwork, down from 4.2 MB

Client work · live

Samurai Kitchen

A food truck and catering business, taking orders online.

It replaced a dated WordPress site that could not take an order — every catering enquiry arrived as unstructured email and nothing could be paid for online. What went up in its place handles the whole order, end to end.

samuraikitchencatering.com
The Samurai Kitchen site, catering-first with online ordering.

What is built into it

Customers browse a categorised menu with dietary tags, build a cart, and pay by card without leaving the site. Checkout runs on Square Web Payments, so card details never touch the server and the business inherits Square's compliance rather than having to earn it.

A loyalty programme runs underneath: diners earn points on every order and redeem them at checkout, which is the part that turns a first order into a second. Catering is handled separately, with pre-built platter packages priced in tiers — the revenue the old contact form was quietly losing.

Three of Square's systems are wired in at once — payments, live catalogue, and loyalty — with Supabase behind them. Prices are settled server-side against the real catalogue, so an order is always charged what the kitchen actually set.

The owner ran a full order through it himself, start to finish, before it went anywhere near a customer.

Live
Ordering and card payments
Loyalty
Points earned and redeemed
Catering
Tiered package pricing

Want one of these?

Both were built the same way: something working early, then the slower work of making it fast, accessible and safe enough to hand to real customers. If you need a site that takes orders, that is the work I do.