All work
SupabaseRealtimeSocialNext.js

Crew Challenges

A Shared Habit Board With the Day-Lock Enforced in the Database

A gamified board where a group takes on challenges together. Anyone can add themselves and join whichever boards they like — no passwords, no accounts. The board auto-advances at midnight Pacific, past days stay open so you can log one late, and future days are locked mystery boxes. Daily check-ins, kudos and reactions, and a live leaderboard with totals and streaks that updates across everyone's devices at once.

Visit Live Site

The Problem

Shared accountability works when the group can see each other, and dies when logging becomes a chore. Existing habit trackers are single-player with a social veneer bolted on, and every one of them wants an account before it will show you anything.

Research & Discovery

1

The catch-up rule came directly from watching how group challenges actually die: one missed day, a locked board, and a participant who never opens it again. Allowing a late log while still refusing future days keeps the record honest without punishing a busy Tuesday

Strategy

Zero-Friction Entry

Pick a name, join a board. No account, no password, no email.

Trustworthy Rules

The current day is computed server-side and enforced by row-level security, not by a client-side conditional.

Forgiving By Design

Past days stay open so a missed Tuesday doesn't end someone's participation. Future days stay locked.

Immediate Reward

Confetti, reactions, and a live leaderboard — the feedback for logging arrives before you close the tab.

Key Decisions

1

Enforced the day-lock in the database rather than the UI. A leaderboard whose rules live in client-side conditionals is a leaderboard nobody can trust, and this one is shared with people who will absolutely try it

2

Allowed catch-up on any past day but no access to future days. Missing a day should cost you nothing but the streak; the alternative is people quietly abandoning the board after one bad week

3

Skipped accounts entirely. The group is small and known, the stakes are a streak counter, and an auth flow would have cost more participants than it protected

4

Prefixed every table for the shared Supabase project rather than standing up a new one, keeping the app out of the way of unrelated projects on the same database

Results & Impact

0

Passwords Required

RLS

Rules Enforced In-Database

Live

Cross-Device Leaderboard

  • Shipped open signup with no passwords — you pick your name, it saves on your device, and you can switch anytime
  • Built the day-lock as a Postgres function computing the current day per challenge in America/Los_Angeles, with row-level security policies permitting a check-in for any day from one up to and including today
  • Built a live leaderboard over Supabase realtime showing totals, streaks, and kudos received, updating across every participant's device without a refresh
  • Added kudos and reactions as the social layer, with confetti and animation on check-in, because the reward for logging has to arrive immediately or people stop logging
  • Made the app multi-challenge: challenges are defined in code, the home screen lists them, and members opt in per board

Tech Stack

Next.jsReactTypeScriptSupabaseTailwind v4Framer Motion