📖 Brief Progetto
Nessun brief ancora. Usa il tasto qui sotto per farlo generare da Claude.
1. Premi 🧠 Chiedi generazione Brief → incolla nella chat Claude (allega anche lo zip del progetto se disponibile)
2. Claude ti restituisce il testo → premi 📥 Incolla Brief e incollalo qui
2. Claude ti restituisce il testo → premi 📥 Incolla Brief e incollalo qui
📁 File Progetto
0 file
Max 64M · zip, pdf, docx, xlsx, immagini, codice…
📊 Avanzamento
0%
✅ To Do List
0/0
Nessuna task
📝 Note
== ARCHITETTURA ==
Server VPS OVH 152.228.162.32, Debian, Plesk, MariaDB 10.11.14.
Ogni sito è un progetto Laravel 11 indipendente con DB proprio.
== TRE TIPOLOGIE DI SITO ==
1. FULL (regionale): SITE_TYPE=full, 17 modelli, 24 tabelle, 10-15 destinazioni, centinaia di hotel
2. SINGLE_DEST: SITE_TYPE=single_dest, 22 modelli (+Attraction, Experience, Restaurant, PracticalInfo, Transfer, WeatherMonthly), 30 tabelle, 1 destinazione, ~10 hotel
3. SiciliaInVacanza (originale): app in root (non sottocartella), public/ come docroot (non httpdocs/), no SITE_TYPE, DB user sicilia_db, unico con API+token
== STRUTTURA FILE (FULL + SINGLE_DEST) ==
/var/www/vhosts/{domain}/{slug}-app/.env (config)
/var/www/vhosts/{domain}/{slug}-app/app/Models/ (modelli)
/var/www/vhosts/{domain}/httpdocs/index.php (bootstrap Laravel → {slug}-app/)
== STRUTTURA FILE (SIV) ==
/var/www/vhosts/siciliainvacanza.net/.env (root)
/var/www/vhosts/siciliainvacanza.net/app/Models/
/var/www/vhosts/siciliainvacanza.net/public/index.php (docroot)
== DB ==
Ogni sito ha il suo DB MySQL su localhost. Credenziali nel .env.
Hotel: published_at IS NOT NULL = pubblicato (no campo is_published)
Blog: status = published|scheduled|draft
Destination: cover_image NULL o vuoto = mancante
== CACHE (su base.mclmedia.eu) ==
cache-travel-overview.sh: ogni 3h, SSH su server Travel, raccoglie dati da ogni sito (SSL, sitemap, logo, hotel, blog, dest, voli)
cache-travel-blog.sh: ogni 6h, articoli blog con status immagini
== API MCL HUB ==
Endpoint: /api/mclhub/stats, /api/mclhub/health, /api/mclhub/analytics
Auth: Bearer token (salvato in travel_.sites.api_token su base.mclmedia.eu)
Stato: SOLO SiciliaInVacanza ha token configurato. I 63 altri siti → solo dati cache.
== AGODA ==
Account unico MCL Media: Site ID 1959890, API Key 2a36bffa-9349-4a80-a20b-891243c0c0d4
Ogni destinazione ha agoda_city_id per fetch hotel.
== CRITICITÀ PRINCIPALI (14/03/2026) ==
1. Cover destinazione: 231/253 mancanti (91%)
2. Cover blog schedulati: 2.578/2.814 senza cover (92%)
3. Hotel non pubblicati: 4.122/5.071 (81%)
4. 4 siti non deployati
5. API MCL Hub non configurata su 63/64 siti
6. Siti con 0 contenuti: castellammare, santamariadileuca, marzamemi, civitadibagnoreggio
📜 Changelog
Progetto creato. Snapshot completo: 68 siti (17 FULL + 46 SINGLE_DEST + SIV + 4 non deployati), 253 destinazioni (22 con cover), 5.071 hotel (949 pubblicati), 3.139 blog (324 pubblicati, 236 schedulati con cover), 950 rotte voli. Mappatura completa struttura file, schema DB, differenze tra tipologie. README tecnico generato.
2026-03-14 11:00 · claude
ℹ️ Info
Server
OVH VPS — IP 152.228.162.32
OS
Debian (kernel 6.1.0-41-cloud-amd64)
Panel
Plesk
DB
MariaDB 10.11.14
Siti totali
68 su Plesk (64 con DB attivo, 4 senza .env)
Siti regionali (FULL)
17 — SITE_TYPE=full, 10-15 destinazioni, 17 modelli Laravel, 24 tabelle DB
Siti singola destinazione
46 — SITE_TYPE=single_dest, 1 destinazione, 22 modelli Laravel (+6 extra: Attraction, Experience, Restaurant, PracticalInfo, Transfer, WeatherMonthly), 30 tabelle DB
SiciliaInVacanza (originale)
Struttura diversa: app Laravel in root (non sottocartella), document root public/ (non httpdocs/), no SITE_TYPE, DB user sicilia_db, unico con API MCL Hub + token
Struttura file siti
/var/www/vhosts/{domain}/{slug}-app/ (Laravel) + httpdocs/ (document root con index.php bootstrap)
Agoda
Account unico Site ID 1959890, API Key condivisa su tutti i siti
SSH da Base MCL
ssh -i /var/www/vhosts/mclmedia.eu/.ssh/travel_deploy_key root@152.228.162.32
Siti non deployati
basilicatainvacanza.net, franciainvacanza.it, londrainvacanza.it, toscana-invacanza.it, umbriainvacanza.net
Cron cache (su Base MCL)
cache-travel-overview.sh ogni 3h (SSH), cache-travel-blog.sh ogni 6h
VPS Travel OOM crash (marzo 2026)
257 cron paralleli causarono OOM kill; fixato con scheduler bash sequenziale, 30s timeout per sito
Prossimo step
Configurare API MCL Hub + token su tutti i siti (attualmente solo SIV), completare deploy 4 siti mancanti, cover destinazione su tutti i siti
🛠 Tech Stack
🔗 Link
📘 README
# MCL Travel Hub — Documentazione Tecnica Completa
> Ultimo aggiornamento: 14 Marzo 2026
> Autore: Luca Macaluso / Claude (sessione base.mclmedia.eu)
---
## 1. Panoramica
MCL Travel Hub è un network di siti turistici italiani costruiti su Laravel 11, ospitati su un VPS OVH dedicato. I siti coprono tutte le 20 regioni italiane + destinazioni singole (borghi, isole, località costiere).
### Numeri chiave (14/03/2026)
| Metrica | Valore |
|---|---|
| Siti deployati | 68 (di cui 64 con DB attivo, 4 senza .env) |
| Siti regionali (FULL) | 17 |
| Siti singola destinazione (SINGLE_DEST) | 46 |
| Sito originale (SiciliaInVacanza) | 1 |
| Siti non ancora deployati | 4 (basilicata, francia, londra, toscana, umbria) |
| Destinazioni totali | 253 |
| Hotel totali | 5.071 |
| Hotel pubblicati | 949 (19%) |
| Blog post totali | 3.139 |
| Blog pubblicati | 324 (10%) |
| Blog schedulati | 2.814 |
| Rotte voli | 950 |
---
## 2. Infrastruttura Server
### Server Travel
- **Provider**: OVH VPS
- **IP**: 152.228.162.32
- **OS**: Debian (kernel 6.1.0-41)
- **Panel**: Plesk
- **DB**: MariaDB 10.11.14
- **PHP**: gestito da Plesk per dominio
- **Accesso SSH da Base MCL**: `ssh -i /var/www/vhosts/mclmedia.eu/.ssh/travel_deploy_key root@152.228.162.32`
### Server Base MCL (gestionale)
- **IP**: 54.36.100.203
- **Funzione**: Gestionale centralizzato (base.mclmedia.eu), cache overview, task immagini, deploy wizard
- **DB Travel su Base**: `travel_` (tabella `sites` con `api_token` per ogni sito)
- **Cache**: `/var/www/vhosts/mclmedia.eu/base.mclmedia.eu/cache/travel-overview.json`
---
## 3. Tipologie di Sito
Esistono **3 varianti** dello stesso progetto Laravel, differenziate dal campo `.env` `SITE_TYPE`:
### 3.1 — Tipo FULL (regionale)
**Identificazione**: `SITE_TYPE="full"` nel `.env`
**Scopo**: Copre un'intera regione italiana con multiple destinazioni.
**Siti**: 17 (abruzzo, calabria, campania, emiliaromagna, friuli, lazio, liguria, lombardia, marche, molise, piemonte, puglia, sardegna, sicilia*, trentino, valledaosta, veneto)
> *SiciliaInVacanza è il progetto originale con struttura file leggermente diversa (vedi sezione 3.3)
**Struttura file**:
```
/var/www/vhosts/{domain}/
├── {slug}-app/ ← App Laravel completa
│ ├── .env ← Configurazione
│ ├── app/Models/ ← 17 modelli
│ ├── artisan
│ ├── bootstrap/
│ ├── config/
│ ├── database/migrations/
│ ├── public/ ← (non usato direttamente)
│ ├── resources/
│ ├── routes/
│ ├── storage/
│ └── vendor/
├── httpdocs/ ← Document root Plesk
│ ├── index.php ← Bootstrap Laravel (punta a {slug}-app/)
│ ├── css/
│ ├── js/
│ ├── images/
│ ├── favicon.ico
│ ├── robots.txt
│ └── storage/ ← Symlink a {slug}-app/storage/app/public
└── logs/
```
**Modelli Laravel** (17):
AiContentJob, Airport, ApiConfig, BlogPost, ClickTracking, Destination, EditorialPlan, FlightDeal, FlightRoute, Hotel, HotelDeal, ImageTask, Page, SearchLog, Setting, User
**Tabelle DB** (24):
ai_content_jobs, airports, api_configs, blog_posts, cache, cache_locks, click_trackings, destinations, editorial_plans, failed_jobs, flight_deals, flight_routes, hotel_deals, hotels, image_tasks, job_batches, jobs, migrations, pages, password_reset_tokens, search_logs, sessions, settings, users
**Caratteristiche**:
- 10-15 destinazioni per regione
- Centinaia di hotel (fino a 423 per campania)
- 80-120 blog post
- Rotte voli regionali (0-60)
- Sezione "Dove Dormire" con filtro per destinazione
### 3.2 — Tipo SINGLE_DEST (singola destinazione)
**Identificazione**: `SITE_TYPE=single_dest` nel `.env`
**Scopo**: Dedicato a una singola località turistica (borgo, isola, città d'arte).
**Siti**: 46 (alberobello, amalfi, bellaria, caorle, capovaticano, capri, castellammare, cefalu, civitadibagnoreggio, cortina, favignana, gaeta, gallipoli, ischia, lamaddalena, lampedusa, limonesulgarda, maratea, marzamemi, matera, monopoli, montalcino, ortisei, orvieto, ostuni, otranto, pantelleria, peschici, pienza, polignano, ponza, portocesareo, positano, procida, ravello, santamariadileuca, santeodoro, sanvitolocapo, sorrento, sperlonga, stintino, taormina, tropea, vasto, vieste, villasimius)
**Struttura file**: Identica al tipo FULL (`{slug}-app/` + `httpdocs/`)
**Modelli Laravel aggiuntivi** (rispetto a FULL): +6 modelli
Attraction, Experience, PracticalInfo, Restaurant, Transfer, WeatherMonthly
**Tabelle DB aggiuntive** (rispetto a FULL): +5 tabelle
attractions, experiences, practical_info, restaurants, transfers, weather_monthly
**Caratteristiche**:
- 1 sola destinazione
- ~10 hotel (pre-caricati)
- 30-43 blog post
- Rotte voli verso la destinazione (3-13)
- Contenuti extra: attrazioni, esperienze, ristoranti, info pratiche, transfer, meteo mensile
- Sezione "Dove Dormire" senza filtro destinazione
### 3.3 — SiciliaInVacanza.net (progetto originale)
**Identificazione**: Nessun `SITE_TYPE` nel `.env`, `APP_NAME=Laravel`
**Differenze strutturali**:
```
/var/www/vhosts/siciliainvacanza.net/
├── .env ← Nella ROOT (non in sottocartella)
├── app/Models/ ← Direttamente nella root
├── artisan
├── public/ ← Document root (non httpdocs)
│ ├── index.php
│ ├── css/, js/, images/
│ ├── inspector.php ← Tool diagnostico (da rimuovere in prod)
│ └── google*.html ← Verifica Google
├── resources/
├── routes/
├── storage/
└── vendor/
```
**Note**:
- È il progetto da cui derivano tutti gli altri
- La struttura file è diversa: app Laravel direttamente nella root del vhost, non in sottocartella
- Il document root è `public/`, non `httpdocs/`
- Non ha le variabili `SITE_*` nel `.env`
- Stessi modelli del tipo FULL (nessun modello extra single_dest)
- Ha un DB user dedicato (`sicilia_db`) invece del pattern `{slug}`
- Unico sito con API MCL Hub funzionante e token configurato
- 12 destinazioni, tutte con cover (unico sito completo)
- 92 hotel pubblicati su 270
---
## 4. Configurazione .env
### Variabili comuni a tutti i siti
```env
APP_NAME="Nome In Vacanza"
APP_ENV=production
APP_KEY=base64:...
APP_DEBUG=false
APP_URL=https://{domain}
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE={slug senza trattini}
DB_USERNAME={slug o user dedicato}
DB_PASSWORD={password unica}
AGODA_SITE_ID=1959890
AGODA_API_KEY=2a36bffa-9349-4a80-a20b-891243c0c0d4
AGODA_ENDPOINT=http://affiliateapi7643.agoda.com/affiliateservice/lt_v1
AGODA_CACHE_TTL=3600
AGODA_TIMEOUT=15
```
> **Nota**: AGODA_SITE_ID e AGODA_API_KEY sono identici per tutti i siti (account MCL Media unico).
### Variabili specifiche SITE_* (solo siti deployati, non SIV)
```env
SITE_NAME="Nome In Vacanza"
SITE_DOMAIN="{domain}"
SITE_REGION="{regione}"
SITE_REGION_ADJ="{aggettivo regionale}"
SITE_REGION_IN="{in + regione}"
SITE_TAGLINE="{tagline breve}"
SITE_DESCRIPTION="{meta description}"
SITE_FOOTER_TEXT="{testo footer}"
SITE_NEWSLETTER_CTA="{CTA newsletter}"
SITE_HERO_TITLE="{titolo hero}"
SITE_HERO_SUBTITLE="{sottotitolo hero}"
SITE_OG_NAME="{nome per Open Graph}"
SITE_TYPE="full" | "single_dest"
```
---
## 5. Database Schema
### Tabelle condivise (FULL + SINGLE_DEST)
| Tabella | Descrizione | Campi chiave |
|---|---|---|
| `destinations` | Destinazioni/località del sito | name, slug, cover_image, og_image, agoda_city_id, latitude, longitude, accommodation_* |
| `hotels` | Hotel da Agoda | agoda_hotel_id, destination_id, name, star_rating, review_score, daily_rate, published_at, enriched_at |
| `blog_posts` | Articoli blog | title, slug, status (published/scheduled/draft), cover_image, scheduled_at, destination_id |
| `flight_routes` | Rotte aeree | (dettagli rotta) |
| `flight_deals` | Offerte voli | (prezzi e date) |
| `hotel_deals` | Offerte hotel | (prezzi speciali) |
| `image_tasks` | Task immagini per il grafico | target_id, type (cover_blog/cover_dest/inline_content), status, image_url |
| `pages` | Pagine statiche | (contenuti CMS) |
| `airports` | Aeroporti di riferimento | (codice, nome, coordinate) |
| `editorial_plans` | Piani editoriali AI | (pianificazione contenuti) |
| `ai_content_jobs` | Job generazione contenuti AI | (stato, parametri) |
| `click_trackings` | Tracking click affiliati | (dominio, URL, timestamp) |
| `search_logs` | Log ricerche utenti | (query, risultati) |
| `settings` | Impostazioni sito | (chiave-valore) |
| `api_configs` | Configurazioni API esterne | (endpoint, credenziali) |
### Tabelle solo SINGLE_DEST
| Tabella | Descrizione |
|---|---|
| `attractions` | Attrazioni turistiche della destinazione |
| `experiences` | Esperienze e attività |
| `restaurants` | Ristoranti consigliati |
| `practical_info` | Informazioni pratiche (come arrivare, documenti, etc.) |
| `transfers` | Opzioni di transfer/trasporto |
| `weather_monthly` | Dati meteo mensili |
### Campo `published_at` negli hotel
Gli hotel NON hanno un campo `is_published` booleano. La pubblicazione è determinata dal campo `published_at`:
- `published_at IS NOT NULL` → hotel pubblicato
- `published_at IS NULL` → hotel in coda (non pubblicato)
### Campo `status` nei blog_posts
Valori possibili: `published`, `scheduled`, `draft`
### Campo `cover_image` nelle destinations
- Stringa con path immagine se presente
- `NULL` o stringa vuota se mancante
- **Stato attuale**: 231/253 destinazioni senza cover (91%)
---
## 6. Processo di Deploy
### Deploy siti regionali (da base.mclmedia.eu)
Il deploy avviene tramite il wizard in `base.mclmedia.eu/?page=deploy`:
1. **Step 0**: Seleziona dominio dalla lista `domain_pending_ns` o inserimento manuale
2. **Step 1**: Genera contenuti AI (destinazioni, descrizioni, dati JSON)
3. **Step 2**: Fetch hotel da Agoda per ogni destinazione
4. **Step 3**: Review dati con Claude (verifica fattuale)
5. **Step 4**: Deploy SSH → crea DB, rsync app, configura .env, `php artisan migrate`
### Deploy singola destinazione (da base.mclmedia.eu)
Wizard in `base.mclmedia.eu/?page=deploy-single`:
- Processo simile ma con template `single_dest`
- Genera contenuti aggiuntivi (attrazioni, esperienze, ristoranti, info pratiche)
- Fetch hotel Agoda per la singola destinazione
### Struttura httpdocs/index.php
Ogni sito ha un `index.php` in `httpdocs/` che fa bootstrap di Laravel dalla sottocartella:
```php
<?php
use Illuminate\Foundation\Application;
use Illuminate\Http\Request;
define('LARAVEL_START', microtime(true));
if (file_exists($m = '/var/www/vhosts/{domain}/{slug}-app/storage/framework/maintenance.php')) require $m;
require '/var/www/vhosts/{domain}/{slug}-app/vendor/autoload.php';
$app = require_once '/var/www/vhosts/{domain}/{slug}-app/bootstrap/app.php';
$app->handleRequest(Request::capture());
```
---
## 7. Sistema di Cache (base.mclmedia.eu)
### travel-overview.json
**Cron**: `cache-travel-overview.sh` ogni 3 ore
**Percorso**: `/var/www/vhosts/mclmedia.eu/base.mclmedia.eu/cache/travel-overview.json`
**Metodo**: SSH su server Travel → per ogni dominio Plesk:
1. Forza Laravel scheduler
2. Check SSL
3. Check sitemap.xml
4. Check logo (white + dark)
5. Query DB (hotel, destinazioni, blog, voli)
6. Conta articoli overdue
**Struttura per sito**:
```json
{
"domain": "example.it",
"slug": "example",
"ssl": {"status": "valid", "expiry": "2026-06-01", "days_left": 79},
"sitemap": {"status": "ok", "urls": 150, "lastmod": "2026-03-14"},
"logo": {"status": "complete", "white": true, "dark": true},
"hotels": {
"total": 233, "with_price": 200, "avg_score": 8.2, "avg_stars": 3.5,
"published": 10, "unpublished": 223,
"published_today": 5, "published_yesterday": 5,
"enriched": 150, "next_to_publish": "Hotel Example"
},
"destinations": {
"total": 12, "with_desc": 12, "with_cover": 0, "with_og": 0,
"with_accom": 10, "with_seo": 12,
"internal_placeholders": 0, "internal_imgs": 45,
"list": [{"name": "Pescara", "slug": "pescara", "hotels_published": 5, ...}]
},
"blog": {
"total": 96, "ready": 0, "scheduled": 92, "published": 4, "draft": 0,
"with_cover": 5, "with_seo": 90, "overdue": 0,
"next_scheduled": {"title": "...", "scheduled_at": "2026-04-01 10:00"}
},
"flights": {"total": 19, "active": 15}
}
```
### travel-blog-articles.json
**Cron**: `cache-travel-blog.sh` ogni 6 ore
**Contenuto**: Tutti gli articoli blog per sito con status immagini (cover + inline)
---
## 8. API MCL Hub
Ogni sito Laravel espone endpoint API sotto `/api/mclhub/`:
| Endpoint | Descrizione |
|---|---|
| `GET /api/mclhub/stats` | Statistiche complete (hotel, blog, destinazioni, pagine) |
| `GET /api/mclhub/health` | Health check (PHP, Laravel, cron, disk, alerts) |
| `GET /api/mclhub/analytics` | Proiezioni (completamento hotel, fine drip blog) |
**Autenticazione**: `Authorization: Bearer {api_token}`
I token sono salvati nella tabella `sites` del database `travel_` su base.mclmedia.eu.
**Stato attuale**: Solo SiciliaInVacanza ha il token configurato e l'API funzionante. Gli altri 63 siti non hanno token → l'API non è accessibile → i dati vengono dalla cache SSH.
---
## 9. Gestione Immagini
Le immagini per i siti Travel vengono gestite tramite il sistema `image_tasks`:
- **Tabella `image_tasks` su ogni sito**: contiene i task immagine con `target_id`, `type`, `status`, `image_url`
- **Tipi**: `cover_blog`, `cover_dest`, `inline_content`, `og_image`, `hero`
- **Workflow**: Il cron su base.mclmedia.eu genera i task → Salvina li vede nella dashboard Grafico → carica l'immagine → status diventa `approved`
- **Cache**: `cache/grafico-data.json` su base.mclmedia.eu aggrega i task da tutti i siti
---
## 10. Criticità e Stato Attuale
### Cover Destinazione
- **231/253 mancanti (91%)**
- Solo siciliainvacanza.net (12/12) e venetoinvacanza.it (10/10) hanno cover
- Tutti gli altri 62 siti hanno 0 cover sulle destinazioni
### Cover Blog
- **2.578/2.814 schedulati senza cover (92%)**
- Solo 236 blog schedulati hanno una cover image
- Siti con più cover blog: sorrentoinvacanza (29), villasimiusinvacanza (29), vastoinvacanza (26), sperlongainvacanza (24), stintinoinvacanza (24), sanvitolocapoinvacanza (24), viesteinvacanza (24), santeodoroinvacanza (22)
### Hotel non pubblicati
- **4.122/5.071 non pubblicati (81%)**
- La pubblicazione è progressiva (cron pubblica N hotel/giorno)
- SiciliaInVacanza il più avanzato: 92/270 pubblicati
### Siti incompleti
- **castellammaredelgolfoinvacanza.it**: 0 hotel pubblicati, 0 blog
- **santamariadileucainvacanza.it**: 0 hotel, 0 blog
- **marzamemiinvacanza.it**: 0 hotel totali
- **civitadibagnoregioinvacanza.it**: 0 hotel pubblicati
### Siti senza voli
- moliseinvacanza.it, trentinoinvacanza.it, valledaostainvacanza.it (regioni senza aeroporti diretti)
### Siti non deployati
- basilicatainvacanza.net, franciainvacanza.it, londrainvacanza.it, toscana-invacanza.it, umbriainvacanza.net
- Presenti su Plesk ma senza .env / DB configurato
### API MCL Hub
- Token API configurato solo su SiciliaInVacanza
- Gli altri 63 siti non hanno token → dashboard "Progetto Travel" usa solo dati cache per questi siti
---
## 11. Monetizzazione
### Agoda (affiliazione hotel)
- **Account unico**: Site ID 1959890
- **API Key**: condivisa su tutti i siti
- **Modello**: CPA su prenotazioni hotel tramite link affiliato
- **City ID**: ogni destinazione ha un `agoda_city_id` per il fetch hotel
- **Gestione**: pagina `base.mclmedia.eu/?page=travel/agoda-cities`
### Worldfilia / Amazon Associates
- Gestiti separatamente tramite gestionali dedicati (gestionale-wf.mclmedia.eu, gestionale-amazon.mclmedia.eu)
- NON integrati nei siti Travel
---
## 12. Cron Jobs
### Sul server Travel (152.228.162.32)
- Laravel scheduler per ogni sito (pubblicazione hotel, blog, sync Agoda)
- Gestito via Plesk crontab
### Su base.mclmedia.eu (54.36.100.203)
- `cache-travel-overview.sh` — ogni 3h: cache dati tutti i siti via SSH
- `cache-travel-blog.sh` — ogni 6h: cache articoli blog con status immagini
- `travel-blog-collector.php` — raccolta articoli blog
- `cache-grafico.php` — cache task immagini per dashboard Salvina
- `generate-internal-img-tasks.php` — genera task immagini automatici
---
## 13. Riferimenti
| Risorsa | URL |
|---|---|
| Gestionale Base | https://base.mclmedia.eu |
| Progetto Travel (overview) | https://base.mclmedia.eu/?page=travel/overview |
| Deploy regionale | https://base.mclmedia.eu/?page=deploy |
| Deploy singola dest | https://base.mclmedia.eu/?page=deploy-single |
| Sviluppo Hub | https://sviluppo.mclmedia.eu/?p=travel-hub |
| SiciliaInVacanza | https://siciliainvacanza.net |
| Server Travel SSH | `ssh -i ~/.ssh/travel_deploy_key root@152.228.162.32` |
⚠️ Zona Pericolosa
clicca per espandere