Eric Callan

Eric Callan

Engineering Leader

Work with me
All work

Project · 2026

CouchDuel

A little rivalry, every night.

CouchDuelTonight
Ari2+1
Sam2+1

A little rivalry, every night.

Type
Project
Year
2026
Role
Product, design + engineering
Built with
  • Next.js
  • React 19
  • TypeScript
  • Supabase
  • Postgres RLS
  • Tailwind
  • Vitest

CouchDuel keeps score while you and someone else compete over whatever is on television. No questions, no buzzers, no timers. It doesn't play the game with you; it counts, so you can watch.

From landing page to a live board
1 tap
Players per game
2–6
Tests, incl. real Postgres
371

Product

Nothing to configure first

Open couchduel.app, see tonight's date and two players, and tap +1. A guest game starts with no account, and saving your history later keeps every game you played as a guest. Each game is kept with its date, players, scores and winner, which feeds the running rivalry: all-time record, streaks and a month-by-month head-to-head.

Engineering

Scores that can't drift

Scoring is event-sourced: a total is always the sum of its events, and corrections are recorded, never erased. Every tap carries a unique key, so a retry on a flaky connection can't award a point twice, and scores update instantly with an honest rollback if a write fails. The app holds no service-role key; Postgres row-level security does the access control.

Next · ProjectBeyond the Fold Your browser windows are how you see the world, and where it holds.