All work

OpenCourt

Community & coordination

Find a game.
Fill the spot.
Keep playing.

A volleyball platform that connects local players with teams who need a sub. Built around the small decisions that turn an opening into a game.

OpenCourt promotional cover with a map-discovery phone mockup and beach volleyball player
Promotional concept · Illustrative UI
  1. Discover

    Nearby openings, indoors or on the beach.

  2. Join

    Find a game that fits how you play.

  3. Coordinate

    Connect with the captain before game time.

A closer look at the experience

Made for the people
who keep the
game going.

A nearby opening. A team that needs you. A reason to get back on the court.

Promotional previews · Illustrative UI

The current web pilot and real app screens are explored below.

Swipe through the previews. Tap one for a closer look.

Find your next game: OpenCourt promotional preview with nearby volleyball openings on a phone map
Find your next game. A nearby opening turns into a reason to get back on the court.
Play your way: OpenCourt promotional preview of indoor and beach preferences, playing level, and positions
Play your way. Your format, level, and position give discovery its context.
My role
Independent product design & development
Built for
Recreational volleyball players and team captains
Tools
Next.js · TypeScript · Supabase · Google Maps · Resend
01 / Context

The problem
behind the product.

A missing player can derail a game. Captains need someone who fits the level, position, location, and time; players need a way to find that opportunity beyond scattered group messages.

The approach

Connect the whole journey: build a player profile, discover a nearby opening, join or apply, coordinate with the captain, and keep track of the game. The interface is designed around the phone someone already has in their hand.

02 / Product judgment

A few decisions
that shaped it.

01Match on the things that matter

Use playing level, format, positions, and travel radius to make discovery more relevant. Guided onboarding turns those preferences into a usable profile.

02Give captains control

Support both approval-required and instant-join openings. Handle withdrawals, cancellations, and reopening so the workflow survives changes to the roster.

03Build for coordination and trust

Keep schedules and conversations alongside the opening. Attendance confirmation, feedback, blocking, and reporting support a pilot with real people.

Swipe through the previews. Tap one for a closer look.

Manage your openings: OpenCourt promotional preview of a captain’s schedule and substitute needs
Manage your openings. Keep upcoming games and roster gaps in view.
Keep everyone in sync: OpenCourt promotional preview of conversations between players
Keep everyone in sync. Coordinate before it’s time to play.
04 / How I built it

AI helps me move.
Judgment sets the direction.

I use AI-assisted development to move between product ideas, interface iterations, and implementation. My responsibility is defining the user journey, making the tradeoffs, and checking how the pieces behave together—from onboarding to roster changes.

05 / Current state

Where it is.
Where it goes next.

Live pilot

OpenCourt is running as a mobile-first St. Louis pilot. The web application supports onboarding, list and map discovery, posting, applications and approvals, schedules, conversations, and game reminders. The next step is learning how those pieces work together in regular local use.

What’s next

Keep learning from the local pilot and refine the path from sharing an opening to filling it. Native mobile clients are planned; they are not part of the current web release.

Next project

Courtside HD

Start a conversation

Good work starts
with a good question.

I’m interested in teams and people turning real problems into useful products. If that’s the work you’re doing, I’d like to hear about it.