# GIX DEM Tools - Installazione Completata ✅

## 🎉 Sistema Operativo

Il progetto **GIX DEM Tools** è stato installato e configurato con successo!

### 🌐 Accesso

**URL:** https://dem-tools.gix.management

### 📊 Stato Servizi

| Servizio | Stato | Porta | Comando |
|----------|-------|-------|---------|
| Backend API | ✅ Running | 3003 | `pm2 status gix-demtools-backend` |
| Frontend Vue.js | ✅ Deployed | - | Servito da Apache |
| Apache Web Server | ✅ Running | 80/443 | `systemctl status apache2` |
| SSL Certificate | ✅ Active | - | Scade il 11 Maggio 2026 |

---

## 🛠️ Gestione Backend con PM2

### Script Manager

```bash
cd /var/www/html/gix-demtools/backend

# Comandi disponibili
./pm2-manager.sh start         # Avvia (development)
./pm2-manager.sh start-prod    # Avvia (production con 2 istanze)
./pm2-manager.sh stop          # Ferma
./pm2-manager.sh restart       # Riavvia
./pm2-manager.sh reload        # Ricarica (zero-downtime)
./pm2-manager.sh status        # Stato dettagliato
./pm2-manager.sh logs          # Visualizza logs
./pm2-manager.sh health        # Health check
```

### Comandi PM2 Diretti

```bash
pm2 list                              # Lista processi
pm2 logs gix-demtools-backend         # Logs in tempo reale
pm2 monit                             # Monitoring dashboard
pm2 restart gix-demtools-backend      # Riavvia
pm2 stop gix-demtools-backend         # Ferma
pm2 delete gix-demtools-backend       # Rimuovi da PM2
```

### Logs Backend

```bash
# Logs PM2
tail -f /var/www/html/gix-demtools/backend/logs/pm2-error.log
tail -f /var/www/html/gix-demtools/backend/logs/pm2-out.log

# Logs applicazione (Winston)
tail -f /var/www/html/gix-demtools/backend/logs/error.log
tail -f /var/www/html/gix-demtools/backend/logs/combined.log
```

---

## 🌐 Configurazione Apache

### File di Configurazione

- **HTTP:** `/etc/apache2/sites-available/dem-tools.gix.management.conf`
- **HTTPS:** `/etc/apache2/sites-available/dem-tools.gix.management-le-ssl.conf`

### Gestione Apache

```bash
# Test configurazione
apache2ctl configtest

# Ricarica configurazione
systemctl reload apache2

# Riavvia Apache
systemctl restart apache2

# Stato Apache
systemctl status apache2
```

### Logs Apache

```bash
# Logs specifici DEM Tools
tail -f /var/log/apache2/demtools_access.log
tail -f /var/log/apache2/demtools_error.log

# Logs generali Apache
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
```

---

## 🔒 Certificato SSL

### Informazioni

- **Dominio:** dem-tools.gix.management
- **Emittente:** Let's Encrypt
- **Scadenza:** 11 Maggio 2026
- **Auto-rinnovo:** Configurato (certbot)

### Verifica Certificato

```bash
# Info certificato
certbot certificates

# Test rinnovo
certbot renew --dry-run

# Rinnovo manuale (se necessario)
certbot renew

# Dopo rinnovo, ricarica Apache
systemctl reload apache2
```

### Percorsi Certificato

```
/etc/letsencrypt/live/dem-tools.gix.management/fullchain.pem
/etc/letsencrypt/live/dem-tools.gix.management/privkey.pem
```

---

## 🔄 Aggiornamento Applicazione

### Update Completo

```bash
cd /var/www/html/gix-demtools/backend
./pm2-manager.sh update
```

Questo comando esegue:
1. `git pull` (se git configurato)
2. `npm install` (aggiorna dipendenze)
3. `npm run migrate` (esegue migrations database)
4. `pm2 reload` (ricarica app senza downtime)

### Aggiornamento Manuale

#### Backend

```bash
cd /var/www/html/gix-demtools/backend

# Installa nuove dipendenze
npm install

# Esegui migrations database
npm run migrate

# Ricarica applicazione
pm2 reload gix-demtools-backend
```

#### Frontend

```bash
cd /var/www/html/gix-demtools/frontend

# Installa nuove dipendenze
npm install

# Rebuild per produzione
npm run build

# Nessun riavvio necessario (Apache serve i file statici)
```

---

## 🗄️ Database

### Informazioni Connessione

```env
Host: 94.23.73.2
Database: gix_demtools
User: gix_demtools
Port: 3306 (default)
```

### Comandi Utili

```bash
# Connessione database
mysql -h 94.23.73.2 -u gix_demtools -p gix_demtools

# Backup database
mysqldump -h 94.23.73.2 -u gix_demtools -p gix_demtools > backup_$(date +%Y%m%d).sql

# Ripristino backup
mysql -h 94.23.73.2 -u gix_demtools -p gix_demtools < backup_20260210.sql
```

### Migrazioni Sequelize

```bash
cd /var/www/html/gix-demtools/backend

# Esegui migrations
npm run migrate

# Rollback ultima migration
npx sequelize-cli db:migrate:undo

# Stato migrations
npx sequelize-cli db:migrate:status
```

---

## 🧪 Testing

### Health Check

```bash
# Backend diretto
curl http://localhost:3003/health

# Tramite Apache (senza SSL)
curl http://localhost/health -H "Host: dem-tools.gix.management"

# Tramite dominio (con SSL)
curl https://dem-tools.gix.management/health
```

