A raw, real-time, IRC-inspired chat app. Built with React 19, Convex, and Bun.
- ⚛️ React 19 + Vite + TypeScript
- 💨 Tailwind CSS
- 🧠 Zustand for client state
- 🔒 Clerk for authentication
- 🛰️ Convex for backend, real-time data, and DB
- ⚡️ Bun for dev/build tooling
- ☁️ Hosted on Netlify (frontend) + Convex (backend)
- 💬 Real-time messaging with IRC-style UI
- 😊 Emoji reactions with toggle behavior
- 🏠 Multiple channels (#general, #random, #dev) + custom channels
- 📎 File/image uploads (up to 10MB)
- 🔍 Message search with highlighting
- 👥 Online user tracking
- 📱 Mobile responsive design
bun install
bun dev # Vite frontend
npx convex dev # Local backendCreate .env.local with:
# Clerk Configuration
VITE_CLERK_PUBLISHABLE_KEY=pk_test_your_clerk_key
# Convex Configuration
VITE_CONVEX_URL=https://your-deployment.convex.cloud- Connect your GitHub repo to Netlify
- Set build command:
bun run build - Set publish directory:
dist - Add environment variables in Netlify dashboard
npx convex deploy # Deploys to production- Create Clerk application
- Add production domain to allowed origins
- Create JWT template named "convex"
- Update environment variables with production keys
# Clear all data (development only)
npx convex run admin:clearAllData
# Clear only messages
npx convex run admin:clearMessages