feat(site): landing-only on www, app gated to demo subdomain (#20)
CI / Frontend (push) Canceled after 0s
CI / Go - apps/backend (push) Canceled after 0s
CI / Docker publish - backend (push) Canceled after 0s

* feat(site): landing-only on www host, app gated to demo subdomain

- RequireAppHost redirects app routes to / on non-demo hosts
- Signup CTAs swapped for launch-notification mailto on www
- Pricing marked as indicative pre-launch, no subscription purchasable
- SEO: OG/Twitter cards, og.png, JSON-LD, robots.txt, sitemap.xml,
  per-route document titles, SPA rewrite for Vercel

Authored By: TDvorak <[email protected]>

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: ignore vercel link artifacts

Authored By: TDvorak <[email protected]>

* docs: document www/demo host split in deployment targets

Authored By: TDvorak <[email protected]>

---------

Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
Tomáš DvořákandDevin authored and GitHub committed 2026-09-25 16:20:05 +02:00
1 parent 27a51c38b8
commit 7a31f55f81
15 files changed
+174 -68

No files matched your search

+4 -1
View File
@@ -6,7 +6,10 @@ billing machinery underneath.
Deployment targets:
- frontend on Vercel
- frontend on Vercel — `bookra-frontend` serves `www.bookra.eu` (landing only,
pre-launch: signup CTAs are mailto and app routes redirect to `/`);
`bookrademo` serves `demo.bookra.eu` (full app). The split is enforced by
hostname in `apps/frontend/src/lib/app-host.ts`.
- backend on Railway
- Neon Postgres + Neon Auth
- Stripe billing (checkout, customer portal, webhooks, SMS usage invoices)