Chime — Real-time Video Calling
A multi-user video calling web app — Next.js 14 with Clerk authentication and the Stream Video SDK for low-latency, scalable rooms.
Overview
Chime is a multi-user video-calling web application — full-featured rooms (create / schedule / join), recordings, and personal rooms — built on Next.js 14, authenticated with Clerk, and powered end-to-end by the Stream Video SDK for the WebRTC transport, signaling, and recording layer.
It was built as a focused side project to learn the Stream Video stack and ship a polished real-time product without standing up a custom signaling server.
Highlights
Authentication via Clerk
@clerk/nextjs wraps the App Router, providing sign-in, sign-up, organization support, and middleware-based route protection. User identity flows directly into the Stream Video session as the call participant.
Real-time video on Stream
@stream-io/video-react-sdk on the client and @stream-io/node-sdk on the server handle:
- Token minting — short-lived call tokens are issued by a Next.js server action keyed off the Clerk user ID.
- Room lifecycle — create / schedule / join / leave with permission-aware UI states.
- Recording — server-side recording with on-demand playback.
- Personal room — per-user persistent room URL.
UI / UX
Tailwind 3 + tailwindcss-animate, Lucide icons, react-toastify notifications, react-datepicker for scheduling future calls, and nextjs-toploader for visible navigation feedback.
Tech Stack
| Layer | Choices |
|---|---|
| Framework | Next.js 14 App Router, React 18, TypeScript 5 |
| Auth | Clerk (@clerk/nextjs) |
| Video | Stream Video — @stream-io/video-react-sdk, @stream-io/node-sdk |
| Styling | Tailwind CSS 3, tailwindcss-animate |
| UX | Lucide icons, react-toastify, react-datepicker, nextjs-toploader |
| Deploy | Vercel |
// more projects
Let's work together
Have a project in mind? Reach out and let's build something great.