Deploy su Vercel
Il Carrubo è ottimizzato per essere eseguito su Vercel come applicazione Serverless. Questo permette costi bassissimi (o nulli per traffico contenuto) e scalabilità infinita.
Il file vercel.json
La configurazione risiede nel file vercel.json alla radice del progetto:
{
"version": 2,
"cleanUrls": false,
"ignoreCommand": "bash ignore-build.sh",
"rewrites": [
{ "source": "/api/(.*)", "destination": "/api/index" },
{ "source": "/home", "destination": "/home.html" },
{ "source": "/lista", "destination": "/lista.html" }
/* ...altri 20+ rewrites... */
]
}
Serverless Functions
Il progetto usa il file api/index.js (un file molto grande, ~74KB) come handler globale per tutte le route API su Vercel. Il vercel.json fa in modo che ogni richiesta /api/* venga indirizzata a quella singola Serverless Function, riducendo drasticamente i tempi di Cold Start.
Clean URLs
Vercel ha un sistema di “clean URLs” nativo, ma Il Carrubo lo imposta a false nel vercel.json. Il motivo è che la gestione dei clean URL e dei redirect viene fatta manualmente dal file middleware.js (Vercel Edge Middleware) e dai Rewrites per permettere la logica condizionale del “Feature Gating”.
Setup in Vercel
- Importa il repository: Dalla dashboard di Vercel, clicca “Add New” → “Project” e importa il repository GitHub de Il Carrubo.
- Framework Preset: Lascia “Other”.
- Build Command: Non c’è alcun comando di build necessario per il Node backend. Vercel capirà che è un progetto Node dalle cartelle.
- Variabili d’ambiente: Nella sezione “Environment Variables”, incolla tutte le variabili del tuo
.env(eccettoPORTo configurazioni strettamente locali). - Deploy: Clicca “Deploy”.
Custom Domain
Una volta effettuato il deploy, puoi associare un dominio personalizzato:
- Vai su “Settings” → “Domains” nel tuo progetto Vercel.
- Aggiungi
carrubo.tuodominio.it. - Vercel ti fornirà i record CNAME (es.
cname.vercel-dns.com) o A-Record da inserire nel pannello di controllo del tuo provider di domini. - Vercel gestirà automaticamente e gratuitamente la generazione e il rinnovo del certificato SSL (Let’s Encrypt).