DEV Community

Cover image for LocalCheck - Check In , then Check Up
iJess
iJess

Posted on

LocalCheck - Check In , then Check Up

DEV Weekend Challenge: Community

This is a submission for the DEV Weekend Challenge: Community


The Community

Every pickup basketball player knows the ritual. It's 4pm. You open the group chat you swore you'd mute last week and type the same message you've typed a hundred times:

"Anyone at the court?"

Then you wait. Replies trickle in. Half the thread goes silent. Someone says "on my way" and never shows. You either arrive to a full run with a 45-minute wait, or you're standing alone on an empty slab wondering where everybody went.

I built LocalCheck for pickup basketball communities — the informal networks of regulars who show up at the same courts, week after week, held together by nothing but word-of-mouth and chaotic group texts. These communities exist in every city, every neighborhood, every park. They deserve better infrastructure than a spam-heavy chat thread.


What I Built

LocalCheck is a real-time court check-in app that answers the only three questions that actually matter:

  1. Who's at the court right now?
  2. Who's planning to come?
  3. Who's got next?

Now — Tap "I'm Here" when you arrive. Your court's feed updates live for everyone connected. Check-ins auto-expire after 2 hours so the count stays honest.

Schedule — Post when you're planning to show up so others can see a run is building before they leave the house.

Compete — Log 1v1 results and track Elo ratings on a court leaderboard. Wins against stronger opponents move the needle more. The ranking is real.

Runs — Create organized games (2v2, 5v5), manage RSVPs, and auto-generate balanced teams by Elo rating — no more 10-minute captain standoffs in the cold.

The experience is centered on the court as the unit of community. You join the courts you play at. You see only what matters to your run.


Demo

🏀 Live App: localcheck.lovable.app

The app is fully functional with sample data. Create a profile, check in to a court, log a 1v1, and watch the run come together.


Code

🏀 LocalCheck

The pickup basketball app that replaces group texts, empty courts, and "anyone there?" messages.

LocalCheck is a real-time, community-driven platform for pickup basketball players. It answers the one question every hooper has: "Who's at the court right now?" — and then builds an entire competitive ecosystem on top of that simple insight.

Live: localcheck.lovable.app


📖 Table of Contents


🏗 The Problem

Pickup basketball is broken — not the game, but the logistics. Every day, thousands of players drive to empty courts, spam group chats asking "anyone running?", or just skip going because they don't know if anyone will show up.

There's no centralized way to:

  • See who's at a court right now
  • Know when people are planning to show up
  • Track competitive results and…

How I Built It

Layer Tech
Frontend React 18 + TypeScript + Vite
Styling Tailwind CSS + shadcn/ui
Backend Supabase (Postgres + Auth + Realtime)
State TanStack Query + Zustand
Animation Framer Motion
Platform Lovable

Real-time check-ins — The core of LocalCheck runs on Supabase's LISTEN/NOTIFY system. When someone taps "I'm Here," every player at that court sees it instantly via a PostgreSQL channel subscription — no polling, no refresh needed.

const subscription = supabase
  .channel(`court:${courtId}`)
  .on('postgres_changes',
    { event: '*', schema: 'public', table: 'checkins' },
    (payload) => updateCheckins(payload.new)
  )
  .subscribe();
Enter fullscreen mode Exit fullscreen mode

Elo for 1v1s — Starting rating: 1000. K-factor scales with games played so new players move faster. Upsets earn bigger jumps. The leaderboard reflects actual court standing.

Auto-balanced teams — A greedy algorithm splits players into even sides by Elo when organizing runs. Games start faster and fairer.

Mobile-first, outdoor-optimized — Large tap targets for cold hands, high contrast for sunlight, minimal text input. Check-ins queue if signal is spotty at the park.


Built for the regulars. Shoutout to everyone at the local court who complained about the group chat — this one's for you. 🏀

Top comments (0)