The portfolio
The portfolio at a glance. For deploy and hosting defaults, see ADR-003. Each project's own repo documents its specifics.
Web backends
FilmDuel Movie and TV ranking via ELO duels. FastAPI + React, PostgreSQL/Supabase. FastAPI · React · Postgres live Kindred An MCP server + web app for reflective journaling. You talk to your AI assistant; Kindred provides the memory, structure, and patterns. No streaks, no nudges — just a quiet companion that remembers. TypeScript · MCP · React · Supabase · Railway live Reli Personal AI assistant with a knowledge graph. Python/FastAPI + React, Postgres with pgvector. FastAPI · React · pgvector wip Word Coach Annie AI writing assistant for novelists. Next.js 15, PostgreSQL/Supabase, Prisma, with an MCP server exposing 48 tools. Next.js · Supabase · Prisma wip Lachesis Hosted MCP server for lightweight requirements management, scoped per GitHub repository. Requirements are stored as Markdown in each repo and linked to GitHub Issues. Python/FastMCP, MCP OAuth 2.1. Python · FastMCP · Supabase · Railway live Muse & Mingle London cultural events for creative people: exhibitions, expos, talks, workshops and community meetups, gathered from APIs and hand-written scrapers into one feed. Rust (axum, sqlx), Postgres. Rust · axum · sqlx · Postgres · Railway live Zoomies A 3D endless runner for your phone. It is 3am and a ginger and white cat has the zoomies: run the hallway, garden and rooftops, eat kibble, dodge furniture. Three.js, no build step. Three.js · Web Audio · Caddy · Railway live
Mobile
Cosmic Match Space-themed match-3 mobile game. Flutter + Flame, Android. Flutter · Flame wip The Un-Reminder Stochastic, context-aware habit prompts designed to defeat notification blindness. Native Android; notifications are generated through a private Cloudflare Worker proxy to Requesty.ai, so no third-party account is required. Android · Kotlin · Cloudflare Worker wip