70 lines
3.0 KiB
Markdown
70 lines
3.0 KiB
Markdown
# 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)
|
|
- [x] Inizializzazione Repository e Cartelle (`src/backend`, `src/frontend`).
|
|
- [x] Setup Backend: Express, Prisma, Struttura Modulare base.
|
|
- [x] Setup Frontend: Vite React, Configurazione CSS Base (Design Tokens), Layout App Shell (Sidebar, Header).
|
|
- [x] Configurazione Database iniziale (Schema Prisma: User, Company preliminary).
|
|
|
|
### Fase 2: Gestione Anagrafiche
|
|
- [x] Modulo Aziende (Companies): CRUD, Sedi.
|
|
- [x] Modulo Lavoratori (Workers): CRUD, Associazione Azienda.
|
|
- [x] UI per Anagrafiche: Tabelle moderne, Form di inserimento laterali o modali.
|
|
|
|
### Fase 3: Core Formazione
|
|
- [x] Modulo Corsi (Courses): Catalogo, tipologie, validità.
|
|
- [x] Modulo Eventi (TrainingEvents): Gestione eventi, upload attestati (Parziale).
|
|
- [x] Logica Calcolo Scadenze (Service layer dedicate).
|
|
|
|
### Fase 4: Scadenzario e Dashboard
|
|
- [x] Dashboard KPI: Grafici di copertura.
|
|
- [x] Scadenzario: Datatable avanzata (Filtri, Sort, Export Excel).
|
|
|
|
### Fase 5: Notifiche e Comunicazioni
|
|
- [x] Sistema Code Mail (Redis/Bull o tabella DB semplice per MVP).
|
|
- [x] Template Engine (Mock/Simple).
|
|
- [x] 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.
|