OVVO Camping
Stack tecnico — Ovvo Camping by SeoSoft

Non siamo gli
ultimi arrivati.

TypeScript full-stack, microcontrollori ESP32 programmati in C++, MQTT per l'IoT, OCPP per le colonnine EV, AI per l'OCR documenti. Questa è la tecnologia che fa girare Ovvo Camping — aperta, documentata, su standard industriali.

ovvo-camping — backend
$ npm run dev
▸ PostgreSQL connected (pool: 10)
▸ Redis ready (pub/sub active)
▸ MQTT broker listening :1883
▸ ESP32 nodes online: 3
▸ OCPP gateway ready (OCPP 1.6)
▸ OpenAI Vision endpoint: active
▸ Server running on :3000 ✓
100%
TypeScript
Zero JavaScript puro — type safety ovunque
ESP32
Hardware custom
Da €4 per nodo IoT personalizzato
AES-256
Crittografia
Documenti ospiti cifrati sempre
<200ms
ANPR response
Riconoscimento targa in tempo reale
CI/CD
Deploy continuo
Test automatici su ogni commit
99.5%
Uptime SLA
Datacenter IT/DE, dati EU-only
Stack completo

Ogni livello scelto per una ragione.

Nessuna tecnologia è nel nostro stack per moda. Ogni scelta ha una motivazione tecnica concreta, spiegata onestamente — inclusi i limiti.

Frontend

Interfaccia e UX

L'interfaccia del gestionale deve essere veloce, stabile e usabile anche da personale non tecnico in piena stagione. Abbiamo scelto uno stack moderno con bundling ottimizzato e zero dipendenze non necessarie.

TypeScript

Type-safety su tutta la codebase — zero errori runtime in produzione

React 18

Concurrent mode, Suspense, lazy loading per pagine istantanee

Vite

Build in <500ms, HMR istantaneo in sviluppo

Tailwind CSS

Utility-first, zero CSS spaghetti, design system consistente

Shadcn/UI

Componenti accessibili (WAI-ARIA) e altamente personalizzabili

React Query (TanStack)

Cache intelligente, background refetch, ottimistic updates

Wouter

Router leggero 1KB — nessun overhead inutile per un SPA

Recharts

Dashboard e grafici presenze completamente responsive

Backend

API, logica e dati

Il backend è il motore che gira h24/365. Progettato per gestire picchi di carico durante i weekend di alta stagione senza degradazione delle prestazioni. Architettura event-driven per le integrazioni hardware in tempo reale.

Node.js + TypeScript

Runtime asincrono non-blocking — gestisce centinaia di connessioni IoT simultane

Express.js

API REST documentate con OpenAPI 3.0, validazione Zod su ogni endpoint

PostgreSQL 16

Database relazionale ACID — zero compromessi sull'integrità dei dati

Redis

Cache sessioni, rate limiting e pub/sub per eventi real-time

WebSockets (ws)

Dashboard live: occupazione piazzole e stato sbarre aggiornati in real-time

MQTT Broker (Mosquitto)

Broker IoT per tutti i dispositivi ESP32 e sensori della struttura

BullMQ

Code di lavoro per invio email, generazione PDF e sync OTA asincroni

Zod

Validazione schemi runtime — ogni payload validato prima di toccare il DB

Database e Storage

Persistenza e backup

I dati di un campeggio includono documenti di identità, dati personali GDPR-protetti e transazioni economiche. Non abbiamo fatto compromessi sulla sicurezza della persistenza.

PostgreSQL (primary)

Schema relazionale normalizzato, foreign key constraints, indici parziali

Drizzle ORM

Type-safe query builder — le query sono TypeScript, non stringhe

Backup automatico (pg_dump)

Snapshot giornaliero cifrato AES-256, retention 90 giorni

Crittografia colonne sensibili

Documenti ospiti cifrati a livello colonna con chiave per-tenant

S3-compatible object storage

Documenti scansionati, PDF brogliacci e allegati fuori dal DB

Audit log immutabile

Log di ogni accesso ai dati personali — richiesto GDPR art. 30

IoT & Hardware

ESP32, RS-485, OCPP e oltre

Questa è la parte che ci distingue davvero dal software gestionale standard. Arriviamo fino al microcontrollore — non deleghiamo l'hardware a terze parti e non usiamo middleware proprietari.

ESP32 (Espressif)

Microcontrollore dual-core 240MHz con WiFi+BT integrati — €4 per nodo

