BaseTender
    BaseTender
    • Documentazione
    • Auth
      • auth
        POST
    • Vehicles
      • /vehicles/plate/:plate
        GET
      • /vehicles/id/:id
        GET
      • /vehicles/all/:company_id
        GET
      • /vehicles/update/:id
        PUT
    • Companies
      • /companies/create
        POST
    • Users
      • /users/create
        POST
      • /users/createResetOauthPw
        POST
      • /users/resetOauthPw
        POST
      • /users/resetLegacyPw
        POST
    • Trips
      • /trips/all/:company_id/:user_id
        GET
      • /trips/mine/:company_id
        GET
      • /trips/quoted/:company_id
        GET
      • /trips/:id/set/status/:status
        POST
      • /trips/details/:id/:company_id
        GET
      • /trips/all_data/:trip_id
        GET
      • /trips/add
        POST
    • Offers
      • /offers/:id/set/status/:status
        POST
      • /offers/:id/set/offer_business/:offer
        POST
      • offers/:trip_id
        GET
    • Invoices
      • /invoices/mine/:company_id
        GET
      • /invoices/send
        POST
      • /invoices/documents/:trip_id/:type?
        GET
      • /invoices/documents/insert
        POST
      • /invoices/documents/delete/:document_id
        DELETE

    Documentazione

    Specifiche Tecniche del Progetto#

    Documento da consegnare a Ente Pubblico — Versione 1.0

    1) 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).
    ·      Obiettivi:
    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.
    ·      Frontend:
    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).
    ·      Segmentazione rete:
    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#

    ComponenteVersioneNote
    Ubuntu LTS22.04 o superioreHardened (UFW, Fail2ban)
    Apache HTTPD2.4.xmod_proxy, mod_ssl, HTTP/2
    Certbotultimo LTSRinnovo automatico TLS
    Node.js20.x LTSPM2 per process manager
    PHP8.2 o 8.3PHP‑FPM per WordPress
    WordPressultima LTSWooCommerce + plugin OAuth2 (server)
    MongoDB6.xWiredTiger, replica set opzionale
    FCMWeb PushService Worker + VAPID
    PTVxServer/Developer APIMappe/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.

    6.2) Piattaforma Operativa#

    ·      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).
    ·      PTV:
    o   Uso di endpoint xServer/Developer: Map, Geocoding, Routing.
    o   Gestione chiavi API in vault e rotazione.

    9) Conformità, Privacy, Dati#

    ·      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à#

    ·      SLO (proposta):
    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#

    RequisitoSoluzione
    Server in cloud Oracle, OS UbuntuOCI VM con Ubuntu LTS hardenizzata
    Web server Apache, CertbotApache 2.4 + Let’s Encrypt con rinnovo automatico
    Database MongoDBMongoDB 6.x, backup e indici, replica opzionale
    Stack NodeJS, HTML, CSS, JS, PHPNode.js backend; WP/PHP per e‑commerce; frontend responsive
    Servizi: API, WebSocket, OAuth2, Push FCMAPI REST + WebSocket; OAuth2 su WordPress; FCM web push
    Backend scritto in NodeJSServizi applicativi, newsletter, push orchestrati in Node
    Frontend diviso: WP + PiattaformaWordPress per abbonamenti e identità; piattaforma operativa separata
    NewsletterServizio Node con SMTP/provider, template, consensi
    Mappe con PTVIntegrazione xServer/Developer, caching
    ResponsiveDesign mobile‑first, WCAG 2.1 AA
    Modifiche realtimeWebSocket 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)
    - REST: GET https://app.basetender.it:9443/v1/utenti
    - WS: wss://app.basetender.it:9444 (eventi: notifica, stato, mappa:update)
    - OAuth2: https://basetender.it/oauth/authorize / /oauth/token / /.well-known/jwks.json
    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
    Next
    auth
    Built with