Developer · Johannesburg
I build small web products
and run the ones that work.
Right now that's Lumen, a site system for wedding photographers, and Faircopy, a proposal tool for freelancers. I design them, build them, deploy them, and answer the support emails.
Open to select client work
01 / Work
What I'm building
Products
- 01 Lumen Live demo A site system for wedding photographers. Every client site comes off one codebase and a single config file, including a ranking page per town generated from an array, so a new site goes live in under three hours. Sold as a build plus a monthly care plan, not a one-off. The link opens a working demo: stock photographs, fictional photographer.
-
02 Faircopy In development Paste a messy client brief, get back a proposal you can edit, save and export. Built for freelancers who lose work to the gap between the call and the quote.
Client work
Also built
- 04 Dev Blog template A blog layout built around long-form reading: measured line lengths, real typographic hierarchy, no infinite scroll. Free to use, the code is on GitHub.
- 05 Etch A Sketch A grid you colour in by dragging across it. Each square takes a random colour on the first pass and deepens every time you go back over it, so scribbling builds up tone. Rainbow, single-colour and eraser brushes, a canvas that resizes live from 4 to 100 squares a side, and it works on touch. Plain JavaScript, no dependencies.
02 / About
A bit about me
I'm William, a developer in Johannesburg. I build web products and then run them, which means I do the design, the code, the deploys and the support emails. It's a useful discipline, since you stop shipping things that are clever to build and annoying to own.
Lumen is the main one. It's a site system for wedding photographers, sold as a build plus a monthly care plan rather than a one-off. Every client site runs off the same codebase and one config file, so a new one goes live in an afternoon instead of a fortnight.
I still take client work when the fit is right, usually small businesses who need one site that works properly and then stays out of their way. In practice that means pages that load in about a second on a phone with bad signal, forms that actually submit, and layouts that hold together at 320 pixels wide. I care about accessibility, because a site people can't use isn't finished.
When I'm not building, I'm usually climbing or picking apart some technology I have no immediate use for.
- Build
- HTML · CSS · JavaScript · TypeScript
- Frameworks
- Astro · Next.js · Tailwind CSS · WordPress
- Platform
- Supabase · Cloudflare Pages · Netlify · Git
- Focus
- Performance · Accessibility · Local SEO · Responsive layout
03 / Writing
Notes from building things
Mostly about running small products rather than just building them: what I tried, what it cost, and what the numbers actually said.
04 / Contact
Start a project
Tell me roughly what you need and what you're working with. I'll come back to you within a day or two, usually with questions.