Files
obis-gestionale-security/docs/development/devlog/2025-12-15-111000_initial_plan.md
2025-12-15 13:16:19 +01:00

3.0 KiB

Piano di Sviluppo - Zentral (OBIS Safety)

Data: 2025-12-15 Stato: Pianificazione Iniziale

Obiettivo

Creare una Web App SaaS ("Zentral") per la gestione della formazione sicurezza OBIS, sostituendo Excel con un sistema automatizzato.

1. Architettura del Sistema

Backend (Node.js)

  • Framework: Express.js con TypeScript.
  • Struttura: Modulare (vedi src/backend/src/modules).
  • Database:
    • ORM: Prisma (Supporto nativo per SQLite in dev e PostgreSQL in prod).
    • Dev: SQLite (dev.db).
    • Prod: PostgreSQL.
  • API: RESTful standard api/[modulo]/[risorsa].
  • Sicurezza: Helmet, CORS, input validation (Zod/Joi), password hashing (Argon2/Bcrypt).

Frontend (React)

  • Build Tool: Vite.
  • Linguaggio: TypeScript.
  • UI/UX:
    • Design System: Custom basato su "Material Design" ma con estetica "Premium" (colori vibranti, glassmorphism).
    • Styling: Vanilla CSS (Variabili CSS per temi) + CSS Modules per scoping.
    • Componenti: React standard.
  • Stato: React Context + Hooks per gestione globale semplice.

2. Roadmap di Implementazione

Fase 1: Setup e Fondamenta (Oggi)

  • Inizializzazione Repository e Cartelle (src/backend, src/frontend).
  • Setup Backend: Express, Prisma, Struttura Modulare base.
  • Setup Frontend: Vite React, Configurazione CSS Base (Design Tokens), Layout App Shell (Sidebar, Header).
  • Configurazione Database iniziale (Schema Prisma: User, Company preliminary).

Fase 2: Gestione Anagrafiche

  • Modulo Aziende (Companies): CRUD, Sedi.
  • Modulo Lavoratori (Workers): CRUD, Associazione Azienda.
  • UI per Anagrafiche: Tabelle moderne, Form di inserimento laterali o modali.

Fase 3: Core Formazione

  • Modulo Corsi (Courses): Catalogo, tipologie, validità.
  • Modulo Eventi (TrainingEvents): Gestione eventi, upload attestati (Parziale).
  • Logica Calcolo Scadenze (Service layer dedicate).

Fase 4: Scadenzario e Dashboard

  • Dashboard KPI: Grafici di copertura.
  • Scadenzario: Datatable avanzata (Filtri, Sort, Export Excel).

Fase 5: Notifiche e Comunicazioni

  • Sistema Code Mail (Redis/Bull o tabella DB semplice per MVP).
  • Template Engine (Mock/Simple).
  • Workflow approvazione manuale invii.

3. Modello Dati Preliminare (Schema ER semplificato)

  • Company: id, name, vatNumber, email, phone, status...
  • Site: id, companyId, address, city...
  • Worker: id, companyId, siteId, firstName, lastName, taxCode (CF), jobTitle, status...
  • Course: id, title, type, validityYears, hasPostExpiryReminder...
  • TrainingEvent: id, workerId, courseId, eventDate, expiryDate, provider, status (Valid/Expiring/Expired), certificateUrl...
  • Notification: id, companyId, type (Pre/At/Post), status (Pending/Sent/Error), scheduledDate...

4. Azioni Immediate

  1. Creare struttura cartelle.
  2. Inizializzare Backend (npm init, installazione dipendenze base).
  3. Inizializzare Frontend (npm create vite).
  4. Definire Schema Prisma iniziale.