Selected work
Real-time SaaS · TypeScript2016 — Present · TypeScript rewrite

SpeakChatBot

Eleven million chat messages a month, read aloud

A real-time TTS platform for Twitch, YouTube, and Kick — run solo since 2016 (11M chat msgs/mo at peak) — now a domain-driven TypeScript rewrite with capability-based RBAC, a plugin marketplace, and ~5,000 automated tests. The modern continuation of the CHI-cited TranscriberBot.

Role — Founder & sole engineer
  • TypeScript
  • Node.js
  • Express
  • WebSocket
  • React 19
  • Vite
  • MySQL 8
  • Atlas
  • Vitest
  • Playwright
  • Docker
  • Caddy
  • AWS (Polly · S3)
  • ElevenLabs
  • Google TTS

SpeakChatBot reads a stream's chat aloud and automates moderation, alerts, and TTS in real time — a platform I've run as founder and sole engineer since 2016, and the modern continuation of the CHI-2019-cited TranscriberBot. At its peak it pushed 11 million chat messages a month.

It's now a ground-up TypeScript rewrite. The backend is domain-driven — 28 bounded modules under src/domains with the boundaries enforced in lint — with capability-based RBAC and impersonation auditing, a typed WebSocket protocol, MySQL under Atlas versioned migrations, and a publishable plugin SDK + marketplace so new chat sources (Twitch IRC, YouTube, Kick) and transformers drop in behind a stable contract.

Two React 19 surfaces sit in front: a streamer dashboard — a Vite MPA that keeps the admin bundle physically separate from the user bundle, verified by a post-build audit — and a marketing site. Holding it together: roughly 5,000 automated tests (Vitest unit/integration + Playwright e2e, V8 coverage) and a GitHub Actions release pipeline with promote, canary, and smoke stages.

What's notable
  • Ground-up TypeScript rewrite — 28 lint-enforced domains, ~1,000 TS files, no JS left in the runtime
  • ~5,000 automated tests: Vitest unit/integration + Playwright e2e with V8 coverage
  • Capability-based RBAC with impersonation auditing, a typed WebSocket protocol, and an OpenAPI public API + webhooks
  • Plugin SDK + marketplace (Twitch · YouTube · Kick sources); Atlas-migrated MySQL; Docker + Caddy; promote/canary/smoke releases