Projects

A running overview of the things I am building — what they do, where they stand, and what is next.

Gambling Tracker

Live

An offline-first phone app for tracking a casino trip.

Keeps a running bankroll across a casino trip and logs sessions and spending in a few taps — live and tournament poker, slots, table games, and non-gambling spend — each tagged to the casino where it happened. A bankroll graph and trip-review screens let you see how a trip went, broken down room by room.

Designed for one-handed use on an iPhone and built to keep working without a signal: trip data lives on the device, so logging continues even when the casino floor has no reception. Casinos come from a built-in catalog you can extend with your own custom rooms and logos, and each trip draws from the set you pick at the start.

Because everything lives in on-device storage, there’s a manual backup path: export your whole history to a single JSON file and import it back later, choosing to merge it in or replace what’s there — enough to move data between devices or keep a safe copy.

MeepleBoard

Live

A personal board-game play tracker.

Shows my whole board-game collection as a grid of box art, tracking each play as a meeple (wood for one play, silver for ten, gold for fifty). I can filter to a group of players or a target player count to help pick the next thing to play.

The public view is optimized for use as a wall-mounted display; data entry is locked behind an admin portal I reach from my phone.

  • .NET 9
  • EF Core
  • React 19
  • TypeScript
  • Vite
  • SQLite
  • Docker
  • Caddy
  • DigitalOcean
  • Azure DevOps
Visit →

Personal Blunder Trainer

Live

Turns your own chess mistakes into practice puzzles.

Pulls in your Chess.com games, uses the Stockfish engine to find the moments you went wrong, and turns those exact positions into training puzzles — so you drill the patterns you actually get wrong until they stop recurring. It tracks repeated weaknesses over time, links each puzzle back to the real game it came from, and keeps every player’s history separate.

Built as three cooperating services — a web front end, an API, and a background analysis worker — with careful data modeling so the same blunder across different games is recognized as one recurring lesson.

Next Richer puzzle explanations and more trustworthy game-phase classification.

  • Next.js
  • ASP.NET Core
  • PostgreSQL
  • Supabase
  • Stockfish
  • Docker
  • Microsoft Entra ID
  • Azure DevOps
Visit →

The Chore Drawer

Live

A playful household chore picker.

Pull open the drawer to draw a random chore that’s currently due, then pin it to the wall to commit to it. Up to three accepted chores hang on brass tacks and persist across visits, so one you took but couldn’t finish is still waiting next time. When you’ve actually done it, drag the slip off its tack and let it float away. Chores recur on a set cadence — daily, weekly, monthly, or quarterly — and resurface once their window lapses.

It’s a personal household tool, themed like an old library card catalog. A shared PIN gate keeps strangers out of the public URL — first visit redirects to an unlock page, and entering the PIN sets a signed 30-day cookie.

Next Build a visual number pad for PIN entry — make unlocking the site a tap-friendly keypad rather than a plain text field.

  • .NET 10
  • Blazor Server
  • EF Core
  • SQLite
  • Docker
  • Caddy
  • DigitalOcean
  • Azure DevOps
Visit →

Vital Vortex

Live

A personal macro and nutrition tracker.

Plan meals across the day, track water and macros (calories, protein, fat, carbs, sugar, fiber) against personal goals, and review a day-by-day history. Goals are computed from each person’s profile, and a built-in food search pulls nutrition data straight from the USDA database so entries fill themselves in.

Every account’s foods, plan, history, and settings are fully separate. It started life as a Google Sheets-backed script and has since been rebuilt as a proper self-hosted web app.

Next Feature direction is set by the app's primary user — its de facto product manager.

  • Flask
  • Gunicorn
  • Python
  • SQLite
  • Docker
  • Caddy
  • DigitalOcean
Visit →