# iTour.golf: I rewrote the national creator-tour lander for May 2027 — production still serves the 2026 fake season

Source: https://www.michaelchurley.com/blog/itour-golf-tour-lander-ahead-of-deploy  
Published: 2026-06-22  
Author: Michael C. Hurley  
Tags: itour, itour-golf, golf, golf-tour, creator-tour, sponsors, ileague, iconference, convex, nextjs, clerk, vercel, deploy-drift, hurleyus

![iTour.golf HEAD homepage mock. May 12 2027 inaugural, Join iLeague to Qualify](/blog/itour-golf-tour-lander-ahead-of-deploy/screenshots/home.png)

## 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](https://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](https://www.itour.golf) (apex 307s to www).

![Championship path mock. iLeague to iTour to iConference](/blog/itour-golf-tour-lander-ahead-of-deploy/screenshots/championship-path.png)

This is separate from the creator billing product. There is **no Stripe dependency** in `web/package.json`. README monetization is blunt:

1. Sponsors, ads, vendors, partners, investors  
2. 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.tsx` is the amber rewrite: **36-week** season, **May 12, 2027** inaugural, **Top 54 to iConference**, qualify-via-iLeague funnel.  
- `layout.tsx` SEO 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.

![Live vs HEAD deploy drift mock](/blog/itour-golf-tour-lander-ahead-of-deploy/screenshots/live-vs-head.png)

## 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`).

![Sponsors + course hosting mock](/blog/itour-golf-tour-lander-ahead-of-deploy/screenshots/sponsors-hosting.png)

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.

![Convex tour schema mock. users courses tournaments entries standings](/blog/itour-golf-tour-lander-ahead-of-deploy/screenshots/tour-schema.png)

## 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?
