Installazione & Setup
Guida completa per installare e configurare Il Carrubo dal setup iniziale fino al primo avvio.
Installazione del progetto
Setup Supabase
Il Carrubo utilizza Supabase come database PostgreSQL, sistema di autenticazione e storage. Segui questi passi per configurare il tuo progetto.
Crea un progetto Supabase
- Vai su supabase.com e accedi (o crea un account)
- Clicca su New Project
- Scegli un nome (es.
il-carrubo), una password sicura per il database e la regione più vicina (es.eu-central-1) - Attendi il completamento del provisioning (circa 1-2 minuti)
Recupera le credenziali
Nella dashboard del tuo progetto Supabase, vai in Settings → API e copia:
| Credenziale | Dove trovarla | Variabile .env |
|---|---|---|
| Project URL | Settings → API → Project URL | SUPABASE_URL |
| Anon Key | Settings → API → anon public |
SUPABASE_KEY |
| Service Role Key | Settings → API → service_role secret |
SUPABASE_SERVICE_ROLE_KEY |
| Database URL | Settings → Database → Connection string (URI) | SUPABASE_DB_URL |
::: callout[warning]
La Service Role Key ha accesso completo al database, bypassando le Row Level Security policies. Non esporla mai lato client.
:::
Configura il database
Il Carrubo necessita delle seguenti tabelle principali. Puoi crearle tramite l’SQL Editor di Supabase oppure utilizzando lo script di migrazione incluso nel progetto.
Tabelle del database
| Tabella | Descrizione |
|---|---|
prenotazioni |
Prenotazioni con date, stato, prezzi e riferimenti ospiti |
ospiti |
Anagrafica ospiti con dati documento, nazionalità e MRZ |
impostazioni |
Configurazione del sistema (nome struttura, codici, feature flags) |
documenti |
Metadati documenti scansionati e relativi URL di storage |
alloggiati_log |
Log degli invii alla Questura tramite Alloggiati Web |
tariffe |
Tariffe per tipologia di camera e periodo |
camere |
Anagrafica camere con tipologia, capacità e stato |
utenti |
Utenti del sistema con ruoli e permessi |
statistiche |
Dati aggregati per la dashboard analytics |
email_log |
Log delle email inviate agli ospiti |
::: callout[note]
Le migrazioni SQL si trovano nella directory del progetto. Consulta il file README.md per le istruzioni specifiche di migrazione del database.
:::
Primo avvio
Dopo aver configurato le variabili d’ambiente, avvia il server:
npm run dev
Cosa aspettarsi
Al primo avvio vedrai la GUI del terminale basata su blessed, che mostra:
┌─────────────────── Il Carrubo PMS ───────────────────┐
│ │
│ ✅ Server avviato sulla porta 3000 │
│ ✅ Connessione Supabase stabilita │
│ ✅ Route API caricate (46 endpoint) │
│ 📊 Dashboard attiva │
│ │
│ Log in tempo reale... │
│ │
└───────────────────────────────────────────────────────┘
La GUI mostra in tempo reale:
- Log delle richieste HTTP in entrata
- Stato delle connessioni al database
- Statistiche di utilizzo (richieste/minuto, memoria, CPU)
- Errori evidenziati in rosso per un debug rapido
Modalità di avvio
| Comando | Descrizione |
|---|---|
npm run dev |
Sviluppo con nodemon + GUI terminale |
npm start |
Produzione standard |
node server.js |
Avvio diretto senza nodemon |
Troubleshooting
::: callout[warning]
Errore: SUPABASE_URL is not defined
Il file .env non è stato trovato o le variabili non sono state caricate. Verifica che:
- Il file
.envesista nella root del progetto - Le variabili
SUPABASE_URLeSUPABASE_KEYsiano impostate - Non ci siano spazi attorno al segno
=
:::
::: callout[warning]
Errore: EADDRINUSE: port 3000 already in use
La porta 3000 è già occupata da un altro processo. Puoi:
- Terminare il processo che occupa la porta:
npx kill-port 3000 - Cambiare la porta nel file
.env:PORT=3001
:::
::: callout[warning]
Errore: connection refused al database
La connessione a Supabase non riesce. Controlla:
- Che il
SUPABASE_DB_URLsia corretto e includa la password - Che il progetto Supabase sia attivo (non in pausa)
- Che la tua rete non blocchi le connessioni PostgreSQL (porta 5432)
:::
::: callout[warning]
Le dipendenze non si installano
Problemi con npm install:
- Verifica la versione di Node.js:
node -v(deve essere >= 18) - Prova a cancellare
node_modulesepackage-lock.json, poi rieseguinpm install - Su Windows, avvia il terminale come amministratore
:::
::: callout[tip]
Se riscontri altri problemi, apri una issue sul repository GitHub con i log dell’errore e la configurazione del tuo ambiente.
:::