Deployment
Questo template ha una strategia dual-track:
- Vercel ospita il sito demo eseguibile (SSR runtime)
- GitHub Pages ospita questa documentazione (VitePress statico)
Vercel — Live demo
URL: https://scuola-guida.demo.federicocalo.dev
Setup iniziale (una volta sola)
Connetti il repo a Vercel:
bashnpm install -g vercel vercel login vercel linkAggiungi custom domain in Vercel Dashboard:
- Settings > Domains > Add
scuola-guida.demo.federicocalo.dev - Vercel verifica SSL via Let's Encrypt (NS delegation
demo.federicocalo.dev→ Vercel nameservers)
- Settings > Domains > Add
Aggiungi GitHub Secrets per CI:
VERCEL_TOKEN(Vercel Dashboard > Settings > Tokens)VERCEL_ORG_IDeVERCEL_PROJECT_ID(da.vercel/project.json)
Deploy automatico
Push su main → workflow .github/workflows/vercel-prod.yml deploya automaticamente.
In alternativa, basta connettere il repo alla Vercel GitHub App (Vercel Dashboard) per deploy auto senza workflow esplicito.
Configurazione Vercel
vercel.json configura:
- Build command:
npm run build - Output directory:
dist/scuola-guida/browser - Region:
fra1(Frankfurt EU) - Serverless function:
api/index.jscon runtime Node 20 - Cache headers: 1 anno per asset hashati
- Security headers: X-Content-Type-Options, X-Frame-Options, Referrer-Policy
GitHub Pages — Documentation
URL: https://fedcal.github.io/demo-scuola-guida/
Setup iniziale
- Repo Settings > Pages > Source: GitHub Actions
- Push qualsiasi modifica in
docs/**→ workflow.github/workflows/docs.ymlbuilda VitePress e deploya
Configurazione VitePress
docs/.vitepress/config.ts:
base: /demo-scuola-guida/(subdirectory GH Pages)cleanUrls: true- Search locale integrato
- Sidebar + nav configurati
Custom domain (opzionale)
Per usare scuola-guida-docs.federicocalo.dev invece del subdirectory:
- Cloudflare DNS aggiungi CNAME:
scuola-guida-docs CNAME fedcal.github.io (proxy OFF) - Repo Settings > Pages > Custom domain:
scuola-guida-docs.federicocalo.dev - Modifica
docs/.vitepress/config.tsbase: '/' - Crea file
docs/CNAMEcon il dominio
Local SSR test
Verifica build SSR locale:
npm run build
npm run serve:ssr:scuola-guida
# → http://localhost:4000Troubleshooting
Vercel: build fail "function exceeds 250MB"
Limita prerender in angular.json:
"prerender": { "discoverRoutes": false, "routes": ["/", "/contatti"] }GH Pages: 404 su deep link
Verifica 404.html copy nel workflow docs.yml. Per Angular SPA routing senza prerender, copia index.html come 404.html.
Vercel: SSL handshake error custom domain
Verifica che Cloudflare proxy sia OFF (cloud grigio) per il record CNAME/NS verso Vercel. Cloudflare proxy + Vercel SSL non sono compatibili.