Skip to content

Our Work

Things we've actually shipped

Booking platforms that take real payments, internal systems that run real fleets, and sites their owners can update without calling us. Every project below is live or delivered, described by what was built, not by numbers we can't show you.

9

Projects below

7

Sectors served

UK

Where our clients are

01Waste management

EFR Skips & Onyx Recycling

Two skip-hire brands, one booking platform and a back-office to run the fleet

This West Yorkshire waste group took bookings by phone and ran the yard on spreadsheets. We built them a customer-facing booking flow that prices a skip from a postcode and takes payment online, and then went further back into the business and replaced the operational side too.

The public sites give a price in seconds, take card, wallet or cash-on-delivery, and hand the customer a private link to manage their own order afterwards, extending hire, booking a collection, swapping to a different skip size or settling a balance without phoning the office.

The interesting part

The dispatch planner is the piece we're proudest of. It builds a day's routes from real drive-time matrices while respecting the physical reality of skip work, only one full skip on a lorry at a time, so every collection forces a tip; separate sites for metal and general waste; an empty body that can only serve the next delivery if the size matches. Pricing is deliberately server-authoritative, and the quote engine is shared, so the website, the office system and the WhatsApp bot can never drift apart on price.

What we built

  • Six-step booking wizard with postcode-zone pricing, live availability and delivery time slots
  • Stripe card checkout, Apple Pay and Google Pay, and a separate cash-on-delivery path
  • Per-order self-service portal for hire extensions, exchanges, collections and balances
  • Internal operations platform covering jobs, invoicing, HR, rotas and driver checks
  • Automated dispatch planner that builds each driver's day from live drive-time data
  • WhatsApp Business integration quoting from the same pricing engine as the office system
  • Migration off the legacy sites with redirects preserving previously indexed pages
Next.jsReactTypeScriptTailwindStripePHPMySQLFirebase Hosting
Visit the live site
02Waste management

Leeds & Wakefield Skip Hire

Two WooCommerce sites rebuilt as static sites with a shared booking backend

Both sites were running WordPress with WooCommerce handling bookings, slow, awkward to change, and carrying plugin overhead neither business needed. We rebuilt them as statically exported Next.js sites backed by a booking API written specifically for how the business actually works.

Because the two brands serve neighbouring areas, they share one backend and one order-management portal, with every customer-facing string routed through a per-brand config so the two sites never leak each other's branding.

The interesting part

Static export can't generate a route for an order token that doesn't exist at build time, so the customer portal is served as a single static shell that reads the token from the URL and only ever sends it in a request body. Tokens are stored hashed, so a link can be issued but never looked up, and the shared portal is mirrored between the two brand repos by a sync script that refuses to run against a dirty working tree.

What we built

  • Full rebuild of both sites as statically exported Next.js, replacing WordPress and WooCommerce
  • Custom booking API covering pricing, availability, coupons, address lookup and payments
  • Tokenised order portal where customers manage hire, exchanges, collections and balances
  • 39 local landing pages across the LS and WF postcode districts, each with its own content
  • 45 permanent redirects mapping every previously indexed WooCommerce URL to its new home
  • Structured data, per-crawler robots rules and llms.txt for AI search visibility
Next.jsReactTypeScriptTailwindStripePHPMySQLFirebase Hosting
Visit the live site
03Self storageFacility opens autumn 2026

Qube Self Storage

Selling a facility that hasn't opened yet, and banking the demand

Qube are building a drive-up container storage site in Holbeck, Leeds, opening in autumn 2026. That gave the website a job most storage sites never have to do: sell somewhere nobody can visit, with no prices published and nothing available to book.

So we built a funnel rather than a brochure. Visitors register against a locker size and a rough move-in month, and each registration lands in a private CRM the owner works from (search, a status pipeline, notes and CSV export) so that by opening day the waiting list is a working asset rather than a pile of emails.

The interesting part

Two things we're pleased with here. The pipeline can't quietly lose a registration, the record is written before the emails are attempted, so a dead mail server costs a notification rather than a lead, and registering twice updates the existing contact instead of creating a duplicate. And the structured data deliberately omits pricing, opening hours and ratings while the site is pre-launch, so the markup never asserts the business is trading before it actually is.