ESP-IDF + Arduino Core

Firmware scritto in C++ con FreeRTOS — multitasking su bare metal

ESPHome

Per sensori standard: configurazione YAML, OTA update automatico

Tasmota

Per dispositivi Sonoff/Shelly: firmware open-source con MQTT nativo

MicroPython / CircuitPython

Prototyping rapido su Raspberry Pi Pico W e simili

MQTT (protocollo)

Publish/subscribe leggero — ideale per connessioni instabili su WiFi outdoor

RS-485 / Modbus

Comunicazione seriale industriale per sbarre FAAC/BFT/CAME

OCPP 1.6 / 2.0

Protocollo aperto per colonnine EV — qualsiasi marca OCPP-compliant

Wiegand 26/34

Protocollo standard per lettori RFID e tastiere di accesso

I²C / SPI / UART

Bus locali su ESP32 per sensori (temperatura, flusso acqua, movimento)

Protocolli e Standard

Aperti, documentati, non proprietari

Una scelta precisa: usiamo protocolli aperti e standardizzati ovunque possibile. Questo significa che non sei legato a noi per l'hardware — se domani cambi fornitore di sbarre, il gestionale continua a funzionare.

iCal / RFC 5545

Standard aperto per la sincronizzazione dei calendari con piattaforme e servizi compatibili

SOAP/XML (Alloggiati Web)

Protocollo ministeriale per invio schedine alla Questura — tracciato 168 car.

REST / OpenAPI 3.0

API pubbliche documentate con Swagger UI accessibile ai clienti

WebSockets (RFC 6455)

Aggiornamenti real-time dashboard senza polling

SMTP / DKIM / SPF

Email transazionali con autenticazione — zero finire in spam

OAuth 2.0 / OpenID Connect

Autenticazione federata per future integrazioni enterprise

HTTP/2 + TLS 1.3

Trasporto cifrato con forward secrecy su ogni connessione

JSON Schema / Zod

Validazione strutturata di tutti i messaggi MQTT e API

AI e Computer Vision

OCR documenti e riconoscimento targhe

L'AI che usiamo non è un chatbot. È applicata a problemi specifici e misurabili: leggere un documento di identità senza errori e riconoscere una targa in meno di 200ms.

Modelli multimodali (cloud o on-premise)

Analisi visiva per OCR documenti di identità: carta d'identità, passaporto, patente — in base alla configurazione

Tesseract OCR (fallback)

OCR locale open-source per ambienti senza connessione Internet

OpenALPR / Platerecognizer

ANPR via API REST per telecamere senza processore locale

OpenCV (Raspberry Pi)

ANPR locale su Raspberry Pi 4 — 100% on-premise, zero cloud

Prompt engineering strutturato

Output JSON con schema validato — zero parsing fragile di testo libero

Sicurezza

GDPR, MFA, crittografia

La sicurezza non è un modulo opzionale. È integrata nell'architettura fin dal primo giorno. Dati personali degli ospiti, documenti scansionati e transazioni economiche richiedono un approccio serio.

AES-256-GCM

Cifratura simmetrica per documenti ospiti — chiave per-tenant in HSM

bcrypt (cost 12)

Hashing password con salt casuale — nessuna password in chiaro mai

JWT con rotazione

Token a breve scadenza (15min) con refresh token per sessioni sicure

TOTP / FIDO2 (MFA)

Autenticazione multi-fattore obbligatoria per ruolo Admin

Helmet.js + CSP

Header HTTP di sicurezza: HSTS, no-sniff, frame-ancestors, CSP strict

Rate limiting per IP

Protezione brute-force su login e API sensibili

Audit trail GDPR

Ogni accesso a dati personali loggato con timestamp, user e IP

GDPR art. 25 (Privacy by Design)

Minimizzazione dati, retention automatica, export JSON completo

Infrastruttura

Deploy, monitoring e CI/CD

Infrastruttura Linux su VPS europei con datacenter in Italia. Nessun dato degli ospiti lascia l'UE — requisito GDPR che non è negoziabile.

Linux (Debian/Ubuntu LTS)

Sistema operativo stabile con aggiornamenti di sicurezza automatici

Docker + Docker Compose

Containers per isolamento servizi — deploy riproducibile

Nginx (reverse proxy)

Terminazione TLS, rate limiting e load balancing

Let's Encrypt / ACME

Certificati TLS gratuiti con rinnovo automatico

