• This Blog
    • Personal website
    • Built using Jekyll and hosted on Github pages
    • Source code
  • Eighty20 Split Game
    • Simple “vibe-coded” estimation game
    • Built using Next.js and hosted on Vercel
    • Described in this blog post
    • Source code
  • Codenames
    • Web app implementation of the popular board game
    • Built using Next.js and hosted on Vercel
    • Uses Superbase backend with Realtime broadcast and presence to enable multiplayer gameplay on separate devices
    • Improved on previous implementation with dark mode, responsive portraint and landscape layout on mobile and better overall styling
    • Source code
  • PDF Statement Reader
    • Python library and command line tool for parsing pdf bank statements
    • Addressed some long outstanding issues on my most starred repository on github (>50)
    • Converted virtual environment toolchain from pipenv and tox to uv
    • Updated all underlying packages and resolved resulting issues
    • Implemented test suite and prepared for GUI integration
    • Source code
  • PDF Table Extractor
    • Frontend GUI to generate config file for PDF Statement Reader
    • Built in React as a single page application, with initial scaffolding in Bolt.new and hosted on Netlify
    • Opens and displays pdf bank statement (with password if required)
    • Allows interactive selection of table area and columns
    • Exports config file usable for batch processing
    • Source code
  • Eggcell Data Analysis
    • Data analysis tool for accessing and pivoting survey and other data sets
    • Built with React Frontend and Python FastAPI and Celery backend, hosted on AWS with deployment of docker containers to EC2
    • Frontend focus on:
      • routing with URL state using Tanstack Router
      • layout and drag-and-drop interactivity
      • theming (for easy client whitelabel) and styling with shadcn and tailwind
    • Backend focus on:
      • Well typed data structures and routes using FastAPI, Pydantic and Sqlmodel
      • Distributed data processing using Celery with async API request pattern
      • Support for multiple data sources including SQL, CSV and Parquet files
      • Performant analytics queries using DuckDB
    • Future planned functionality to include free text user questions, served by MCP queries on the underlying data sets
    • Source code in private repo
  • Eggbaskets Financial Planning
    • Financial Planning app for goal based visualisation of savings targets and requirements. Allowing regular users to get a better idea of the time based value of their investments and the effects of volatility to manage risk appropriately
    • Built in React with the Tanstack Start framework and hosted on Vercel
    • Integrated multiple SaaS offerings including
      • Convex backend
      • Clerk for auth
      • Sentry for application and error monitoring
      • Posthog for user analytics
    • Source code in private repo
  • 40th Birthday Invite
    • Invite to my 40th birthday party, including RSVP functionality with +1s and dietary preferences, and an admin mode for viewing RSVPs and emailing guests
    • Vibe coded with Cursor as a React SPA deployed on Vercel with a Convex backend
    • Source code