Projects

Things I've built, or am still building.

React Native (Expo)ReactViteNext.jsHonotRPCKyselyPostgreSQLBetter AuthTurbopnpmHetznerCoolifyGHCRGitHub ActionsS3-compatible storagePostmarkGlitchTipUptime Kuma

Designing and building a white-label, multi-tenant event app platform from scratch as solo founder. Brands (festivals, conferences, churches, cultural organisations) launch branded iOS/Android apps backed by a shared admin dashboard, API, push notification system, Eventbrite integration, and analytics — without bespoke engineering. Currently in pilot with the first real-world client (ThisChord), with live marketing, admin, and API services in production.

  • Designed a multi-tenant org → brand → event hierarchy with tenant-safe data access, shared admin surface, and per-brand theming and layout variants so one platform change improves every branded app
  • Shipped an installation-based push notification system with 4 categories, audience targeting (everyone / account holders / event followers), scheduled delivery, and open-rate metrics
  • Built an Eventbrite OAuth + bulk import + webhook sync pipeline so brands can ingest entire event catalogues with price and availability kept in sync via a background scheduler
  • Implemented a full attendee account lifecycle — sign-up, social login, provider link/unlink, password change, and 30-day soft-delete with email cancellation — enforced across every auth path (including OAuth) with 410 termination on scheduled accounts
  • Running active R&D on FriendFinder, a BLE/mesh proximity discovery feature for 70k-person events, with a deterministic simulation harness and 9 architecture, privacy, and feasibility specs
  • Running the full product stack end-to-end as solo founder — native apps, admin, API, infra (Hetzner + Coolify + GHCR), observability (GlitchTip, Uptime Kuma), pricing, and go-to-market
Read case study →
Next.jsTypeScriptPythonTesseract OCROllamaOpenAI APITailwind CSSVercelJSON Corpus Engineering

Built a digital language-preservation platform for Kimbundu by transforming a historical scanned Kimbundu–Portuguese dictionary into a structured, auditable lexical corpus. Designed a multi-stage pipeline covering PDF page extraction, column segmentation, OCR capture, deterministic parsing, corpus reconstruction, conservative LLM auditing, and editorial merge workflows. Produced a final merged corpus of 10,679 entries with provenance and review tracking, then published a website-ready public dataset powering kimbundu.org.

  • Built a multi-stage OCR → corpus reconstruction pipeline for a historical dictionary spanning hundreds of scanned pages
  • Produced a final merged editorial corpus of 10,679 entries with provenance, cleanup metadata, and review workflows
  • Published a public dictionary dataset and website experience to support Kimbundu language preservation
Read case study →
SwiftUIGoWebSocketDockerCoolifyHetznerGitHub ActionsGHCRTestFlight

Designed and built a real-time multiplayer card game for iOS from scratch as solo founder. Authoritative Go game server with a complete UK BlackJack rules engine (runs, stacking, power cards, Joker identity model, cards-call state machine), paired with a polished SwiftUI client featuring card-flight animations, SFX, haptics, drag-to-reorder, and version-gated force-upgrade. Ships on TestFlight with a public landing page, admin dashboard, virtual lobby bots, and CI/CD via GitHub Actions to Coolify on Hetzner.

  • Built an authoritative Go game server with a complete rules engine — WebSocket protocol, room manager with reconnection, per-game audit log, admin dashboard with Chart.js metrics, and structured logging
  • Designed a polished SwiftUI iOS app with event-queue architecture, card-flight animations, SFX, haptics, drag-to-reorder, strict Joker identity picker, force-upgrade gating, and accessibility support
  • Shipped virtual lobby bots so hosts can fill tables with AI players, enabling faster games without waiting for human opponents
  • Deployed on Hetzner via Docker + Coolify with full CI/CD (GitHub Actions → GHCR → auto-redeploy), public landing/privacy/terms/roadmap pages served from the same Go binary
  • Designed a 1,268-line ranked matchmaking + monetisation spec with ELO/MMR, Apple Sign-In, StoreKit 2 validation, and PostgreSQL persistence for a future premium tier
Read case study →