What we built

  • Interest-registration funnel with honeypot filtering, server-side validation and email-keyed deduplication
  • Two transactional emails per signup, a branded confirmation to the registrant and an internal alert linking straight to the lead
  • Private admin CRM behind Google sign-in, with a status pipeline, notes, search, audit logging and CSV export
  • Cookieless funnel analytics recording aggregate counts only, no cookies, IP addresses or user agents
  • Thirteen pages including a location hub, size and price guides, and four use-case landing pages
  • Owner-editable content served from the database, so copy and unit details change without a redeploy
  • Custom image pipeline generating the logo lockups, favicons and responsive hero variants at build time
Next.jsReactTypeScriptTailwindFirebase App HostingFirestoreNodemailer
Visit the live site
04Transport compliance

Fleet Transport Consultants

A 138-page compliance site with 15 interactive tools, built on a bespoke generator

FTC advise fleet operators and transport managers on DVSA audits, operator licensing and tachograph compliance. Their expertise is the product, so the site had to demonstrate it rather than just describe it.

We rebuilt all 138 pages and added a set of genuinely useful free tools, the kind of thing an operator bookmarks and comes back to. Rather than reach for a CMS, we wrote a small static site generator so the entire site is reproducible from source with no server and no runtime framework.

The interesting part

The site is its own build system. A shared library renders navigation, breadcrumbs and a single cross-referenced JSON-LD graph, while the generator imports a content module per page and writes each to its original URL. A companion script drives a headless browser to render a branded social card for every page from that page's own heading, so 138 pages and 133 images rebuild from source with no CMS and nothing to maintain.

What we built

  • 138 statically generated pages rebuilt from the previous site, preserving existing URLs
  • 15 browser-based compliance tools, including an OCRS what-if calculator and inspection-interval planner
  • Three scored self-assessment questionnaires and a transport manager CPC mock exam
  • Product catalogue for tachograph hardware with per-product pages and structured data
  • 133 branded social share cards, one per page, generated automatically at build time
  • Consolidated JSON-LD graph, llms.txt and explicit AI-crawler permissions
Node.jsStatic HTML/CSS/JSCustom SSGJSON-LDFirebase Hosting
Visit the live site
05Transport compliance

DDIR · Fleet Transport Consultants

A full fleet-compliance platform: driver apps, manager dashboard and an AI transport manager

Fleet Transport Consultants advise operators on compliance; DDIR is that expertise productised into a first-in-class, all-in-one platform any UK fleet can run its compliance on, from the daily walkaround check in a driver's pocket to the OCRS score on the transport manager's dashboard.

It ships as driver apps on iOS and Android plus a manager-side web platform, and the design principle throughout is evidential: checks, defects, spot checks and bulletin acknowledgements are time-stamped, geo-tagged where it matters, and organised so that when an authority asks a question the answer is two clicks away.

The interesting part

Two things set it apart. The tachograph system is bespoke, built for DDIR rather than licensed in, so drivers' hours live in the same evidence trail as everything else instead of a third-party silo. And Andre, the built-in AI transport manager, takes compliance problems in plain English and gives back plain-English answers, putting the expertise the consultancy sells on tap inside the product.

What we built

  • Driver apps (iOS and Android) with vehicle-specific walkaround checklists, photo evidence, GPS and instant defect escalation
  • Manager dashboard covering PMI, roller-brake-test, MOT and calibration scheduling, SIPCAT trend analysis and OCRS visualisation
  • A bespoke tachograph system built for the platform, plus driver licence, CPC and medical expiry tracking
  • Home Office-aligned UK border checks with geo-tagged, time-stamped evidence
  • Guided accident reporting, third-party trailer checks, and spot and gate check logging
  • Bulletins, policies and a resource centre with read-and-understood receipts
  • Andre, the built-in AI transport manager, plus automated manufacturer recall monitoring
ReactTypeScriptViteFirebase
Visit the live site
06Legal & public-sector translation

Word4Word Translations

A static site with a blog the client edits themselves: no rebuild, no developer

Word4Word provide legal and public-sector translation and interpretation. They publish regularly, and every previous update meant going back to a developer.

We rebuilt the marketing site as a fast static build, then gave them a private admin portal with a familiar word-processor-style editor. Posts go live the moment they hit publish, no rebuild, no deploy, no waiting on us.

The interesting part

The interesting problem was keeping a static site and a server-rendered blog looking identical. A build step scrapes the compiled site's own header, footer, styles and scripts into a shell that the blog renderer wraps around its content, so dynamically rendered posts inherit the exact chrome of the static build, and the two halves can't drift apart visually.

