A real-time two-person video experience — a private video room with synchronized in-call mini-games, built on WebRTC.
just-us lets two people share a live video call and play interactive games together in real time: prompts and "this or that" rounds stay perfectly in sync on both sides. It includes the full flow around the call too — scheduling a session, inviting a partner by email, and joining a shared room.
- Live video room — peer-to-peer WebRTC video with mic/camera controls and ambient-sound options.
- Synchronized mini-games — in-call games ("This or That", prompt cards) whose state stays in sync for both participants, with invite / accept / decline and graceful handling when a partner leaves.
- Scheduling & invites — create a session, invite a partner by email, and a guest-accept flow with reminder emails and magic links.
- Auth & data — accounts, sessions, and room state backed by Postgres with row-level security.
app/ Next.js (App Router) front end + API routes
components/ Video room, controls, and game components
supabase/ Postgres schema + migrations (row-level security)
Real-time video is handled by a WebRTC provider with server-side room and token creation; game state is synchronized over the call's real-time channel so both clients always agree on the current round.
Front end: TypeScript, Next.js, React, Tailwind CSS Real-time: WebRTC (Daily.co), real-time data channels Backend / data: Supabase (Postgres + Auth + row-level security) Email: Resend (invites, reminders, magic links)
npm install
cp .env.example .env.local # add your WebRTC + Supabase + email keys
npm run devYou'll need a WebRTC provider key, a Supabase project, and an email-sending key — see .env.example.
A working prototype focused on the hardest part — keeping two live clients and shared game state in sync over WebRTC. Feedback and contributions welcome.