Engineering
How this site is built
We build software for a living, so our own website should hold up to the same standard. Here is what it does, how we keep it fast, and the numbers to back it up.
Measured in your browser, just now
–
Page weight
Compressed size of everything this page loaded.
–
Requests
HTML, CSS, JavaScript, fonts and images.
–
Third-party requests
Fonts, scripts and analytics are all served from this domain.
–
Load time
Until the browser's load event, on your connection.
01
Decisions
Prerendered, not rendered on request
Every page, including each case study, is generated as static HTML at build time and served from Vercel's edge. There is no server work per visit.
JavaScript only where something is interactive
Pages are React Server Components. Only a few small pieces run in the browser: the header menu, the card spotlight, the booking form and the live numbers on this page.
Animations that never block the main thread
All motion is plain CSS on transform, opacity and filter, which the GPU composites. No animation library ships to the browser, and everything stops for visitors who prefer reduced motion.
Zero third-party requests
Fonts are self-hosted, the office address replaces a Maps embed, and analytics are served from our own domain without cookies.
Every byte earns its place
Images are served as AVIF or WebP at the size each screen needs. The logo font is subset to the characters it uses, from 55 KB down to 7.5 KB.
Budgets enforced on every pull request
GitHub Actions builds the site and runs Lighthouse three times on key pages. Any change that breaks a budget below fails the check.
02
Budgets
These limits live in the repository and are checked on every pull request.
- Lighthouse performance score
- ≥ 90
- Lighthouse accessibility score
- 100
- Lighthouse best practices score
- 100
- Lighthouse SEO score
- 100
- Cumulative Layout Shift
- ≤ 0.01
- Total Blocking Time
- ≤ 200 ms
- JavaScript per page
- ≤ 135 KB
- Total page weight
- ≤ 300 KB
- Third-party requests
- 0
03
Before and after
Lighthouse on the homepage, simulating a mid-range phone, before and after the October 2026 rebuild.
| Metric | Before | After |
|---|---|---|
| Performance score | 76 | 97 |
| Accessibility score | 91 | 100 |
| Total Blocking Time | 410 ms | 50 ms |
| Page weight | 358 KB | 254 KB |
| JavaScript on first load | 176 KB | 124 KB |
04
Stack
- Next.js 15
- React 19
- TypeScript
- Tailwind CSS 4
- Vercel
- GitHub Actions
- Lighthouse CI
Want this level of care in your product?
We bring the same engineering discipline to every app, workflow and MVP we build.