What we built

  • Full static rebuild of the marketing site, including service, guide and legal pages
  • Private login-only admin portal with a WYSIWYG editor for writing and publishing posts
  • Server-rendered blog reading live from the database, so edits appear with no redeploy
  • Four enquiry forms, general contact plus interpretation, translation and transcription quotes
  • Content migration pipeline that pulled 37 articles and 7 pages verbatim off the old site
  • Structured data for ProfessionalService, Article, Breadcrumb and FAQ, plus a filtered sitemap
AstroTailwindTypeScriptCloud FunctionsFirestorePython
Visit the live site
07Engineering consultancy

Aziz Consultancy

A consultancy launch site with a hardened serverless enquiry pipeline

An independent consultant launching a practice needs a site that reads as established from day one, and productised services a prospect can understand without a discovery call.

We built a six-page site presenting three fixed-scope offers with clear deliverables, timelines and pricing, wrapped in a bespoke type and colour system rather than an off-the-shelf template.

The interesting part

The enquiry pipeline is a regional Cloud Function behind a hosting rewrite: honeypot spam filtering, server-side validation with length caps, every field HTML-escaped, reply-to threaded back to the enquirer, and the mail credential bound through managed secrets rather than an environment file.

What we built

  • Six-page site with a parallax hero and scroll-linked animation throughout
  • Custom design system, serif/sans pairing, fluid type scale and reduced-motion support
  • Services and pricing pages driven from structured data, each offer with its own deliverables
  • Serverless contact pipeline with honeypot filtering, server-side validation and HTML escaping
ReactViteTailwindReact RouterCloud FunctionsFirebase Hosting
Visit the live site
08B2B consultancyPre-launch

Brookstone Corporation

A dual-arm consultancy site hand-built with no framework and no build step

Brookstone sell two quite different things, custom software work, and intermediary services in physical commodities. The site had to hold both without reading as two businesses awkwardly stapled together.

We wrote it by hand: no framework, no build step, no package manager. The whole interaction layer is a single small vanilla JavaScript file, which keeps it fast and leaves nothing to go stale.

The interesting part

There is no package.json anywhere in this project. It still does responsive AVIF art direction, self-hosted variable fonts, a token-driven design system and observer-based scroll reveals, with an interaction layer of roughly 130 lines and a contact form that degrades gracefully to the visitor's mail client if its delivery endpoint is unavailable.

What we built

  • Single-page narrative homepage covering both arms of the business, plus contact and legal pages
  • Full-bleed autoplaying hero video with poster fallback and blocked-autoplay handling
  • Hand-built CSS design system with fluid type, self-hosted variable fonts and design tokens
  • Responsive art direction serving AVIF and WebP with sized fallbacks to prevent layout shift
  • Accessibility groundwork, skip links, labelled sections and reduced-motion handling
HTMLVanilla JSCSS design systemAVIF/WebPFirebase Hosting
09Health & fitnessIn-house product

In-house product

A calorie-target app built on a constraint solver, not a counter

This one is ours rather than a client's, we build in-house to keep sharp on problems nobody briefs us on. The idea is simple: commit to a total across a fixed window, and let each day's allowance be drawn rather than fixed, so the plan flexes around real life.

Making that safe is the hard part. Every draw has to leave the remaining days solvable, and the sampling has to avoid the upward drift a naive random range would introduce.

The interesting part

The sampler derives a feasibility window from the remaining budget and remaining days, then, rather than sampling it uniformly, which biases spend upward because the window's midpoint sits above the sustainable average, draws from the widest band symmetric around the running average. The result is drift-free, with a single tunable parameter for how much day-to-day variation you want.

What we built

  • Constrained daily-allowance engine that can never make the remaining schedule unsolvable
  • Food logging against two public nutrition databases, with barcode scanning and a manual fallback
  • Server-authoritative multiplayer backends with all game state resolved on the server
  • Installable offline PWA with a strict content security policy and full header hardening
  • Detailed database security rules with a dedicated test suite run against an emulator
  • Data export, account deletion, and a mode that hides every non-essential surface
ReactTypeScriptViteFirebaseCloud FunctionsFirestoreVitest
Visit the live site

Got something similar in mind?

Tell us what you're trying to build and we'll come back with a fixed scope and a fixed price, usually within 24 hours.