Small things I've built for home, friends and board-game nights. Most of them use AI for the fiddly bit and plain, tested code for the rest.
AI plant-care app
Plant Home
A mobile-first PWA that identifies plants from a photo with OpenAI, then keeps track of their care. Server-side API handling, usage limits, Supabase storage, private image access and Home Assistant notifications. Built with Codex and Claude Code, validated with builds, tests and manual checks.
- React
- TypeScript
- OpenAI
- Supabase
- PWA
Household bin tracker
BinWatch
Knows which bin goes out next, and checks the doorbell camera to see whether it actually has. A vision model reads photos from a Reolink doorbell via Home Assistant and returns strict JSON.
- Next.js
- OpenAI vision
- Upstash Redis
- Vercel Blob
- Home Assistant
Board-game scorer
Score 7 Wonders
Photograph each player's city and it scores the game. The AI only reads the board; scoring is deterministic code over a full, tested card database covering every expansion.
- PWA
- AI vision
- TypeScript
- Tests
Party-game hub
Fun Games
Krillion, Word Race and Closest Wins for solo, 1v1 or up to ten players in a room. Krillion has 7,800+ answers and an optional Claude judge for off-list answers.
- React
- Node
- WebSockets
- Claude API
TV party game
Chameleon Board
Plays The Chameleon on the TV, controlled from your phone. Type any category and AI builds a new board, saved for next time.
- Next.js
- Upstash Redis
- AI generation
Sports-court booking
Court Finder
Lists open badminton, table tennis and squash courts at two local leisure centres and books them in a tap, using the site's own JSON API. Home Assistant alerts when a slot frees up.
- Node
- REST
- Caching
- Home Assistant
Game balancing
Duel objectives simulator
A simulation and balancing system for a fan-made 7 Wonders Duel expansion, playing thousands of games to tune private objectives.
Scheduled scraper
Swim timetable
Logs in every day, scrapes the local pool's Swim for Fitness sessions and publishes a mobile-friendly timetable. Read-only, with debug artefacts on failure.
- Playwright
- GitHub Actions
- GitHub Pages
Home Assistant
Home automation
Lighting, presence sensing, TV controls and household devices tied together with API-driven and event-based automations, plus an AI-assisted doorbell workflow.
- Home Assistant
- APIs
- Automations
University & freelance
Earlier work
A Python/OpenCV SET-card recognition algorithm for my dissertation, a Java autonomous vehicle using Dijkstra's algorithm and PID control, and commissioned Java/MySQL plugins.