Skip to work

Software for sofas,floor plansand fairways.

I’m Leigh Atkins, a full-stack developer. I build browser tools around real-world things: measuring furniture on a drawing, turning a home tour into a reel, growing a golf course from a seed.

Recent work

Choosing a sofa guide, then drawing and entering two measurements.

SofaPaint

Measured drawings for made-to-order furniture

A sofa cover only fits if the measurements are right, and customers are not draughtsmen. SofaPaint gives them a drawing to follow: pick the guide that matches the sofa, armchair or cushion, or upload a photo, then draw each labelled dimension line and type its value.

The finished sheet exports as a PDF measurement report, or goes out as a share link the customer fills in themselves. A Cloudflare Worker handles the AI side: finding the furniture silhouette in a photo and proposing where the dimension lines go.

Canvas
Fabric.js, TypeScript
Build
Vite
Server
Node and Express on Vercel functions
Data
Supabase (PostgreSQL)
AI
Cloudflare Workers
Tests
Vitest, Playwright visual regression
ReelWalk timeline editor on a phone, showing the reel preview, clip timeline and room name captions
An exported reel, and the timeline editor that made it.

ReelWalk

Property reels that know the floor plan

A phone-first editor that turns listing photos, 360 photos and walkthrough video into a 1080×1920 Instagram Reel. A marker on the floor plan follows the camera from room to room, so a viewer always knows where they are in the house.

One tap builds a full tour from a set of 360 photos, walking through the doorways in a single move. The same tour can be recut for five kinds of buyer, each with its own music, pace and captions. The preview and the export share one Remotion composition, so what you see in the editor is what the render worker produces.

Web
Next.js 16, React 19, Server Actions
Video
Remotion, headless Chrome, WebCodecs
Data
PostgreSQL, Prisma 7
Jobs
SQS with a dead-letter queue, S3
Runtime
Docker, Kubernetes, Helm
Tests
Vitest, Playwright

No hosted demo yet. The whole stack runs locally with one Docker Compose command.

Hole 1 of a nine-hole round: flyover, drive, approach.

ThreeWood

A new 18-hole golf course from every seed

A 3D golf game for the browser, built for a phone held in one hand. Every round is a par-72 course grown from a shareable seed, so the same seed gives a friend the same course. A three-tap swing decides power and strike, and the greens break.

The routing of each course is planned by hand and the holes are generated, then checked for fairness. One deterministic physics model runs the live shot, the aim preview, the putt line and the headless test bot. Progress saves after every shot, the game works offline, and there is a daily course everyone shares.

Rendering
Three.js, custom GLSL
Courses
Seeded PRNG, simplex-noise terrain
Physics
Own deterministic ball simulation
Audio
Web Audio
Build
Vite, deployed on Vercel

Earlier projects

  • Sofa Style VisualizerUpload a room photo and a fabric swatch; Gemini reupholsters the sofa and keeps the room’s lighting.Next.js, Gemini, Cloudinary
  • SupportCopilotDrafts support replies grounded in a help-centre index, then adds the right product links.Python, LanceDB, Flask, Electron
  • GalacticHoroscopeOne TypeScript core shipped three ways: a CLI, a documented REST API and a 3D web page.TypeScript, Express, Three.js, Jest
Leigh Atkins

About

Most of what I build starts with a physical thing and a person who has to describe it to someone else: a sofa that needs a cover made to fit, a house that has to be shown to buyers, a fairway that should be worth playing twice.

I work mostly in TypeScript, across the browser (Canvas, Three.js, React and Next.js) and the services behind it (Node, PostgreSQL, queues and workers, Docker and Kubernetes). I like projects where the interface has to be exact, because someone will cut fabric or book a viewing based on what it shows.

Contact

hello@itembox.site

© 2026 Leigh Atkins