Projects
Things I've built, or am still building.
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
Built and continuously expand a digital language-preservation platform for Kimbundu, transforming a historical scanned Kimbundu–Portuguese dictionary into a structured, auditable lexical corpus of over 10,700 entries. Designed the initial multi-stage OCR-to-corpus pipeline, then extended it with orthography modernisation (over 1,500 entries), full PT/EN/FR internationalisation, an HTTP search service, analytics, and self-hosted deployment on Coolify. Acquired and processed additional source materials including Chatelain's 1889 Grammar and 1894 Folktales, the KmbPtMT curated dataset, and Oscar Ribas's works.
- –Modernised orthography across over 1,500 entries through glide re-spelling and Ri→Di prefix correction (over 600 entries, since Kimbundu has no /r/ phoneme), with over 1,100 redirects preserving access from historical spellings
- –Internationalised the full corpus (PT/EN/FR) with over 10,600 entries carrying definitions in all three languages, plus localised site UI and static content
- –Built an HTTP search service with warm-index as-you-type smart search, orthographic variant expansion, and quality telemetry, and redesigned the homepage around discovery
- –Expanded the corpus with new source materials: Chatelain 1889 Grammar and 1894 Folktales, KmbPtMT (over 18,000 curated pairs), and Oscar Ribas Ilundo OCR pipeline
- –Migrated from Vercel to self-hosted Coolify on Hetzner with Docker images built in GitHub Actions and auto-deployed from GHCR on push to main
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