Skip to content

Projects

Client work and things we built because we wanted them to exist. For each one: what was needed, what we did, and what came out of it.

The Leart website open on a phone

Leart

Takeover, performance and SEO · 2023 onwards

A content site about essential oils that had grown slow and invisible to search engines. We took over the codebase, moved it to Next.js with server-side rendering on Firebase, cut the JavaScript bundle down, and rebuilt the metadata so pages could actually rank.

  • [Measured result, e.g. Lighthouse performance from 42 to 96]
  • Server-side rendering on Firebase, so pages arrive complete instead of loading in
  • Meta tags and structured data on every page
Next.jsTypeScriptFirebase
Geo Bounce gameplay

Geo Bounce

Design, code, analytics, store listing · 2023

A phone game where you bounce a ball through geometric mazes. Designed and built in Unity, with levels written as JSON so tuning difficulty didn't need a rebuild, plus a small analytics service to see exactly where players gave up. That data drove most of the changes after launch.

  • 30+ levels, each one a data file rather than hardcoded
  • Per-level completion and drop-off tracking
  • Published on Google Play
UnityC#Node.jsFirebase
More about Geo Bounce
Covid Helper app screens

Covid Helper

Android app and Spring backend · 2020

Built in the first weeks of the 2020 lockdown. People isolating posted what they needed on a map; volunteers nearby claimed the request. The app had to work for older users who had never installed anything, so: big buttons, three screens, no account setup beyond a Google login.

  • Requests and volunteers matched with the stable marriage algorithm, so nobody gets claimed twice
  • Map-first interface built around location, not lists
  • OAuth2 login, nothing stored that didn't need to be
Android (Java)SpringGoogle Maps APIOAuth2
The build server's project overview

A build server that needs no pipeline scripts

Thesis · 2020

Jenkins-style tools make you write and maintain pipeline configuration for every service. This is a server you point at a git repository; it builds and runs each microservice in its own container, with services talking only over HTTP. One shared machine does the building, so laptops don't have to.

  • One container per service, isolated by default
  • Configuration lives in the repository, not in the tool
  • Several developers share one build server
JavaSpringDockerPostgreSQL