Skip to main content

All Projects

Screenshot of JobTally
Live React TypeScript Node.js

JobTally

Job management app for UK tradespeople — track quotes, invoices, and customers without the spreadsheet chaos.

Why I built this

My dad is a plumber and he was tracking jobs in a notebook. I watched him lose a quote because he forgot to follow up. JobTally solves the exact problem I saw happen — nothing more, nothing less.

Screenshot of Space Game
In Development Godot GDScript

Space Game

Real-time isometric 4X strategy — expand across a procedurally generated galaxy, build economies, and fight rival civilisations.

Why I built this

I wanted a strategy game I could play in a browser tab without installing anything. Godot's HTML5 export makes that possible. Building it is also teaching me systems design — economies, AI, procedural generation — through the best kind of problem: a game.

Screenshot of Recipe Scaler
Live Svelte TypeScript

Recipe Scaler

Scale any recipe up or down in seconds — paste it in, enter your serving count, get adjusted quantities with unit conversions.

Why I built this

I cook for one person most of the time, and scaling recipes mentally is the kind of low-stakes friction that stops you from trying new things. I built this to remove that friction entirely. It took a weekend and I use it every week.

Screenshot of Workout Log
In Development React Native SQLite

Workout Log

Offline-first fitness tracker for lifters — log sets, track progressive overload, review your history without an account.

Why I built this

Every gym app I tried wanted an account, a subscription, or both. I just want to log a set and move on. This stores everything locally on device — no cloud sync, no sign-in, no upsells.

Screenshot of Markdown Preview
Coming Soon Rust WASM

Markdown Preview

Instant in-browser Markdown editor with live preview — no server, no install, works offline via a compiled WASM renderer.

Why I built this

I wanted to see how far you could push a browser-based editor using Rust compiled to WASM. No Node, no bundler at runtime — just a binary that parses Markdown at near-native speed. It is as much a technical experiment as a tool.

Screenshot of Budget Tracker
In Development Next.js PostgreSQL

Budget Tracker

Monthly budget planner with envelope-style allocation — assign spending limits per category, track actuals against them.

Why I built this

I tried three popular budgeting apps before building this. They all optimised for bank syncing and notifications rather than the one thing I needed: a clear view of where I am against a plan. This does that and nothing else.

Screenshot of Inference Idle
Coming Soon Godot GDScript

Inference Idle

LLM token idle game — you are the AI, generate tokens, scale parameters, watch the graphics evolve from pixel art to HD.

Why I built this

Idle games are a fascinating design problem: meaningful progression with minimal friction. Layering that onto the actual mechanics of how LLMs scale felt like a way to make something genuinely original. The meta-joke of an AI building a game about AIs building themselves was too good to ignore.

Screenshot of Link Shortener
Live Go Redis

Link Shortener

Fast URL shortener with custom slugs — built for high-throughput redirects using Go and Redis.

Why I built this

I needed short links for a project and none of the free services gave me custom slugs without a paid tier. Building one in Go was a good excuse to get comfortable with the language. The whole thing runs on a single small VPS and handles more traffic than I will ever need.