feat: Domain-based routing — marketing site at bare domain, panel at subdomain

corrosionmgmt.com now serves LandingView as the default page with marketing
routes at root level. panel.corrosionmgmt.com continues serving the admin
panel unchanged. /site/* backward compat via redirects on marketing domain.

- nginx: Add bare domain server block (only proxies /api/early-access/)
- router: Detect hostname at module load, generate domain-specific routes
- MarketingLayout: Named routes for nav, external <a> tags for auth links
- LandingView: CTAs point to panel domain via VITE_PANEL_URL

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Vantz Stockwell
2026-02-15 10:21:11 -05:00
parent 1c3aece4de
commit 77155d30be
5 changed files with 137 additions and 54 deletions

View File

@@ -67,6 +67,28 @@ http {
}
}
# Marketing site — corrosionmgmt.com (bare domain)
server {
listen 80;
server_name corrosionmgmt.com;
# Early access signup API
location /api/early-access/ {
limit_req zone=api burst=10 nodelay;
proxy_pass http://api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# SPA
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
}
# Wildcard server — *.corrosionmgmt.com (public server sites)
server {
listen 80;