dreampro.io — coaching front-door domain
One-time setup to make dreampro.io serve The DreamPro Coaching System
(/coaching). Same recipe as the
other brand domains (MULTI_BRAND_DOMAINS.md).
The code is already shipped: the host-aware middleware
(middleware.ts) rewrites dreampro.io/
→ /coaching, and detectBrandSlug() tags signups on this host with
user_metadata.brand = 'dreampro' (which the admin user cards render as 🏋️).
Nothing activates until DNS + Vercel are configured below.
1. DNS
dreampro.io CNAME → cname.vercel-dns.com (or A/ALIAS per registrar for the apex)
www.dreampro.io CNAME → cname.vercel-dns.com
2. Vercel
Add both dreampro.io and www.dreampro.io to the frontend project
(Project Settings → Domains). Vercel provisions TLS automatically.
3. Supabase Auth (so signups/confirmation work on the host)
Add the dreampro.io callback/redirect URLs to Supabase → Auth → URL Configuration → Redirect URLs (mirror what's there for graphene.fm / write.cafe / lovio.io), e.g.:
https://dreampro.io/auth/callback
https://www.dreampro.io/auth/callback
https://dreampro.io/start/*
Otherwise email-confirm links fall back to the canonical Site URL.
4. (Optional) per-brand GA
Set NEXT_PUBLIC_GA_MEASUREMENT_ID_DREAMPRO on the frontend if you want a
separate GA4 property for dreampro.io traffic (the slot already exists in
GA_IDS). Leave unset to fall back to the default property.
5. Verify
https://dreampro.io/→ the coaching landing (URL bar stays on dreampro.io).https://dreampro.io/start/30-day-reset?ref=<code>→ enrollment flow.- A new signup on dreampro.io → admin Users card shows the 🏋️ DreamPro surface icon.
What's intentionally NOT here yet
- Citizen Science still lives at
hivejournal.com/dreampro. Its migration toopenenergy.*(with 301s) is a separate effort — see DREAMPRO_COACHING_SYSTEM.md §6. - Brand chrome on dreampro.io is still the default HiveJournal navbar; a dedicated DreamPro nav/footer (like graphene/write.cafe chromeless surfaces) is a polish follow-up.