GitHub Actions (CI/CD)

Test automatici, build e deploy su ogni push al branch main

Uptime monitoring

Alert immediato su downtime — SLA 99.5% garantito

VPS europei (datacenter IT/DE)

Dati personali EU-only — conformità GDPR Schrems II

Sentry (error tracking)

Errori con stack trace e contesto utente — risoluzione media in 4h

Hardware spotlight — ESP32

Perché l'ESP32 è il
cuore dell'IoT per campeggi.

Un microcontrollore da €4 con WiFi, Bluetooth, dual-core 240MHz e decine di GPIO. Con il firmware giusto, diventa qualsiasi cosa — lettore RFID, stazione meteo, centralina energia, cancelletto smart.

ESP32 — Specifiche chiave

CPUXtensa LX6 dual-core @ 240 MHz
RAM520 KB SRAM + PSRAM fino a 4MB
WiFi802.11 b/g/n 2.4GHz integrato
BluetoothBT 4.2 + BLE 5.0
GPIO34 pin programmabili
ADC12-bit, 18 canali analogici
ProtocolliI²C, SPI, UART, CAN, PWM
Consumo sleep10µA in deep-sleep
Costo~€4 (ESP32-WROOM-32D)
OSFreeRTOS multitasking

Use case reali in campeggio

🏕️

Cancelletto piazzola smart

ESP32 + RC522 (RFID) → MQTT → gestionale

L'ospite avvicina il braccialetto NFC: ESP32 legge il tag, pubblica su MQTT, il backend valida la prenotazione e risponde con OK/KO. Latenza: <100ms.

Gestione energia piazzola

ESP32 + relay bistabile → MQTT

Al check-in, il backend pubblica un messaggio MQTT. L'ESP32 riceve, attiva il relay e la corrente arriva alla piazzola. Al check-out, si spegne automaticamente.

💧

Contatore acqua

ESP32 + YF-S201 (impulsi) → PostgreSQL

Il sensore a portata invia impulsi per ogni litro. ESP32 conta, accumula e pubblica ogni 5 minuti. Il gestionale addebita automaticamente i consumi extra.

🌡️

Stazione meteo piazzola

ESP32 + BME280 → alert WhatsApp

Temperatura, umidità, pressione. Se rileva temporale in arrivo, il backend invia WhatsApp agli ospiti della zona. ESP32: €4. Tranquillità per il gestore: impagabile.

📺

Display E-Ink piazzola

ESP32 + display 2.9" → aggiornato via WiFi

Al check-in, il display si aggiorna con nome ospite, data partenza e servizi inclusi. Consuma energia solo quando cambia il contenuto — dura mesi a batteria.

Nota tecnica onesta sull'ESP32

L'ESP32 è potente e versatile, ma non è adatto a tutto. Per applicazioni che richiedono elaborazione AI locale (ANPR con computer vision pesante), usiamo Raspberry Pi 4/5. Per protocolli industriali critici (RS-485 su sbarre di produzione), l'ESP32 viene affiancato da convertitori certificati. Ogni progetto hardware riceve un'analisi preliminare — scegliamo il componente giusto per l'applicazione, non quello più economico.

Filosofia tecnica

Standard aperti, nessun vendor lock-in.

Ogni protocollo che usiamo è documentato e aperto. Se un giorno cambi gestionale, i tuoi dati escono in JSON, i tuoi calendari sono iCal standard, i tuoi dispositivi parlano MQTT o OCPP — e continuano a funzionare.

Protocolli aperti

  • iCal / RFC 5545
  • OCPP 1.6 / 2.0
  • MQTT v3.1.1
  • REST / OpenAPI 3.0
  • SOAP (Alloggiati Web)
  • WebSocket RFC 6455

Hardware standard

  • RS-485 / Modbus RTU
  • Wiegand 26/34 (RFID)
  • I²C / SPI / UART
  • OCPP EV charging
  • LoRaWAN TTN
  • Zigbee / Z-Wave

Standard sicurezza

  • TLS 1.3 / HSTS
  • AES-256-GCM
  • TOTP / FIDO2
  • GDPR art. 25/30/32
  • OAuth 2.0 / OIDC
  • DKIM / SPF / DMARC

Hai un'esigenza tecnica specifica?

Parla direttamente con chi ha scritto il codice. Analizziamo insieme il tuo hardware e definiamo cosa è fattibile — gratuitamente, senza impegno.

Chatta con noi