Variabili d’Ambiente

Tutte le configurazioni de Il Carrubo sono gestite tramite variabili d’ambiente nel file .env nella root del progetto.

::: callout[caution]
Non committare mai il file .env nel repository. Contiene credenziali sensibili come chiavi API, password del database e token di accesso. Il file è già incluso nel .gitignore.
:::


Database & Autenticazione

Variabili fondamentali per la connessione a Supabase e l’autenticazione delle API.

Variabile Obbligatoria Descrizione
SUPABASE_URL <span class=“status-badge required”><i class=“fa-solid fa-check”></i> Sì</span> URL del progetto Supabase (es. https://xxxxx.supabase.co)
SUPABASE_KEY <span class=“status-badge required”><i class=“fa-solid fa-check”></i> Sì</span> Chiave pubblica anon per le operazioni lato client
SUPABASE_SERVICE_ROLE_KEY <span class=“status-badge required”><i class=“fa-solid fa-check”></i> Sì</span> Chiave service_role per operazioni privilegiate lato server
SUPABASE_DB_URL <span class=“status-badge required”><i class=“fa-solid fa-check”></i> Sì</span> Stringa di connessione PostgreSQL diretta
API_KEY <span class=“status-badge required”><i class=“fa-solid fa-check”></i> Sì</span> Chiave API personalizzata per autenticare le richieste REST

::: callout[important]
Tutte le variabili di questa sezione sono obbligatorie. Il server non si avvierà senza di esse.
:::


Alloggiati Web

Credenziali per l’invio automatico delle schedine alloggiati alla Questura tramite protocollo SOAP.

Variabile Obbligatoria Descrizione
ALLOGGIATI_USER <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Username fornito dalla Questura
ALLOGGIATI_PASS <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Password fornita dalla Questura
ALLOGGIATI_WSKEY <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Chiave del servizio web (WS Key)

::: callout[note]
Queste variabili sono necessarie solo se si utilizza la funzionalità di invio automatico alla Questura. Senza di esse, la sezione Alloggiati Web sarà disabilitata nell’interfaccia.
:::


Generazione PDF

Configurazione per la generazione automatica di documenti PDF tramite APITemplate.io.

Variabile Obbligatoria Descrizione
API_TEMPLATE_KEY <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Chiave API di APITemplate.io
API_TEMPLATE_ID <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> ID del template PDF principale (es. ricevute)
API_TEMPLATE_BASE <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> URL base dell’API di APITemplate.io
API_TEMPLATE_WELCOME_ID <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> ID del template per la lettera di benvenuto

Storage Documenti

Configurazione per l’archiviazione dei documenti scansionati su GitHub.

Variabile Obbligatoria Descrizione
GITHUB_TOKEN <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Personal Access Token di GitHub con permessi repo
GITHUB_REPO <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Repository di destinazione nel formato owner/repo

Ngrok

Configurazione per il tunneling sicuro con ngrok, utile per esporre il server locale su internet.

Variabile Obbligatoria Descrizione
USE_NGROK <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Abilita ngrok all’avvio (true / false)
NGROK_AUTHTOKEN <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Token di autenticazione ngrok
NGROK_DOMAIN <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Dominio personalizzato ngrok (es. mio-dominio.ngrok-free.app)

Email (SMTP)

Configurazione del server SMTP per l’invio di email agli ospiti (conferme, welcome letter, promemoria).

Variabile Obbligatoria Descrizione
SMTP_HOST <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Hostname del server SMTP (es. smtp.gmail.com)
SMTP_PORT <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Porta del server SMTP (es. 587 per TLS, 465 per SSL)
SMTP_USER <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Username / email per l’autenticazione SMTP
SMTP_PASS <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Password o App Password per l’autenticazione SMTP
SMTP_SECURE <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Usa connessione sicura (true per SSL, false per STARTTLS)
SMTP_FROM_EMAIL <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Indirizzo email del mittente
SMTP_FROM_NAME <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Nome visualizzato del mittente (es. Il Carrubo B&B)

::: callout[tip]
Se usi Gmail, abilita le “Password per le app” nelle impostazioni di sicurezza del tuo account Google e usa quella password come SMTP_PASS.
:::


Observability

Configurazione per il monitoraggio e l’osservabilità tramite Axiom.

Variabile Obbligatoria Descrizione
AXIOM_TOKEN <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Token API di Axiom per l’invio dei log
AXIOM_DATASET <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Nome del dataset Axiom dove salvare gli eventi

OCR

Configurazione per il riconoscimento ottico dei caratteri (OCR) tramite OCR.Space.

Variabile Obbligatoria Descrizione
OCR_API_KEY <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Chiave API di OCR.Space per la scansione documenti

Vercel

Variabili per il deployment e l’integrazione con Vercel.

Variabile Obbligatoria Descrizione
VERCEL_PROJECT_ID <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> ID del progetto Vercel
VERCEL_TOKEN <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Token di accesso Vercel per deploy automatici
VERCEL <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Flag impostata automaticamente da Vercel (1 in ambiente Vercel)

Altre variabili

Variabile Obbligatoria Default Descrizione
QUERY_PASSWORD <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> Password per l’accesso alla pagina di query SQL
PORT <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> 3000 Porta su cui avviare il server Express
NODE_ENV <span class=“status-badge optional”><i class=“fa-solid fa-minus”></i> No</span> development Ambiente di esecuzione (development, production)

File .env di esempio

# ===================================
# Il Carrubo — Configurazione
# ===================================

# --- Database & Auth (OBBLIGATORIE) ---
SUPABASE_URL=https://xxxxx.supabase.co
SUPABASE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6...
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6...
SUPABASE_DB_URL=postgresql://postgres:password@db.xxxxx.supabase.co:5432/postgres
API_KEY=la-tua-chiave-api-sicura

# --- Alloggiati Web ---
# ALLOGGIATI_USER=
# ALLOGGIATI_PASS=
# ALLOGGIATI_WSKEY=

# --- PDF Generation ---
# API_TEMPLATE_KEY=
# API_TEMPLATE_ID=
# API_TEMPLATE_BASE=https://rest.apitemplate.io
# API_TEMPLATE_WELCOME_ID=

# --- Document Storage ---
# GITHUB_TOKEN=ghp_xxxxx
# GITHUB_REPO=owner/repo

# --- Ngrok ---
# USE_NGROK=false
# NGROK_AUTHTOKEN=
# NGROK_DOMAIN=

# --- Email (SMTP) ---
# SMTP_HOST=smtp.gmail.com
# SMTP_PORT=587
# SMTP_USER=
# SMTP_PASS=
# SMTP_SECURE=false
# SMTP_FROM_EMAIL=info@ilcarrubo.it
# SMTP_FROM_NAME=Il Carrubo B&B

# --- Observability ---
# AXIOM_TOKEN=
# AXIOM_DATASET=il-carrubo

# --- OCR ---
# OCR_API_KEY=

# --- Vercel ---
# VERCEL_PROJECT_ID=
# VERCEL_TOKEN=

# --- Altro ---
# QUERY_PASSWORD=
PORT=3000
NODE_ENV=development

::: callout[tip]
Le variabili commentate con # sono opzionali. Rimuovi il commento e inserisci il valore per abilitare la funzionalità corrispondente.
:::