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 |
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 |
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
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
=
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
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)
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
Se riscontri altri problemi, apri una issue sul repository GitHub con i log dell’errore e la configurazione del tuo ambiente.