# GIX DEM Tools

Sistema completo per estrazione, profilazione e invio campagne DEM (Direct Email Marketing).

## 📋 Panoramica

**GIX DEM Tools** è una piattaforma integrata che permette di:

- 🔍 **Estrarre email** da web tramite scraping intelligente (SerpAPI + Puppeteer)
- 👥 **Gestire contatti** con profilazione e arricchimento dati
- ✉️ **Creare campagne** DEM personalizzate
- 📊 **Tracciare performance** con analytics in tempo reale
- 🎯 **Segmentare audience** con criteri avanzati

## 🏗️ Architettura

```
gix-demtools/
├── backend/         # API Node.js + Express
│   ├── src/
│   │   ├── config/
│   │   ├── models/
│   │   ├── routes/
│   │   ├── services/
│   │   └── ...
│   └── package.json
│
├── frontend/        # Vue.js 3 SPA
│   ├── src/
│   │   ├── components/
│   │   ├── views/
│   │   ├── stores/
│   │   └── ...
│   └── package.json
│
└── DEM_SYSTEM_PLAN.md  # Documentazione completa
```

## 🚀 Quick Start

### Prerequisiti

- **Node.js 18+**
- **MySQL 8.0+**
- **Redis 6+** (per background jobs)
- **Chromium** (per Puppeteer scraping)

### 1. Setup Database

```sql
mysql -h 94.23.73.2 -u root -p

CREATE DATABASE gix_demtools CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'gix_demtools'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON gix_demtools.* TO 'gix_demtools'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```

### 2. Backend Setup

```bash
cd backend

# Installa dipendenze
npm install

# Configura environment
cp .env.example .env
# Modifica .env con le tue credenziali

# Esegui migrations
npm run migrate

# Avvia server development
npm run dev
```

Server disponibile su: `http://localhost:3003`

### 3. Frontend Setup

```bash
cd frontend

# Installa dipendenze
npm install

# Avvia development server
npm run dev
```

Applicazione disponibile su: `http://localhost:5173`

## 📦 Stack Tecnologico

### Backend
- **Express.js** - Framework web
- **Sequelize** - ORM MySQL
- **Puppeteer** - Web scraping
- **SerpAPI** - Search results
- **Bull + Redis** - Job queue
- **JWT** - Autenticazione
- **Winston** - Logging

### Frontend
- **Vue 3** - Framework JavaScript
- **Vuetify 3** - UI components
- **Pinia** - State management
- **Vue Router 4** - Routing
- **Axios** - HTTP client
- **Chart.js** - Grafici

## 🔌 API Endpoints

### Autenticazione
- `POST /api/auth/login` - Login
- `POST /api/auth/register` - Registrazione
- `GET /api/auth/me` - Profilo utente

### Contatti
- `GET /api/contacts` - Lista contatti
- `POST /api/contacts` - Crea contatto
- `PUT /api/contacts/:id` - Aggiorna contatto
- `DELETE /api/contacts/:id` - Elimina contatto

### Scraping
- `POST /api/scraper/search` - Avvia scraping
- `GET /api/scraper/jobs` - Lista job
- `GET /api/scraper/jobs/:id` - Dettaglio job
- `POST /api/scraper/extract-url` - Estrai da URL

Vedi [DEM_SYSTEM_PLAN.md](../DEM_SYSTEM_PLAN.md) per lista completa.

## 🗄️ Database Schema

Tabelle principali:
- `users` - Utenti sistema
- `contacts` - Database contatti
- `contact_profiles` - Profili arricchiti
- `campaigns` - Campagne email
- `campaign_stats` - Statistiche invii
- `scraping_jobs` - Job di scraping
- `segments` - Segmenti audience
- `email_templates` - Template email

## ⚙️ Configurazione

### Backend (.env)
```env
# Database
DB_HOST=94.23.73.2
DB_USER=gix_demtools
DB_PASSWORD=your_password
DB_NAME=gix_demtools

# JWT
JWT_SECRET=your-secret-key

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379

# SerpAPI
SERPAPI_KEY=your_api_key

# Email Provider
EMAIL_PROVIDER=sendgrid
SENDGRID_API_KEY=your_sendgrid_key
```

### Frontend (.env)
```env
VITE_APP_TITLE=GIX DEM Tools
VITE_API_URL=http://localhost:3003/api
VITE_API_TIMEOUT=30000
```

## 🔒 Sicurezza

- ✅ JWT authentication
- ✅ Password hashing (bcrypt)
- ✅ Rate limiting
- ✅ Input validation (Joi)
- ✅ SQL injection prevention (Sequelize)
- ✅ XSS protection (Helmet.js)
- ✅ CORS configurato

## 📊 Features Principali

### ✨ Web Scraping Intelligente
- Ricerca automatica su Google (SerpAPI)
- Rendering JavaScript con Puppeteer
- Estrazione email con regex avanzato
- Validazione DNS/SMTP
- Background jobs con progress tracking

### 👥 Gestione Contatti
- Database MySQL centralizzato
- Importazione CSV/Google Sheets
- Arricchimento dati (Hunter.io, Clearbit)
- Scoring e qualificazione lead
- Gestione tag e custom fields

### ✉️ Campagne DEM
- Template editor visuale
- Personalizzazione dinamica
- A/B testing
- Scheduling intelligente
- Tracking aperture/click

### 📈 Analytics
- Dashboard in tempo reale
- Report performance campagne
- Segmentazione audience
- Export dati (CSV, PDF)

## 🚨 Troubleshooting

### Database connection error
```bash
# Verifica credenziali in .env
# Verifica che il database esista
# Testa connessione: mysql -h 94.23.73.2 -u gix_demtools -p
```

### Redis connection error
```bash
# Verifica Redis sia in esecuzione
redis-cli ping  # Deve rispondere PONG

# Se non installato:
sudo apt-get install redis-server
sudo systemctl start redis
```

### Puppeteer errors
```bash
# Installa dipendenze sistema
sudo apt-get install chromium-browser libnss3 libatk-bridge2.0-0

# Verifica path in .env
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
```

## 📚 Documentazione

- [Backend README](./backend/README.md)
- [Frontend README](./frontend/README.md)
- [Piano Completo Sistema](../DEM_SYSTEM_PLAN.md)

## 🎯 Roadmap

### Fase 1 (Completata) ✅
- Setup progetto
- Struttura base
- Route e middleware

### Fase 2 (In Sviluppo) 🚧
- Implementazione modelli database
- Servizi scraping
- API contatti base

### Fase 3 (Prossimamente)
- Profilazione e arricchimento
- Segmentazione avanzata
- Sistema campagne

### Fase 4 (Future)
- Template editor
- Tracking completo
- Analytics dashboard

## 👥 Team

Sviluppato da **GIX Team**

## 📝 License

ISC

---

**Pronto per iniziare!** 🚀

Per domande o supporto, consulta la [documentazione completa](../DEM_SYSTEM_PLAN.md).
