ShippingCross-platform beta

Live website · iPhone beta · Android beta · Supabase · MapKit · Built with Jaret Priddy

PinPals

Find golfers nearby, match, chat, and turn the chat into an actual round.

A cross-platform golf companion for finding golf partners and getting rounds on the calendar. PinPals combines golfer discovery, nearby course search, open games, match chat, round proposals, shared scorecards, and a driving-range tracker across the live website plus iPhone and Android beta builds.

  • Web
  • Swift
  • SwiftUI
  • SwiftData
  • iPhone beta
  • Android beta
  • Supabase
  • Postgres
  • Row Level Security
  • CoreLocation
  • MapKit
  • Apple Sign-In
  • Google Sign-In
PinPals — image 1 of 3
1 / 3

Origin

How it started

Golf has a coordination problem. You can know people who play, know courses nearby, and still struggle to find the right group at the right time. PinPals treats the round as the product: discover nearby golfers, match with compatible players, chat, propose a tee time, join open games, and keep score once the group actually plays.

Features

What it does

  • Golfer discovery and matching

    Profiles track skill level, handicap, drinking preference, pace, preferred tee times, playing frequency, home courses, distance preference, and whether someone is looking to play today. The app surfaces nearby golfers and lets users connect before planning a round.

  • Nearby courses and driving ranges

    CoreLocation and MapKit-backed course discovery find golf venues around the user, calculate distance, support favorites, and open a selected course in Apple Maps.

  • Open games and round proposals

    Users can post public open games or propose private rounds inside a match chat. Rounds carry course, tee time, mode, max players, notes, location, participants, invite status, and host state.

  • Chat that turns into a tee time

    Match conversations and group game chats support round invites, participant acceptance, and routing from upcoming rounds into the right chat so coordination stays tied to the actual game.

  • Scorecards and round history

    SwiftData-backed scorecards handle players, holes, par, scores, relative-to-par calculations, leaderboard, round summary, history, and Supabase sync.

  • Driving range tracker

    A range mode captures recent shot distances, top-three shots, and session summary so the app is useful even when the user is practicing instead of playing a full round.

Under the hood

Engineering

  • Supabase schema with real app boundaries

    The backend schema includes profiles, profile images, swipes, matches, messages, rounds, round participants, conversations, conversation members, conversation messages, round invites, notifications, scorecard rounds, scorecard players, and scorecard hole scores. Row-level security keeps each surface scoped to the right users instead of treating beta data as a free-for-all.

  • Round lifecycle, not just chat

    RoundService separates public open games from private chat-proposed rounds. Public games create group conversations immediately; private two-person rounds stay inside the existing match chat until another player joins. Joining an open game checks that the round is public before adding the participant and conversation member.

  • Near-parity across web, iPhone, and Android

    The product surface now spans PinPalsGolf.com plus iPhone and Android beta builds, with the three platforms tracking the same core workflow instead of splitting into separate product stories. The iPhone app uses SwiftUI, SwiftData for local scorecard state, Supabase for auth/data/storage, CoreLocation and MapKit for course discovery, and Apple/Google/email auth flows.

  • Beta hardening across both mobile platforms

    Recent work has moved beyond a single-platform beta story. The website is live, iPhone and Android are both in beta testing, and the remaining work is real-user validation, polish, and keeping the three surfaces aligned as testers push on the workflow.