LGBT Voice Tanzania
Website for an LGBT+ advocacy organization, built on WordPress so the team can publish and manage it themselves.
Senior full-stack developer · Ontario, Canada · Remote
Nine years shipping web and mobile products in React Native, TypeScript, Node and Postgres. Good Fights is a Mobile and Web app I built and operate from the database up: apps on both stores, a Next.js site, the API behind them, and the scrapers and LLM enrichment that keep it current — 3,415 users, 76,516 ratings, all on infrastructure I operate myself.

Real numbers from an app I built and run. Updated hourly.
Real products, live today. Each one has a short write-up of what was built, what was hard, and what happened after launch.
A fight-rating app for combat-sports fans — live on the App Store and Google Play, with a fight catalogue going back to 1993 that daily scrapers keep current.



Website for an LGBT+ advocacy organization, built on WordPress so the team can publish and manage it themselves.
A WordPress site rebuilt as fast, dependency-free static HTML — every page migrated word-for-word, redesigned, and ready to host anywhere.
Business website for a local health clinic, with an integrated booking system — the kind of site most small businesses actually need.
Everyone says they use AI now. Here is what that actually looks like when it has to survive contact with real users.
Good Fights enriches its catalogue with Claude and gates every result on a confidence score, so nothing the model is unsure about reaches a user. There are unit tests that check the model's output — including one that verifies quoted material is real. I use Claude Code daily too, but the part that counts is the model running in production.
Jest on the API — including tests that check what the model produced — type-checking and linting on every package, and more than 30 scheduled jobs, built as GitHub Actions workflows and now run from VPS cron, covering the scrapers, enrichment, database backups and content checks. Over-the-air updates push a fix to users without waiting on app-store review.
A Docker-built API on Render, a Linux VPS where systemd and cron run the scrapers, the live trackers and the jobs that have to happen at 4am, Postgres with Prisma migrations, Cloudflare R2 for images, PostHog for what people actually do. No platform team behind me — when production breaks at 11pm, it's me.
Designed and coded with Claude Code, with me reviewing every decision — statically generated, accessible, fast, and dark-mode aware. If you want to know how something here was built, ask me.
I've written the code, sat with the customer, and run the team — which is why I'm comfortable being handed any of the three.
Hiring? Tell me about the role and the team. I reply within one business day.
Open to senior full-stack, front-end and React Native roles — remote, Canada. Résumé is above, or ask and I'll send it.