Projects
11 things I have built, featured first. Every card links to the code. In the terminal, projects <slug> prints the same.
featuredactivesince Mar 2026Household finance in one Postgres database, with a dashboard that shows what it adds up to.
Accounts, transactions, income, RSUs, 401(k), property and vehicles for one household in a database the owner can also open with psql, plus a dashboard and a year-by-year retirement projection. Bank sync through SimpleFIN; W-2s, pay stubs, mortgage and brokerage statements are read by Claude and staged for confirmation before anything is written — AI output is never saved unreviewed.
- Multi-tenant: a Postgres schema per household, search_path set per request
- Every requirement lives in a ledger (docs/requirements/ledger.yaml) with a test and a screenshot as evidence; CI validates it
- Public read-only demo seeded with a fictional household
- FastAPI
- SQLAlchemy 2
- Alembic
- PostgreSQL 16
- Vue 3
- TypeScript
- Tailwind
- ECharts
- Claude API
- Docker
repolivedemo
featuredpre-releasesince Jan 2026A Windows app that gets a flight or racing sim rig ready, fixes what isn't, and launches the game.
For sim PCs that are also used for other things. RigReady checks that devices are plugged in, helper apps are running, monitors are arranged and game bindings are intact, puts right what it can, then launches. It also manages bindings, backups and hardware troubleshooting for DCS, iRacing, Le Mans Ultimate, BeamNG, MSFS and Assetto Corsa. Version 2.0 was rebuilt from the ground up in a weekend with parallel Claude Code agents working from a requirements ledger.
- Electron + Vue 3 + TypeScript, with a ports-and-fakes architecture so every feature is testable without real hardware
- Playwright e2e against recorded rig scenarios, plus packaged-installer tests
- Open source (MIT), pre-release
- Electron
- Vue 3
- TypeScript
- Playwright
- Python
- Windows
repolive
featuredactivesince Sep 202540 containers on a Dell R630 in my basement, as infrastructure-as-code.
The server this site runs on. Docker Compose for everything, NGINX in front with Cloudflare origin certs and a LAN-only *.ops wildcard, Prometheus + Grafana + cAdvisor for metrics, OpenSearch + Fluent Bit for logs, Uptime Kuma and ntfy for alerting, and Dependency-Track fed by nightly SBOM scans of every running container. Deploys are GitHub Actions → ghcr.io → Watchtower; a weekly fresh-base rebuild and a Saturday security sweep keep images patched.
- Pinned image digests, least-privilege compose (no Docker socket for app containers, capabilities dropped where possible)
- Backups, post-reboot checklist and upgrade runbooks live in the repo
- Run `homelab` in the terminal for the full catalog
- Ubuntu Server
- Docker Compose
- NGINX
- Cloudflare
- Prometheus
- Grafana
- OpenSearch
- GitHub Actions
repolive
featuredactivesince Apr 2026A to-do app built around planning cycles instead of calendar weeks.
Tasks live in user-initiated cycles under two independent buckets, personal and professional. Open items carry forward when a cycle closes and a push count records how many times — the paper-notebook ritual of rewriting the list, as software. Tasks keep a persistent identity across cycles, so longevity and lineage views come from the same source of truth. Built in a day from a written spec.
- FastAPI + PostgreSQL + Vue 3, Google OAuth, per-user API keys
- Public read-only demo
- FastAPI
- PostgreSQL
- Vue 3
- Docker
repolivedemo
Plan the earthwork for a flat pad from an iPhone LiDAR scan.
Upload a .ply or .e57 point cloud, draw the rectangle where the carport, patio or foundation goes, and get cut/fill volumes, a fill-level slider, retaining-wall length and height along each edge with block counts and cost, and a before/after 3D view of the finished grade. Built to plan a carport on my own sloped lot.
- Pure-NumPy voxel downsampling to an elevation heatmap; Three.js before/after terrain
- Flags wall heights that need geogrid or an engineered design under typical MA code
- Deliberately no framework: one Flask handler and a single-file frontend
- Python
- Flask
- NumPy
- pandas
- Three.js
- Vanilla JS
repo
Which CT clamp is the dryer? A web app that maps, calibrates and labels a whole-home energy meter.
Built around the CircuitSetup 6-channel ESP32 energy meter and Home Assistant. panel-tool covers what the upstream firmware doesn't: mapping each current transformer to a breaker, driving calibration, and printing a two-page wall reference for the panel. Ships an example ESPHome config for a 12-CT split-phase install.
- Runs as a container on the homelab (energy.ops)
- CLI calibration scripts for people who'd rather script it
- Python
- ESPHome
- Home Assistant
- Docker
repo
A morning brief printed on a thermal receipt printer at 5 AM.
A Python module of chart and layout primitives for an Epson TM-m30III receipt printer, plus a scheduled report: tasks for the day, calendar, finances from Tallied, weather, stocks, home energy from Home Assistant, server health, GitHub activity and a short AI summary.
- KPI cards, bar charts and sparklines rendered in ESC/POS
- Runs as a container on the homelab (report.ops)
repo
Recipes as markdown, with a site, a grocery-list builder and printable PDFs.
Thirty-odd recipes organized by cooking method. A build script turns the markdown into a static site and a combined PDF; the site builds a grocery list with Whole Foods links from whichever recipes you pick. It's also what my weekly grocery-ordering agent reads.
- Markdown
- JavaScript
- Python
- Make
repolive
A terminal you can type into, that search engines and AI assistants can still read.
Nuxt 3 SSR with a Flask API, shipped as two containers from GitHub Actions. The 2016 original was static HTML; it became a Spring Boot app on Heroku in 2017, a Firebase site in 2019, and this in 2025. Everything you see is rendered from three JSON files (resume, projects, service catalog) that the API also serves.
- Full content is server-rendered for crawlers; the terminal is progressive enhancement
- Maintained mostly by AI agents working from docs/PRODUCT.md and a requirements ledger
- Nuxt 3
- Vue 3
- TypeScript
- Flask
- Docker
- GitHub Actions
repolive
A Chrome extension that makes Looker dashboards presentable on a big screen.
One click (or Ctrl+Shift+P) hides Looker's navigation, headers, filter bars and edit controls and expands the dashboard to fill the screen — for meetings, demos and wall displays. Settings sync across Chrome profiles.
- JavaScript
- Chrome extension
repo
One-line shell setup for macOS, Linux and remote servers.
bash and zsh with shared config, Powerlevel10k or Starship prompts, sensible fallbacks over SSH.
repo