Selected work
Full-Stack Web · Next.js + BroadcastingIn-progress (11 commits, started Dec 2024) · TypeScript · React 19 · Next.js 15

SpeakChatBot Frontend

A full-featured Next.js dashboard and public site that pipes real-time chat messages into audio output across Twitch, YouTube, and Kick with pluggable TTS engines and granular streamer controls.

A real-time text-to-speech platform for streamers that syncs chat messages to audio output across Twitch, YouTube, and Kick. The frontend provides both a public marketing site and a full-featured dashboard with live chat integration, multi-service TTS engine switching, and granular moderation controls—all deployed on Next.js with Tailwind CSS for dark/light mode support.

Role — Solo developer
  • Next.js 15
  • React 19
  • TypeScript
  • Tailwind CSS
  • MySQL 3.12
  • Bcryptjs
  • Axios
  • WebSocket (ws)
  • ElevenLabs API
  • OpenAI API
  • Font Awesome
  • React Icons

SpeakChatBot is a SaaS product addressing accessibility on live streaming platforms. The frontend presents a dual interface: a public marketing site with pricing, features, testimonials, and integrations, and a gated dashboard for authenticated users. The dashboard is the core—a multi-section application where streamers configure voice settings, manage allowed/blocked users and phrases, set message requirements (follower-only, subscriber-only), monitor a real-time chat queue, and customize responses. 34 React components handle everything from the homepage hero and pricing tiers to per-user dashboard sections for chat filtering, integrations, and account management.

The implementation is built on Next.js 15 with React 19, using Tailwind CSS for responsive UI with full dark/light mode support throughout. TTS service selection is pluggable: users pick between ElevenLabs (default), Google Cloud, Amazon Polly, or OpenAI's API, each with its own settings component. The VoiceForm component handles demo audio playback before saving, using a custom AudioPlayer that supports playback speed, volume control, and seek scrubbing. Backend integration uses MySQL with bcrypt password hashing, cookie-based session tokens, and server-side auth middleware that verifies tokens before allowing dashboard access.

The frontend is authentication-gated via middleware.js that checks token validity on every dashboard request. Session management uses http-only cookies with 7-day expiration and SameSite-strict headers. The API layer proxies between the frontend and a separate Express backend, handling TTS synthesis, voice list retrieval, and moderation data. Real-time features are scaffolded via WebSocket support (the 'ws' npm package is present) and chat queue pages, though live streaming integration remains in progress per the QA notes.

What's notable
  • 34-component React architecture with reusable form components for each TTS provider (ElevenLabs, Google, Amazon, OpenAI) and service-agnostic VoiceForm abstraction
  • Full-featured dashboard with 10+ nested routes: chat message/user management, word/phrase/user filtering, voice cloning, integrations, and account settings with dynamic dark mode
  • Multi-provider TTS engine switching with live demo audio playback and AudioPlayer with speed/volume/seek controls before voice save
  • Server-side session auth via Next.js middleware.js with MySQL-backed token verification, bcrypt password hashing with salt and pepper, and secure http-only cookies
  • Responsive Tailwind CSS design with light/dark mode support throughout public site and dashboard; py-32 px-8 section padding and gradient hero with SVG wave dividers