
Who
I build products in public for operators, not for pitch decks. Golf creators already duct-tape a scorecard app to a Patreon to a tip jar. Fans already bounce between three tabs to follow a round and pay for the good stuff.
iLeague.golf is for those creators and those fans, and for anyone shipping a Bun monorepo that has to hold a Next.js web app, an Expo companion, and a Convex backend without lying about what is finished.
If you care about creator-economy plumbing, Stripe tier math, or how a generic "influencer" scaffold gets rebranded into a sport vertical: this is the field notes.
What
I shipped a golf creator platform under HurleyUS/ileague.golf.
The README line is blunt: Patreon meets 18birdies. The live lander says the same badge, then: Where Golf Creators Build Empires. Track rounds. Build a following. Get paid through subscriptions and tips. Top 54 creators qualify for iTour.golf. Winners aim at iConference.
Stack on the box: Next.js 15.5.9, React 18.3.1, Convex, Clerk, Stripe, PostHog, Sentry, Resend, Tailwind v4, Bun workspaces, Expo 52 mobile, Phosphor icons via react-icons, Vercel. Package version 1.0.0. Repo is private. Site is public at ileague.golf.

Monetization is not a slide. It is apps/web/src/lib/billing.ts:
- Platform fee 15%
- Tip presets $5 / $10 / $20 / $50 / $100
- Suggested creator tiers. Bronze $4.99, Silver $9.99, Gold $24.99 monthly (yearly suggested too)
- Real tiers live in Convex
subscriptionTiersand check out through dynamic Stripeprice_data(web API + Convex actions)
Content model covers video, shorts, images, links, text, and round recaps tied to scorecards. Visibility: public / followers / subscribers. Courses, course reviews, rounds (FIR/GIR/putts), standings, leagues, notifications. all in convex/schema.ts.
What is also true: the dashboard still says influencers. Explore still calls getInfluencers. The README still says Top 36 while the live hero says Top 54. Production HTML still loads Clerk pk_test from a *.clerk.accounts.dev instance. The scorecard schema is ahead of the hole-entry UI. That is the product, part of the story.

Where
It runs on Vercel against Convex. Auth is Clerk. Money is Stripe. Mail is Resend. Errors go to Sentry. Product events go to PostHog. Mobile is Expo with EAS configs and placeholder Apple submit IDs.
Surfaces that matter:
- Public lander. emerald/slate hero, feature grid, creator/fan columns, ecosystem footer
- Auth + onboarding. Clerk sign-in/up, role/profile setup
- App shell. dashboard, explore, leagues, notifications
- Creator profile.
/creator/[id]with hero, featured courses, content grid - Payments.
/api/stripe/checkout, portal, webhook; Convex/stripe-webhook
Audience sits with golf creators, golf fans, and builders watching a sport vertical on a creator-economy stack. Sibling properties: iTour.golf and iConference.golf under the HurleyUS lane.

When
2026-01-09. Initial monorepo. web + mobile. Convex stubs. React 19 downgraded to 18 for Clerk/Convex. Vercel monorepo config. First production deploy on a hustle-launch Vercel URL. CHANGELOG also remembers the earlier michaelmonetized/ileague-app GitHub link.
January 31. Chore sync.
February 4. Mobile leagues pushed toward Convex. EAS config. Roadmap honesty about hardcoded mobile screens.
February 11. HurleyUS repo created. Golf schema and plan. Golf-focused homepage, header, footer, Convex functions. This is the rebrand day: influencer scaffold becomes iLeague.golf.
February 12–28. Stripe API version bump. Search indexes. Metadata rewritten for golf. Golf category. lucide to react-icons. Root /convex consolidation. CI experiments. Mobile TypeScript cleanup. Vercel as the only CI/CD.
March. Security headers. Middleware runtime fights. www vs apex redirect loop. normalize middleware, dual aliases, then disable middleware so Vercel stops bouncing. robots.txt, sitemap, trending creators carousel. Stripe checkout patterns standardized. Creator profile page ships. Dashboard starts showing real follower/subscriber/earnings stats. Convex package versions aligned.
May 14–15. Blacksmith CI gate spam, then removed.
May 21. Production Convex crash fix. Missing creator queries for the lander and profile pages. Stripe/Resend factories so deploy analysis does not need live keys. CSP worker-src. CHANGELOG 1.0.4.
June 22. Nightly commits.
August 8, 6:55 AM ET. HEAD 508df8e. set X-Robots-Tag to index, follow on Vercel. Fifty-four commits on main.
September 8 pack day. Live site returns 200. Robots tag present. Clerk still on test keys. Draft only.

When (clock)
Fifty-four commits. January 9 to August 8. HEAD 508df8e. Private monorepo. Public emerald lander.
Why
Creator tools fail in two directions: beautiful landers with no money path, or Stripe dashboards with no sport-specific object model. I wanted both. scorecards that can become content, tiers that can become iTour qualification, tips that are not a third-party link-in-bio.
I also refused to pretend the rebrand was complete. Influencer function names, Top 36 vs Top 54, and pk_test on a real domain are operator signals. They tell you where the product still is.
The ecosystem bet is explicit: iLeague feeds iTour feeds iConference. This pack is only the first node.
If you create golf content today, what would you rather ship next on iLeague: a real hole-by-hole entry flow, or flipping Clerk to live keys so the first paying subscriber is not on test mode?
