Case study · Side project

Palpita.

A score-prediction pool that turns the family group chat into a season-long championship.

5,000+ predictions20,000+ visitsWorld Cup 2026palpita.vercel.app

The product

Every big tournament starts the same way: someone opens a spreadsheet, predictions fly across the group chat, and by round three nobody knows who is actually winning. Palpita replaces that ritual with a running, always-current championship.

Anyone can create a group, pick a competition, and bring their people in. Each member fills in score predictions for the round, and as real results come in the standings update themselves. No spreadsheets, no arguing over points.

It is friendly competition, not gambling: no odds, no stakes, no money. During the 2026 World Cup, groups logged more than five thousand predictions on the platform.

How it works

Four steps to bragging rights

  1. 01

    Create your group

    Sign in with Google or Discord and open a pool for the competition you care about.

  2. 02

    Invite your people

    Share an invite link with friends and family, and everyone joins the same table.

  3. 03

    Predict each round

    Fill in your scores for every match of the round before kickoff.

  4. 04

    Climb the table

    Points land as real results come in, and the standings update round by round.

Inside the app

The whole loop, one place

5,000+

Predictions logged

20,000+

Visits during the World Cup

4 weeks

From first commit to kickoff

Under the hood

  • Next.js
  • TypeScript
  • Tailwind CSS
  • Supabase
Spec-driven development
Built with Claude Code: every feature starts as a written spec, becomes a design doc, then an implementation plan before any code lands.
Next.js 16 + React 19
App Router with server actions, strict TypeScript, Tailwind CSS v4, and shadcn/ui as the component base.
Supabase
Postgres, Auth, and Realtime in one backend. Row Level Security on every table, with a service-role client reserved for trusted server actions.
Auth flow
Google and Discord OAuth, no passwords stored. Sessions refresh in middleware, and invite links survive the login roundtrip.
Data layer
TanStack Query for server state, Zustand for the little global state that remains, React Hook Form with Zod v4 validating the edges.
Design system
A documented token system with first-class dark and light themes, oversized numerals, and motion that earns its place.

Round up your group.

Pick a competition and bring your people in.

Open Palpita