Budget
A budgeting app that runs entirely in the browser, wearing early-2000s corporate chrome and a Frutiger Aero skin.
Next.js · React · TypeScript
Write-up →A directory of apps that I've created.
Simple productivity solutions.
A budgeting app that runs entirely in the browser, wearing early-2000s corporate chrome and a Frutiger Aero skin.
Next.js · React · TypeScript
Write-up →A minimal daily habit tracker — seven dots per habit, a streak that counts the way you'd count it, and nothing that leaves the browser.
React · TypeScript · Vite
Write-up →A static notes site whose content lives in a separate repo — a plain folder of markdown, with ordered "courses" assembled from it at build time.
Astro · TypeScript · GitHub Actions
Write-up →A pomodoro timer styled like a Windows 95 application. One HTML file, no dependencies, no build step.
HTML · CSS · JavaScript
Write-up →A local-first recipe book that scales any recipe to the number of people at the table, prints the amounts the way a recipe prints them, and keeps the screen awake while you cook.
React · TypeScript · Vite
Write-up →Flashcards with real spaced repetition and quizzes built from them, running entirely in the browser — no account, no server, no subscription.
Next.js · React · TypeScript
Write-up →A multi-list todo app that keeps everything in the browser — no account, no server, no sync, and nothing to pay for.
Next.js · React · TypeScript
Write-up →A local-first list of films and books — what you mean to get to, what you finished, and what you thought of it — kept in one browser with no account and no lookups.
React · TypeScript · Vite
Write-up →Games, and tools for getting better at them.
A browser trainer for shot release timing that separates consistency from bias — because one is a single correction and the other is weeks of work.
TypeScript · Canvas · Vite
Write-up →A top-down free-runner in Phaser 3 with a three-act story — no build step, no npm, and every level defined as a row of data.
Phaser 3 · JavaScript · ES Modules
Write-up →A typing practice game whose passages are written on the fly by a language model running in your browser — no API, no key, and no text leaving the tab.
TypeScript · Vite · transformers.js
Write-up →