initial commit

This commit is contained in:
2025-12-15 13:16:19 +01:00
commit 0b5b9c3485
110 changed files with 13448 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
---
trigger: always_on
---
usa ./docs/development/devlog per tenere traccia di tutti i piani di lavoro e il loro attuale stato singolarmente, crea qui dentro i log delle lavorazioni ed il lavoro fatto, da fare e suggerito per ogni piano di sviluppo, usa il formato "yyyy-mm-dd-hh24miss_descrizione_brevissima".
usa ./docs/development per tenere un file DEVELOPMENT.md riassuntivo con link ai file specifici dentro ./docs/development/devlog e una breve sintesi specificando che tipo di sviluppo si è concluso o si sta lavorando.
usa ./src/backend per tutto quello che riguarda il backend in Node.js
usa ./src/frontend per tutto quello che riguarda il frontend in react
## Struttura Modulare del Progetto
Il progetto segue una rigorosa struttura modulare sia per il backend che per il frontend. Ogni nuova funzionalità o dominio di business deve essere incapsulato nel proprio modulo.
### Backend (Node.js)
- **Moduli**: `src/backend/src/modules/[nome-modulo]/`
- **Controllers**: `src/backend/src/modules/[nome-modulo]/controllers/`
- I file devono essere nominati `[nome].controller.ts`.
- Le rotte devono essere definite in `[nome-modulo].routes.ts` e seguire il pattern `api/[nome-modulo]/[risorsa]`.
- **Entities/Models**: `src/backend/src/modules/[nome-modulo]/entities/`
- Le entità devono essere definite usando l'ORM scelto (es. TypeORM/Prisma) e risiedere in questa cartella.
- **Services**: `src/backend/src/modules/[nome-modulo]/services/`
- La logica di business deve risiedere nei service, separata dai controller.
### Frontend (React)
- **Moduli**: `src/frontend/src/modules/[nome-modulo]/`
- **Pagine**: `src/frontend/src/modules/[nome-modulo]/pages/`
- **Componenti**: `src/frontend/src/modules/[nome-modulo]/components/`
- **Rotte**: `src/frontend/src/modules/[nome-modulo]/routes.tsx`
- Il file `routes.tsx` deve esportare un componente che definisce le rotte figlie del modulo.
- Le rotte devono essere importate e registrate nel router principale (es. `App.tsx`).

View File

@@ -0,0 +1,37 @@
---
trigger: always_on
---
Produci sempre prima il piano di implementazione nelle cartelle dedicate (`./docs/development/devlog`) e proponi di default all'utente di visionarlo. Se l'utente approva, prosegui con l'implementazione senza fermarti; aggiorna il piano man mano che viene completato.
### Filosofia UX/UI
L'obiettivo primario è **sostituire Excel** riducendo il tempo di gestione manuale.
- **Target Utente:** L'utente tipo (es. "Ilaria") deve gestire grandi moli di dati ripetitivi. Il software deve essere veloce, supportare l'inserimento rapido e fornire feedback immediati.
- **Interfaccia:** Utilizza Material Design. Pulita, professionale e ad alto contrasto per la leggibilità delle tabelle (Scadenzario).
- **Feedback:** Il salvataggio dei dati deve essere quanto più possibile automatico o "senza frizione". Se il backend restituisce un errore, questo deve essere notificato con un messaggio specifico e comprensibile, mai un generico "Errore".
### Stack Tecnologico
- **Frontend:** React. Usa componenti standard e stabili.
- **Backend:** Node.js.
- **Database:** Gestione rigorosa in **Code First** tramite ORM (es. Prisma o TypeORM).
- **Sviluppo:** SQLite.
- **Produzione:** PostgreSQL.
- **Regola:** Mai query SQL raw; usare sempre le migrazioni.
### Struttura e Navigazione
Dimentica la logica "App Store". L'applicazione è un unico ambiente integrato con un Menu Laterale fisso per le aree funzionali:
1. **Dashboard** (KPI e riepiloghi).
2. **Scadenzario** (Il cuore operativo: filtri, viste scadenze, stati).
3. **Anagrafiche** (Sottomenu: Aziende, Lavoratori).
4. **Formazione** (Sottomenu: Catalogo Corsi, Eventi Formativi).
5. **Comunicazioni** (Coda invio mail, Storico).
6. **Configurazione/Admin**.
### Workflow di Sviluppo
1. **Pianificazione:** Prima di ogni task, scrivi il piano in `./docs/development`.
2. **Integrazione:** Lavora sempre sul codice esistente. Non riscrivere se puoi estendere.
3. **Responsività:** L'interfaccia deve adattarsi, ma la priorità è la fruibilità Desktop per l'uso da ufficio intensivo.
4. **I18n:** Predisponi il sistema per il multilingua (Italiano default), mantenendo i file di traduzione allineati.
### Verifica Preliminare
Prima di pianificare nuove attività, verifica sempre che l'applicazione si avvii correttamente e che le funzioni base (es. Login, Lista Aziende) siano operative.

View File

@@ -0,0 +1,17 @@
---
trigger: always_on
---
Il software si chiama Zentral (configurazione OBIS Safety) e si occupa esclusivamente di gestire la formazione obbligatoria in materia di sicurezza:
- **Anagrafiche**: Gestione strutturata di aziende clienti, sedi operative e lavoratori.
- **Catalogo Corsi**: Definizione tipologie corsi, livelli e durate di validità (calcolo automatico scadenze).
- **Eventi Formativi**: Registrazione della formazione avvenuta e calcolo automatico dello stato (valido, in scadenza, scaduto).
- **Scadenzario**: Dashboard operativa per il monitoraggio delle scadenze con filtri e viste dedicate.
- **Documentale**: Archiviazione e ricerca rapida degli attestati (PDF/Word) collegati ai lavoratori.
- **Comunicazioni**: Automazione dei flussi di avviso via e-mail alle aziende (promemoria pre-scadenza, scadenza e post-scadenza) con sistema di approvazione.
- **Import/Export**: Strumenti per l'importazione massiva dei dati storici e l'esportazione verso portali e-learning esterni.
Mostra statistiche grafiche sullo stato di copertura formativa nella dashboard principale.
Si orienta all'automatizzazione dei processi di back-office per eliminare la gestione manuale su file Excel e centralizzare i dati della formazione sicurezza.

View File

@@ -0,0 +1,9 @@
---
trigger: always_on
---
All'inizio dei lavori avvia sempre l'applicazione. Assicurati di aver installato le dipendenze con `npm install` (o `yarn`) sia nel backend che nel frontend.
Avvia l'ambiente di sviluppo (che deve lanciare sia backend che frontend) con il comando dedicato (es. `npm run dev` o `make run dev` se presente Makefile).
Se le porte sono occupate, prima liberale, poi avvia l'applicazione.