Under the hood
No page builder, no theme bought off the shelf. The public site and its back-office are built from scratch, the same way I build for clients. Here is what runs it.
Speed is a feature. These are the Core Web Vitals — Google’s user-experience metrics — measured live, not a screenshot of a good day.
Measured right now, in your browser, on this very page:
LCP
…
INP
…
CLS
…
FCP
…
TTFB
…
Next.js 15 · React 19
Static rendering + on-demand revalidation: fast to load, up to date within seconds of an edit.
NestJS · Fastify
A separate typed API, end-to-end typed with the front (shared validation schemas).
PostgreSQL · Prisma
A relational database: content, CRM and client projects in one coherent model.
Redis · BullMQ
Job queues (emails, PDFs, revalidation, follow-ups) and shared rate limiting.
S3 · MinIO
Cloud-compatible media storage, image derivatives generated on demand.
Docker · Traefik
The whole stack containerised, automatic HTTPS, one file to deploy.
Every client site comes with an admin built for it: pages, portfolio, quotes, invoices, CRM, appointments, a client portal, analytics. Around thirty screens, all custom.
30+
Admin screens
30+
API modules
40+
Data models
27
End-to-end tests
A few clickable demo apps, built the same way — state, interactions, data that persists, zero dependencies.
Sales CRM
Drag-and-drop pipeline, contact records, tasks.
Second-hand marketplace
Search, combined filters, cart, checkout.
Collection manager
CRUD, stats, lending, import/export.
Business dashboard
Hand-built charts, period switcher, no library.
Content back-office
The kind of admin I ship with a site.
Client portal
Project tracking, deliverables, messaging.
Security
Opaque sessions, CSRF protection, two-factor auth, rate limiting, security headers, stored content sanitised.
Privacy
No third-party tracker, no advertising cookie. Analytics are anonymised and hashed daily.
Ownership
The client owns the code and the data. Export everything in one click, host it anywhere.
Same care, from the first exchange to going live.