Overview
What it is.
BroMind is a minimalist AI companion built around one idea: an honest, brotherly conversation. It's not therapy and not a motivational coach — it's a calm space to think out loud and check in with yourself.
The product is intentionally narrow: a chat interface, daily check-in prompts, and a memory of past sessions. No gamification, no streaks, no dopamine loops. The goal is clarity, not engagement.
Stack
Built with.
Frontend
- Next.js 15 (App Router, RSC)
- React 19
- TypeScript
- Tailwind CSS
- Lucide React
Backend
- Supabase (Postgres, Auth, RLS, Realtime)
- @supabase/ssr
- Zod
AI
- OpenRouter gateway
- Claude Sonnet 4 (chat)
- Claude Haiku 4.5 (background tasks)
- Whisper (transcription)
Infrastructure
- Vercel (serverless, edge, cron)
- Custom domain bromind.app
Realtime
- Server-Sent Events (SSE)
- Native ReadableStream
Decisions
Why these choices.
Why OpenRouter instead of calling Anthropic directly?
OpenRouter gives me one API for multiple models, automatic fallback from Sonnet to Haiku when needed, and the freedom to swap providers later without rewriting code. For a solo project that needs to stay reliable and cheap, that flexibility outweighs going direct.
Why Server-Sent Events instead of WebSockets?
BroMind only needs one-way streaming: the model talks, the user reads. SSE is one-directional by design, lighter than WebSockets, and supported natively by the ReadableStream API — no extra library, no socket server. The simpler tool wins.
Why Supabase as the backend?
Postgres, auth, row-level security, and realtime in one platform. With @supabase/ssr handling cookie-based auth in Next.js, I get a production-grade backend without managing servers. Time saved = features shipped.
Try it
See it in action.
BroMind is live at bromind.app — try a session yourself.