### Test API

```bash
# Info API
curl https://dem-tools.gix.management/api

# Test endpoint specifico
curl https://dem-tools.gix.management/api/contacts \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
```

---

## 📦 Struttura Progetto

```
/var/www/html/gix-demtools/
├── backend/                    # Backend Node.js
│   ├── src/
│   │   ├── server.js          # Entry point
│   │   ├── app.js             # Express app
│   │   ├── config/            # Configurazioni
│   │   ├── routes/            # API routes
│   │   ├── middleware/        # Middleware
│   │   └── ...
│   ├── logs/                  # Log files
│   ├── ecosystem.config.cjs   # PM2 config (dev)
│   ├── ecosystem.prod.config.cjs  # PM2 config (prod)
│   ├── pm2-manager.sh         # Script gestione PM2
│   ├── package.json
│   └── .env                   # Environment variables
│
├── frontend/                  # Frontend Vue.js
│   ├── src/
│   │   ├── main.js           # Entry point
│   │   ├── App.vue           # App principale
│   │   ├── views/            # Pagine
│   │   ├── components/       # Componenti
│   │   ├── stores/           # Pinia stores
│   │   ├── api/              # API client
│   │   └── ...
│   ├── dist/                 # Build produzione (servito da Apache)
│   ├── package.json
│   └── .env                  # Environment variables
│
├── README.md                 # Documentazione progetto
└── DEM_SYSTEM_PLAN.md       # Piano completo sistema
```

---

## 🚨 Troubleshooting

### Backend non risponde

```bash
# Verifica stato PM2
pm2 status gix-demtools-backend

# Visualizza logs
pm2 logs gix-demtools-backend --lines 50

# Riavvia
pm2 restart gix-demtools-backend

# Se persiste, riavvia completamente
pm2 delete gix-demtools-backend
cd /var/www/html/gix-demtools/backend
./pm2-manager.sh start
```

### Frontend non si carica

```bash
# Verifica file dist esistano
ls -la /var/www/html/gix-demtools/frontend/dist/

# Se mancanti, rebuilda
cd /var/www/html/gix-demtools/frontend
npm run build

# Verifica permessi
sudo chown -R www-data:www-data /var/www/html/gix-demtools/frontend/dist/
```

### Errori SSL

```bash
# Verifica certificato
certbot certificates

# Test configurazione Apache
apache2ctl configtest

# Ricarica Apache
systemctl reload apache2

# Se necessario, rigenera certificato
certbot --apache -d dem-tools.gix.management --force-renewal
```

### Errori Database

```bash
# Test connessione
mysql -h 94.23.73.2 -u gix_demtools -p -e "SELECT 1"

# Verifica credenziali in .env
cat /var/www/html/gix-demtools/backend/.env | grep DB_

# Esegui migrations se necessario
cd /var/www/html/gix-demtools/backend
npm run migrate
```

---

## 📞 Informazioni Utili

### Porte Utilizzate

- **3003:** Backend Node.js API
- **80:** Apache HTTP (redirect a HTTPS)
- **443:** Apache HTTPS
- **3306:** MySQL (remoto su 94.23.73.2)
- **6379:** Redis (per background jobs - quando installato)

### Dipendenze Sistema

```bash
# Verifica dipendenze installate
node --version        # Node.js 18+
npm --version         # npm
pm2 --version         # PM2
apache2 -v            # Apache 2.4+
mysql --version       # MySQL client
certbot --version     # Certbot 4.0+
```

### Contatti

- **Email Admin:** giovanni@gix.management
- **Dominio:** dem-tools.gix.management

---

## 🎯 Prossimi Passi

### TODO Implementazione

1. **Database Models & Migrations**
   - Creare modelli Sequelize per tutte le tabelle
   - Eseguire migrations per creare struttura database

2. **Controllers Implementation**
   - Implementare logica business per auth, contacts, scraper
   - Attualmente i controller restituiscono 501 Not Implemented

3. **Scraping Services**
   - Implementare ScraperService con Puppeteer
   - Configurare Bull queue con Redis
   - Implementare EmailExtractorService

4. **Authentication System**
   - Implementare registrazione e login
   - Configurare JWT token management
   - Password reset via email

5. **Frontend Features**
   - Collegare API ai componenti Vue
   - Implementare form validation
   - Aggiungere gestione errori

6. **Email Campaign System**
   - Integrare provider email (SendGrid/Mailgun)
   - Template editor
   - Sistema di tracking

### Installazioni Opzionali

```bash
# Redis (richiesto per background jobs)
sudo apt-get install redis-server
sudo systemctl start redis
redis-cli ping  # Verifica installazione

# Chromium (richiesto per Puppeteer scraping)
sudo apt-get install chromium-browser

# jq (per parsing JSON da CLI)
sudo apt-get install jq
```

---

## 📝 Note Finali

✅ **Backend:** Installato e running con PM2  
✅ **Frontend:** Buildato e servito da Apache  
✅ **SSL:** Certificato Let's Encrypt attivo  
✅ **Apache:** Configurato con proxy API  
✅ **Monitoring:** PM2 process manager attivo  

**Sistema pronto per lo sviluppo!** 🚀

Per domande o problemi, consultare:
- [README Backend](./backend/README.md)
- [README Frontend](./frontend/README.md)
- [Piano Sistema Completo](../DEM_SYSTEM_PLAN.md)
