The spreadsheet
stops here.
Own the code.
Internal tools, booking systems, and ops dashboards -- built to your exact workflow. Fixed scope, fixed price, six to ten weeks. When we hand it over, it is yours: repo, data, accounts, the lot.
Six pillars. No negotiation.
Every web app we build follows the same six-pillar approach. Not optional extras -- non-negotiable foundations that keep the codebase healthy and the handover clean.
Scope + data model first
Day one is paper. We agree the data model and scope in writing before a single line of code. No scope creep because the scope is signed.
Auth + roles day one
Authentication and role-based access are built in week two -- never bolted on at the end. Every user sees exactly what they should.
Stripe billing wired in
If the app charges for anything, Stripe is wired in week three. Subscriptions, one-off payments, invoicing -- all tested before the build phase ends.
Integrations in code
CRM, email, calendar, accounting -- every integration is written as code, not configured through a GUI. Portable, testable, yours.
Tests gate every merge
No pull request merges without a passing test suite. We target 80%+ coverage across unit, integration, and end-to-end tests.
Hand-over · you own it
Repo access, local dev setup, training videos, written handbook, and a 30-day window to ask anything. We do not disappear at go-live.
11 internal apps shipped. £128k in SaaS replaced.
Across our eleven web app builds, clients have replaced an average of £11.6k per year in SaaS subscriptions -- tools they were bending their process around rather than tools built for their process. Median build time is six weeks.
We were paying £1,400 a month for four SaaS tools that did not talk to each other. RL built us one app in six weeks that did everything in one place. The build paid for itself in under four months and now we own it outright.
Three things most
app agencies skip.
Most web app builds run over budget, over time, and hand you a codebase nobody else can maintain. Three things we do differently.
42 components. Documented. Reusable.
Every app we build gets a living component library. New screens are built from existing pieces. Your team can maintain the codebase without us.
- Every component documented in Storybook
- Accessible by default -- WCAG 2.2 AA minimum
- Design tokens from your brand, not from scratch
No merge without a passing test suite.
Tests are written before the feature, not after. Every pull request runs the full suite -- unit, integration, and end-to-end. 88% median coverage across all builds.
- Tests written before the feature (TDD)
- GitHub Actions blocks merge on any failure
- End-to-end tests with Playwright on every PR
Auth and payments, done properly.
Authentication, role-based access, and billing are wired in week two -- never bolted on. We use production-grade services: Clerk for identity, Stripe for revenue.
- Sign-in: Clerk -- magic link, social, SSO
- Roles and permissions: row-level security in Postgres
- Stripe Checkout and Billing Portal, tested end-to-end
Built on a stack that lasts.
Every technology we use is open-source-friendly, portable, and in active production. No vendor lock-in -- you can take the codebase to any engineer.
Framework + database
Auth + identity
Billing + payments
Observability
Fixed scope. One price.
A web app engagement is a single fixed-scope project with a price agreed before work starts and a published go-live date.
Build project
A complete web app -- from data model to deployed production -- with full test coverage, auth, billing, and a clean hand-over.
- Scoped in writing before work starts
- Fixed price -- agreed before kick-off
- Published go-live date
- Weekly Friday demo on staging
- Full test suite · 80%+ coverage target
- 30-day hyper-care window post-launch
Care + iteration plan
Ongoing hosting, monitoring, dependency updates, and a monthly hour bank for small changes and new features.
- Managed hosting · Vercel UK edge
- Uptime + performance monitoring
- Dependency + security patches weekly
- 4 hours / month for small changes
- Emergency fix SLA · 4 hours