Front-end deployment (Vercel) + SEO
How the two front-ends deploy and the SEO/crawler setup. Backend deploy is in
../server/DEPLOYMENT.md.
Two Vercel projects, two domains
Marketing and the product app are separate Next.js apps so they deploy and evolve independently. Each is its own Vercel project pointed at its own directory and domain.
| Surface | Dir | Domain | Vercel root directory |
|---|---|---|---|
| Marketing | web/ | obsrv.in (+ www) | web |
| Product platform | app/ | app.obsrv.in | app |
| Backend API | server/ | api.obsrv.in | n/a (AWS) |
Env vars
- web (marketing):
NEXT_PUBLIC_ANALYZER_API=https://api.obsrv.in(waitlist POST),NEXT_PUBLIC_APP_URL=https://app.obsrv.in(cross-links to the app). - app (console):
NEXT_PUBLIC_ANALYZER_API=https://api.obsrv.in.
One-time setup for the split (Salil)
- In the existing Vercel project (obsrv.in), confirm Root Directory =
web; addNEXT_PUBLIC_APP_URL. - Create a second Vercel project from the same repo, Root Directory =
app, add domainapp.obsrv.in, setNEXT_PUBLIC_ANALYZER_API. - Cloudflare: add a CNAME
app→ the new Vercel project (DNS-only is fine; Vercel handles TLS). obsrv.in/analyzeandobsrv.in/reportalready 308-redirect to the app (next.config.mjs).
SEO / crawlers
- Stale Google results are cache lag, not a site bug. The live site serves the correct
title/description and no legacy content. To clear old SERP entries: register
obsrv.in(and laterapp.obsrv.in) in Google Search Console, submit the sitemap, and use URL Inspection → “Request Indexing” on the homepage. Old results clear in days–weeks after recrawl. - Cloudflare managed robots.txt blocks AI crawlers. The zone prepends a managed block that
Disallows GPTBot, ClaudeBot, Google-Extended, CCBot, etc. — which defeats the AEO work (llms.txt, structured data). If you want answer engines to cite Obsrv, disable Cloudflare’s AI-bot blocking / managed-robots feature for the zone (Cloudflare dashboard → the AI Audit / robots setting). - Each app ships its own
robots.ts+sitemap.ts. Marketing indexes its pages; the app exposes only/reportto crawlers (the console root needs a session).