Specifiche Tecniche del Progetto#
Documento da consegnare a Ente Pubblico — Versione 1.01) Scopo e Obiettivi#
· Scopo: realizzare una soluzione web composta da (i) un e‑commerce WordPress per la gestione di abbonamenti e autenticazione OAuth2 e (ii) una piattaforma operativa responsive con funzionalità in tempo reale, newsletter, notifiche push (Firebase) e mappe (PTV).o Affidabilità, sicurezza e conformità normativa (GDPR/Privacy by Design).o Scalabilità orizzontale dei servizi applicativi.o Interoperabilità tramite API REST e WebSocket.2) Architettura di Alto Livello#
· Cloud provider: Oracle Cloud Infrastructure (OCI).· Sistema Operativo: Ubuntu LTS (>= 22.04).· Web Server: Apache 2.4 con Certbot (Let’s Encrypt) per TLS e rinnovo automatico.· Backend: Node.js LTS (>= 20) con servizi API e WebSocket.o E‑commerce: WordPress + WooCommerce (abbonamenti) + componente OAuth2 Provider.o Piattaforma operativa: applicazione web HTML/CSS/JavaScript responsive (SPA opzionale) con aggiornamenti realtime via WebSocket.· Database: MongoDB (>= 6) per dati applicativi.· Servizi terzi: Firebase Cloud Messaging (FCM) per push notification; PTV per mappe/route/geoservices.2.1) Topologia (proposta)#
· DNS/Subdomini (esempio):o basetender.it → e‑commerce WordPress.o app.basetender.it → piattaforma operativa.o app.basetender.it → API REST/WebSocket (Node.js dietro Apache reverse proxy).o VCN OCI con subnet pubblica (Apache/WordPress/Reverse Proxy) e subnet privata (Node.js, MongoDB).o Security Lists/NSG per limitare porte e traffico est-ovest.· Bilanciamento: opzionale OCI Load Balancer con terminazione TLS.3) Componenti e Versioni Minime#
| Componente | Versione | Note |
|---|
| Ubuntu LTS | 22.04 o superiore | Hardened (UFW, Fail2ban) |
| Apache HTTPD | 2.4.x | mod_proxy, mod_ssl, HTTP/2 |
| Certbot | ultimo LTS | Rinnovo automatico TLS |
| Node.js | 20.x LTS | PM2 per process manager |
| PHP | 8.2 o 8.3 | PHP‑FPM per WordPress |
| WordPress | ultima LTS | WooCommerce + plugin OAuth2 (server) |
| MongoDB | 6.x | WiredTiger, replica set opzionale |
| FCM | Web Push | Service Worker + VAPID |
| PTV | xServer/Developer API | Mappe/Geocoding/Routing |
4) Web Server e Sicurezza#
· Apache come reverse proxy verso Node.js (API e WebSocket):o Proxy su /api/ → backend Node.o Proxy su /ws/ → WebSocket (upgrade/keepalive configurato).· TLS: Certificati Let’s Encrypt via Certbot; forzatura HTTPS; HSTS attivo.· Cifrature: TLS 1.2/1.3, ciphersuite sicure; disabilitazione protocolli legacy.· Headers: CSP, X‑Frame‑Options, X‑Content‑Type‑Options, Referrer‑Policy, Permissions‑Policy.· Firewall: UFW con regole minime (80/443 pubbliche; 22 limitata; porte DB solo private).· WAF: opzionale (OCI WAF) con regole OWASP CRS.5) Backend (Node.js)#
· Pattern: REST JSON (:9443/v1/api...) + WebSocket per eventi realtime (es. wss://app.basetender.it/ws).· Autenticazione/Autorizzazione:o OAuth2 (Authorization Code + PKCE) con WordPress come Authorization Server.o Token JWT firmati (algoritmo ES256/RS256) con rotazione e JWKS endpoint.o Scope e ruoli (RBAC): admin, operatore, lettura.· Sicurezza API: rate‑limiting, CORS a lista, input validation (JOI/Zod), audit log.· Newsletter: servizio Node interno che orchestra invii via SMTP provider (es. PEC/relay istituzionale o servizio terzo), con code e deduplica; supporto template HTML, gestione consensi e opt‑out.· Push: integrazione FCM Web con registrazione device/token, invii per topic o utente.· Mappe PTV: integrazione con API PTV per visualizzazione mappe, geocoding, routing, isocrone; caching risultati.· Altre funzionalità: export CSV/PDF, job schedulati (cron), generazione report.· Osservabilità: log strutturati (JSON), request ID, metrics (Prometheus), healthchecks (/healthz), readiness (/readyz).6) Frontend#
6.1) E‑commerce WordPress#
· Funzioni: vendita abbonamenti, area utente, gestione profili e consensi, Identity/OAuth2 (AS).· Pagamenti: gateway conforme PSD2/SCA.· Sicurezza WP: hardening, aggiornamenti automatici minor, plugin audit, backup.· Tecnologie: HTML, CSS, JavaScript (eventuale SPA).· Responsive: mobile‑first, grid/flex; test su viewport comuni.· Accessibilità: WCAG 2.1 AA (focus, contrasto, ARIA, tastiera).· Realtime: aggiornamenti in tempo reale via WebSocket (notifiche, stato processi, mappe live).· PWA (opzionale): cache offline selettiva, installabile, push integrata.7) Database (MongoDB)#
· Modello: collezioni principali (esempio):o utenti (profilo, ruoli, consensi, mapping ID WP)o abbonamenti (piano, scadenze, stato)o newsletter (liste, campagne, template, eventi)o notifiche (token FCM, preferenze, log invii)o geo (feature, tracciati, cache PTV)· Indici: per campi di ricerca/ordinamento; TTL per log e sessioni.· Backup: snapshot giornaliere + mongodump incrementale; retention ≥ 90 giorni.· Replica (opzionale): replica set 3 nodi (1 primaria, 1 secondaria, 1 arbitro) su AZ diverse.· Crittografia: a riposo (volumi cifrati OCI) e in transito (TLS MongoDB).8) Integrazioni Esterne#
· Firebase Cloud Messaging:o Registrazione token sul browser (service worker), opt‑in esplicito, gestione consenso.o Invii per topic (es. ruoli/aree) o unicast (utente).o Uso di endpoint xServer/Developer: Map, Geocoding, Routing.o Gestione chiavi API in vault e rotazione.· GDPR: base giuridica, informativa, registro trattamenti, DPA con fornitori (OCI, FCM, PTV, gateway pagamenti).· Consensi: granulari per newsletter e push; opt‑out self‑service.· Data Minimization: raccolta dati essenziale; pseudonimizzazione dove possibile.· Audit: log accessi e azioni rilevanti (immutabili, retention ≥ 12 mesi).10) DevOps, CI/CD e Ambienti#
· Ambienti: dev, staging, prod separati (DB e storage isolati).· Pipeline: build/test/lint, containerizzazione (Docker opzionale), deploy automatizzato (zero‑downtime con PM2).· Monitoraggio: OCI Monitoring/Alarms, Prometheus + Grafana (opz.), log centralizzati (Loki/ELK).11) Prestazioni e Scalabilità#
o Disponibilità API ≥ 99,5% / mese.o Tempo risposta p95 API ≤ 500 ms a regime.· Caching: HTTP cache, CDN (opzionale), cache applicativa (Redis opzionale).· Scalabilità: orizzontale per backend (più istanze dietro LB); DB con shard/replica futuri.12) Test e Collaudo#
· Test: unità, integrazione, E2E (incl. flussi OAuth2), sicurezza (SAST/DAST), carico (k6).· UAT: script di accettazione per e‑commerce, piattaforma, newsletter, push e mappe.· Pen‑test: terza parte prima del go‑live.13) Backup, DR e Continuità Operativa#
· Backup: applicativo + DB + file WordPress/media.· DR: ripristino in secondaria regione OCI (opzionale) o snapshot cross‑region.14) Manutenzione e Supporto#
· Patching: mensile (OS, Apache, PHP, Node, WP, plugin).· Change Management: finestra programmata, roll‑back pianificato.15) Mappatura Requisiti → Soluzione#
| Requisito | Soluzione |
|---|
| Server in cloud Oracle, OS Ubuntu | OCI VM con Ubuntu LTS hardenizzata |
| Web server Apache, Certbot | Apache 2.4 + Let’s Encrypt con rinnovo automatico |
| Database MongoDB | MongoDB 6.x, backup e indici, replica opzionale |
| Stack NodeJS, HTML, CSS, JS, PHP | Node.js backend; WP/PHP per e‑commerce; frontend responsive |
| Servizi: API, WebSocket, OAuth2, Push FCM | API REST + WebSocket; OAuth2 su WordPress; FCM web push |
| Backend scritto in NodeJS | Servizi applicativi, newsletter, push orchestrati in Node |
| Frontend diviso: WP + Piattaforma | WordPress per abbonamenti e identità; piattaforma operativa separata |
| Newsletter | Servizio Node con SMTP/provider, template, consensi |
| Mappe con PTV | Integrazione xServer/Developer, caching |
| Responsive | Design mobile‑first, WCAG 2.1 AA |
| Modifiche realtime | WebSocket con eventi e broadcast |
16) Note Operative#
· Parametrizzazione completa via variabili d’ambiente (12‑factor).· Segreti gestiti in OCI Vault (chiavi JWT, credenziali DB, API keys FCM/PTV).· Logging conforme a linee guida AgID dove applicabile.
Appendice A — Porte e Protocolli (indicative)- 80/443 TCP (HTTP/HTTPS) — pubblico (Apache/Load Balancer)- 22 TCP (SSH) — accesso amministrativo limitato IP- 9443 - 9444 TCP — backend Node.js (solo rete privata)- 27017 TCP — MongoDB (solo rete privata)Appendice B — Endpoints (esempi)- WS: wss://app.basetender.it:9444 (eventi: notifica, stato, mappa:update)Appendice C — Policy di Retention (esempio)- Log applicativi: 12 mesi; log sicurezza: 24 mesi.- Token/Sessioni: TTL 24h/rotazione 15 min (access/refresh).Modified at 2025-08-28 09:35:29