
Who
I build ecosystem products that have to stay distinct under one brand family. Golf creators already get a scorecard-and-tips platform on iLeague.golf. That pack is a different story. Patreon meets 18Birdies, Stripe tiers, fifteen percent fee.
iTour.golf is for the next layer: creators who need a season to aim at, courses that want to host a stop, and sponsors who buy tour inventory instead of a creator subscription.
If you care about monorepo landers that outrun their Vercel deploy, Convex schemas that model tournaments before any admin UI exists, or how not to collapse three golf domains into one blog post: this is the field notes.
What
I shipped a national golf creator tour under HurleyUS/itour.golf.
README one-liner: iPro.golf's national influencer golf tour. Brain note (iLeague Golf.md): 36-week tour; top 54 qualify for iConference. HEAD lander badge: The National Golf Influencer Tour. H1: iTour.golf. Line: Where Golf Creators Become Champions.
Stack on the box: Next.js 15.5.6, React 19, Convex, Clerk (optional when the publishable key is missing), PostHog, Sentry, Resend, Tailwind v4, Bun workspaces (web + mobile), Inter + Oswald, Vercel. Package itour-monorepo 1.0.0. Repo private. Site public at www.itour.golf (apex 307s to www).

This is separate from the creator billing product. There is no Stripe dependency in web/package.json. README monetization is blunt:
- Sponsors, ads, vendors, partners, investors
- Courses bid to host stops on the iTour
HEAD page CTAs: Join iLeague to Qualify (outbound to ileague.golf) and Become a Sponsor / Host a Tour Stop (on-page sections with buttons, not checkout).
Convex web/convex/schema.ts is tour-shaped: users (creator|fan|admin), courses (optional week), tournaments (weeks 1–36), entries (score + videoUrl), standings. No subscriptionTiers. No tips. No content feed. Those tables live on the iLeague sibling.
What is also true on pack day:
- Live www still markets "2026 Season Now Open", 18 Stops / 18 Courses / 1 Champion, a fake Desert Classic at Pebble Beach, a fake leaderboard, and a $3.5M+ prize-pool story aimed at a Sept 9 2026 Augusta finale.
- Repo HEAD
page.tsxis the amber rewrite: 36-week season, May 12, 2027 inaugural, Top 54 to iConference, qualify-via-iLeague funnel. layout.tsxSEO says 36 weeks, 36 courses; the hero says 18 courses of their choice. PLAN/OPPORTUNITIES still say top 18. Brain + footer say top 54.- CHANGELOG 1.0.0 still claims "golf course discovery and booking." sitrep.md still says PROTOTYPE with last commit stamped 2026-01-31.
- Mobile is an Expo stub that renders the words Mobile App.
That gap is the product story.

Where
It is supposed to run on Vercel against Convex with Clerk when keys exist. Providers deliberately render without Clerk if NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY is unset (May 14 fix). Convex client only instantiates when NEXT_PUBLIC_CONVEX_URL is set.
Surfaces that matter on HEAD:
- Public amber lander. hero, how-to-qualify (4 steps), championship path, 2027 coming-soon chips, host-a-stop, sponsors, ecosystem footer
robots.ts/sitemap.ts/ JSON-LD SportsOrganization + SportsEvent (2027-05-12 to 2027-09-09)- Middleware protect list for dashboard/account/settings/api. public marketing routes stay public
- Mobile folder. scaffold only
Live HTML on 2026-09-08 did not show Clerk pk_test / pk_live strings. The stale marketing shell is prerendered on Vercel (x-nextjs-prerender: 1).

Related domains in the footer/copy: iLeague.golf (emerald. creator platform), iTour.golf (amber. this pack), iConference.golf (purple. championship). Do not collapse this post into the iLeague creator-economy pack.
When
January 8, 2026. Initial Next.js + Convex + Tailwind setup. OPPORTUNITIES and homepage docs the same day. This tree starts as a tour concept, not a WNC directory.
January 31. Chore sync. sitrep still thinks this is the last meaningful stamp. it is wrong.
February 11. GitHub HurleyUS/itour.golf exists. Homepage gets ecosystem context. iTour/iCon details corrected from the OG vision. Placeholder season data removed. TBD until May 12, 2027.
February 15. Explicit commit: replace bestwnc.com boilerplate with iTour content. Lineage matters so this pack does not retell BestWNC.
February 21. Fonts, favicon, Tailwind v4 CSS-first, React 19 types, providers/middleware/schema/layout batch, CHANGELOG labeled 1.0.0.
Late February. CI build gate, security headers + regression script, SEO/analytics baseline, then GitHub Actions removed because Vercel is CI.
March 28. Workspace scripts stop using bun filters. cd web && bun run …. A Gumroad /pricing page also appears in history (Golfer Basic/Pro pre-order links), not the live shell's center of gravity.
May 14–15. Blacksmith CI standardize noise, then delete it. Skip Clerk provider when key is unavailable. lander must not hard-crash without auth config.
June 22. Two nightly commits. HEAD d2a49ef. Last push on the repo.
September 8, 2026 (pack day). www returns 200. Content is still the old 18-Stops / fake-season shell. Draft pack only. no publish, no push.

Why
Because the HurleyUS golf stack needs three honest products, not one blog post with three domains.
iLeague is where creators publish, subscribe, and tip. iTour is where a season and sponsor/host economy are supposed to live. iConference is the September championship punchline. If you describe iTour as "another creator SaaS," you erase the only reason the domain exists.
Because schema-before-UI is an operator move: tournaments 1–36, entries with video URLs, season standings. committed while the live site still invents Jake Matthews and a Desert Classic.
Because deploy drift is a better lesson than a launch party. Rewriting page.tsx for May 2027 does nothing for golf fans if Vercel keeps serving the 2026 placeholder season. Same pattern as shipping robots index,follow while leaving test keys on a sibling domain. different failure mode, same honesty requirement.
Because the money model is different on purpose. No platform fee constant. No tip presets. Sponsor tiers and course hosting bids are the README, even if the buttons still go nowhere.
Engagement
If you run a marketing lander in a monorepo: what do you trust on pack day: git show HEAD:app/page.tsx, or curl the production HTML, and which one did you ship last?
