# โ
CHECKLIST IMPLEMENTAZIONE
## Guida step-by-step per nuovi moduli
---
## ๐ **CHECKLIST COMPLETA NUOVO MODULO**
### **โ
FASE 1: PREPARAZIONE**
- [ ] **Nome modulo** definito (es: `fornitori`, `gestioni`)
- [ ] **Credenziali DB** verificate (netgescon_user/NetGescon2024!)
- [ ] **Tabelle core** esistenti (stabili, gestioni, unita_immobiliari)
- [ ] **Pattern scelto** (Menu principale, Sub-menu, Cards)
- [ ] **Files template** pronti da 90-01-content/
### **โ
FASE 2: DATABASE**
- [ ] **Migration creata** con naming convention
- [ ] **Tabella principale** con campi standard
- [ ] **Foreign keys** verso stabili/gestioni
- [ ] **Indexes** su campi filtro
- [ ] **Soft deletes** attivati
- [ ] **Audit fields** (created_by, updated_by)
- [ ] **Migration eseguita** senza errori
- [ ] **Seeder dati test** opzionale
### **โ
FASE 3: CONTROLLER**
- [ ] **Controller creato** in `app/Http/Controllers/Admin/`
- [ ] **Metodi standard** (index, show, create, store, edit, update, destroy)
- [ ] **Stats calculation** per cards
- [ ] **Query con relazioni** stabili/gestioni
- [ ] **Filtro amministratore** implementato
- [ ] **Validation rules** definite
- [ ] **Security checks** attivi
- [ ] **Menu tabs config** configurata
### **โ
FASE 4: ROUTES**
- [ ] **RESTful routes** in `routes/admin.php`
- [ ] **Custom routes** (reports, config)
- [ ] **Route naming** consistente
- [ ] **Middleware auth** applicato
- [ ] **Route testing** funzionante
### **โ
FASE 5: VIEWS**
- [ ] **Folder views** creato `resources/views/admin/{modulo}/`
- [ ] **index.blade.php** con layout base
- [ ] **show.blade.php** con sub-tabs
- [ ] **create.blade.php** con form
- [ ] **edit.blade.php** con form
- [ ] **_form.blade.php** partial
### **โ
FASE 6: LAYOUT E MENU**
- [ ] **Extends netgescon** layout
- [ ] **Breadcrumb** configurato
- [ ] **Menu tabs** implementato
- [ ] **Stats cards** configurate
- [ ] **Active states** funzionanti
- [ ] **Icons** appropriate
- [ ] **Navigation** tra tabs
### **โ
FASE 7: CSS E JAVASCRIPT**
- [ ] **CSS standard** incluso
- [ ] **JavaScript modules** incluso
- [ ] **Tab functionality** testata
- [ ] **Cards hover** effects
- [ ] **Responsive design** verificato
- [ ] **Mobile compatibility** testata
### **โ
FASE 8: TESTING**
- [ ] **Listing page** accessibile
- [ ] **Create form** funzionante
- [ ] **Edit form** funzionante
- [ ] **Delete action** funzionante
- [ ] **Search/filters** attivi
- [ ] **Pagination** corretta
- [ ] **Statistics** accurate
- [ ] **Security** verificata (solo dati amministratore)
### **โ
FASE 9: DOCUMENTAZIONE**
- [ ] **README modulo** creato
- [ ] **API endpoints** documentati
- [ ] **Model relationships** documentate
- [ ] **CHANGELOG** aggiornato
- [ ] **Manuali collegati** aggiornati
---
## ๐ **QUICK START TEMPLATE**
### **1. Crea Migration**
```bash
cd /var/www/netgescon
php artisan make:migration create_fornitori_table
```
```php
// database/migrations/YYYY_MM_DD_create_fornitori_table.php
Schema::create('fornitori', function (Blueprint $table) {
$table->id();
$table->string('denominazione');
$table->string('partita_iva')->nullable();
$table->enum('stato', ['attivo', 'inattivo', 'sospeso'])->default('attivo');
$table->foreignId('stabile_id')->nullable()->constrained('stabili')->onDelete('cascade');
$table->integer('amministratore_id')->nullable();
$table->timestamps();
$table->softDeletes();
$table->index(['amministratore_id', 'stato']);
});
```
### **2. Crea Controller**
```bash
php artisan make:controller Admin/FornitoriController
```
```php
// Copia il template da 04-controller-standard.md
// Sostituisci:
// - 'modulo' โ 'fornitori'
// - 'ModuloController' โ 'FornitoriController'
// - 'modulo_table' โ 'fornitori'
```
### **3. Configura Routes**
```php
// routes/admin.php
Route::resource('fornitori', 'FornitoriController');
Route::get('fornitori/reports', ['FornitoriController', 'reports'])->name('fornitori.reports');
```
### **4. Crea Views**
```bash
mkdir -p resources/views/admin/fornitori
```
**index.blade.php**:
```blade
// Copia template da 01-layout-base.md
// Aggiungi menu da 02-pattern-menu.md
// Aggiungi cards da 03-cards-statistiche.md
```
### **5. Include CSS/JS**
```blade
@push('styles')
@endpush
@push('scripts')
@endpush
```
---
## ๐ง **TROUBLESHOOTING COMUNE**
### **โ Errore: Tabella non trovata**
```bash
# Verifica migrations
php artisan migrate:status
php artisan migrate
```
### **โ Errore: Route non trovata**
```bash
# Controlla routes
php artisan route:list | grep fornitori
# Pulisci cache
php artisan route:clear
```
### **โ Errore: View non trovata**
```bash
# Verifica path file
ls -la resources/views/admin/fornitori/
# Pulisci cache views
php artisan view:clear
```
### **โ Errore: CSS non caricato**
```bash
# Verifica file exists
ls -la public/css/netgescon-standard.css
# Controlla browser console per 404
```
### **โ Errore: Permission denied**
```bash
# Verifica permessi
sudo chmod -R 755 /var/www/netgescon/resources/views/
sudo chown -R www-data:www-data /var/www/netgescon/
```
---
## ๐ **ESEMPI IMPLEMENTAZIONE**
### **Modulo Semplice: Fornitori**
```
Tempo stimato: 2-3 ore
Complessitร : Bassa
Pattern: Menu principale + Cards
Tabelle: fornitori (main)
Features: CRUD base, filtri, export
```
### **Modulo Medio: Gestioni**
```
Tempo stimato: 4-6 ore
Complessitร : Media
Pattern: Menu principale + Sub-tabs detail
Tabelle: gestioni (main) + gestioni_movimenti
Features: CRUD, reports, chiusura automatica
```
### **Modulo Complesso: Contabilitร **
```
Tempo stimato: 8-12 ore
Complessitร : Alta
Pattern: Tutti i pattern combinati
Tabelle: Multiple con relazioni complesse
Features: CRUD, reports, piano conti, bilanci
```
---
## ๐ฏ **TESTING CHECKLIST**
### **Funzionalitร Base**:
- [ ] **Login** โ Accesso modulo
- [ ] **Listing** โ Visualizzazione items
- [ ] **Create** โ Nuovo item
- [ ] **Edit** โ Modifica item
- [ ] **Delete** โ Eliminazione item
- [ ] **Search** โ Ricerca funzionante
- [ ] **Filter** โ Filtri attivi
- [ ] **Pagination** โ Navigazione pagine
### **UI/UX**:
- [ ] **Menu tabs** โ Navigazione corretta
- [ ] **Breadcrumb** โ Path corretto
- [ ] **Cards** โ Statistiche accurate
- [ ] **Icons** โ Icone appropriate
- [ ] **Colors** โ Scheme consistente
- [ ] **Responsive** โ Mobile friendly
- [ ] **Loading** โ States appropriati
### **Security**:
- [ ] **Auth required** โ Login obbligatorio
- [ ] **Amministratore filter** โ Solo dati propri
- [ ] **CSRF protection** โ Token presente
- [ ] **Validation** โ Input sanitized
- [ ] **Authorization** โ Permissions corrette
### **Performance**:
- [ ] **Query optimization** โ Indexes utilizzati
- [ ] **N+1 queries** โ Evitate
- [ ] **Page load** โ < 2 secondi
- [ ] **Memory usage** โ Entro limiti
- [ ] **CSS/JS** โ Minified in production
---
## ๐ **TEMPLATE FILES**
### **File da creare per ogni modulo**:
```
app/Http/Controllers/Admin/{Modulo}Controller.php
app/Models/{Modulo}.php (optional Eloquent)
database/migrations/YYYY_MM_DD_create_{modulo}_table.php
database/seeders/{Modulo}Seeder.php (optional)
resources/views/admin/{modulo}/index.blade.php
resources/views/admin/{modulo}/show.blade.php
resources/views/admin/{modulo}/create.blade.php
resources/views/admin/{modulo}/edit.blade.php
resources/views/admin/{modulo}/_form.blade.php
tests/Feature/{Modulo}ControllerTest.php (optional)
```
### **Routes da aggiungere**:
```php
Route::resource('{modulo}', '{Modulo}Controller');
Route::get('{modulo}/reports', ['{Modulo}Controller', 'reports'])->name('{modulo}.reports');
Route::get('{modulo}/config', ['{Modulo}Controller', 'config'])->name('{modulo}.config');
```
---
## ๐ **COMPLETION CHECKLIST**
### **Quando il modulo รจ completato**:
- [ ] **Tutte le checkbox** di questa checklist โ
- [ ] **Demo funzionante** con dati test
- [ ] **Documentazione** aggiornata
- [ ] **Git commit** con message chiaro
- [ ] **Deploy test** su staging
- [ ] **User acceptance** test
- [ ] **Production deploy** quando approvato
### **Post-implementazione**:
- [ ] **Monitor errors** in production
- [ ] **Collect user feedback**
- [ ] **Performance optimization** se necessaria
- [ ] **Documentation update** con lessons learned
---
**๐ Congratulazioni! Il tuo modulo NetGescon รจ pronto e segue tutti gli standard!**