Skip to main content
Featured Work

Products we're proud of.

Platforms, webshops, iOS apps, and the networks they run on. Here's what that looks like.

SaaS Platform + iOS App Rails 8 GraphQL PWA Stripe WebAuthn SwiftUI

BK9 Hoopers

A full competition management platform for dog sport, with a native iOS companion app – built from scratch, not configured from a template.

BK9 Hoopers is a production-grade SaaS platform managing the complete lifecycle of dog agility competitions – from entry registration through real-time scoring, payment processing, and online courses. Built on a modular Rails monolith spanning six subdomain applications, with a native SwiftUI iOS app for following competitions live.

01

Real-time scoring

Action Cable + GraphQL subscriptions push live run results to spectators as they happen.

02

Native iOS app

SwiftUI and Swift 6. Live run tracking over WebSockets, PKCE OAuth sign-in, tokens in the Keychain.

03

Scored in a field with no signal

A full competition scored ringside on a phone with no reception, live to spectators – the offline-first PWA queues every entry and syncs the moment a bar of signal returns.

04

Multi-tenant SaaS

Six subdomain applications from one modular codebase. Auth, admin, members, results, API, CMS.

05

Payment processing

Full Stripe integration with refunds, credit system, revenue splits, and webhook handling.

06

Passkey auth

WebAuthn + OAuth2 + PKCE. Production-grade authentication.

Domain complexity note

The domain complexity here is significant – multi-level dog progression rules, real-time slot management, multi-org RBAC, and an offline-first PWA for ringside scoring. 312 test files and 42,000+ lines of test code keep it honest.

Club Platform Rails 8.1 OAuth2 + PKCE GraphQL RBAC Stripe

Canine Sports Club

A multi-subdomain platform for competitive dog sports clubs – memberships, events, results, and a CMS the club runs itself.

Canine Sports Club runs as four applications from one modular monolith – public site, authentication, admin panel, and member portal – with enforced boundaries between domains. It acts as its own OAuth2 identity provider, built PKCE-first so the companion iOS app authenticates against the same accounts as the web portal.

01

Modular monolith

Seven packs with enforced dependency boundaries, checked in CI. One codebase, no spaghetti.

02

Own identity provider

Doorkeeper OAuth2 with PKCE enforced. One account across web, admin, portal, and the iOS app.

03

Fine-grained RBAC

Every mutating action gates on an explicit permission key, scoped per organisation.

04

Self-serve CMS

Editors change public pages without a deploy – safely, behind CMS-specific permissions.

05

Full audit trail

Every change versioned, nothing hard-deleted. You can always answer "who changed this, and when?"

06

100% coverage, enforced

Line and branch coverage gates in CI, zero Brakeman warnings. Not aspirational – enforced.

Domain complexity note

Multi-organisation permissions, an OAuth2 provider with PKCE, and a CMS non-technical editors can safely use – all in one Rails codebase, behind a CI pipeline that refuses anything below 100% line and branch coverage.

E-commerce Spree 5 Rails Stripe PayPal PostgreSQL

The Gentleman's Groom Room

A complete Spree Commerce webshop for a men's grooming business – storefront, admin, and payments, replacing a legacy Rails build.

Built on Spree Commerce 5 – storefront, admin dashboard, and API – with a bespoke theme and custom page sections for the brand. Payments run through both Stripe and PayPal Checkout, and the shop replaces a Rails 5-era storefront that had reached the end of its life.

01

Spree 5 platform

Full storefront, admin dashboard, and API on the current major release – not a five-year-old fork.

02

Two payment rails

Stripe and PayPal Checkout side by side, so customers pay however they prefer.

03

Bespoke storefront theme

A custom Spree theme and page sections built for the brand, not a stock template with a new logo.

04

Legacy replacement

Superseded a Rails 5-era Spree build that had fallen years behind on upgrades.

05

Order management

Inventory, fulfilment workflows, and stock control through the Spree admin.

06

Containerised deploys

Docker-based and reproducible, from development through to production.

Domain complexity note

E-commerce edge cases live in checkout and payments – refunds, failed captures, webhook retries. Running two payment providers side by side means handling both sets of failure modes properly.

Work with us

Working on something like this?

Tell us what you're building. A Code Bunny will tell you honestly how we'd approach it.

Let's talk