# Avvio locale — Krèios Guida per avviare l'ambiente completo di sviluppo: **configuratore 3D**, **backoffice Laravel** (API + pannello admin) e **app cliente** per i preventivi. ## Panoramica | Componente | Cartella | Stack | Porta | URL dev | |---|---|---|---|---| | Configuratore 3D | `.` (root del repo) | Vite 6 + Three.js + jQuery | **5173** | | | Backoffice (API + admin) | `backoffice/` | Laravel 13 + Filament 3 + MySQL | **8000** | , admin su | | App cliente preventivi | `backoffice/cliente/` | Vue 3 + Vite | **5199** | | Le tre porte sono **fisse** (`strictPort: true` nei vari `vite.config.js` / `serve --port`): se una porta è già occupata l'avvio fallisce con un errore esplicito invece di spostarsi silenziosamente su un'altra. **Come si collegano:** - Il configuratore chiama l'API Laravel per il carrello (`POST /api/carrello/aggiungi`, ecc.). - L'URL dell'app cliente **non è hardcoded** nel configuratore: all'avvio chiama `GET /api/config` e usa il `frontend_cliente_url` restituito da Laravel (letto da `APP_FRONTEND_CLIENTE_URL` nel `.env` del backoffice). - Il flusso completo è descritto in [PREVENTIVI_BACKOFFICE.md](PREVENTIVI_BACKOFFICE.md). ## Requisiti | Strumento | Versione minima | Note | |---|---|---| | Node.js | 20+ | per i tre front (Vite) | | pnpm | 8+ | package manager della root e dell'app cliente (`pnpm-lock.yaml` è il lockfile di riferimento) — `npm i -g pnpm` o `corepack enable` | | PHP | 8.3+ | richiesta da `composer.json` (`"php": "^8.3"`) | | Composer | 2+ | dipendenze Laravel | | MySQL | 8 | host `127.0.0.1`, user `root`, **nessuna password** | | Python 3 | 3.10+ | **opzionale**: solo per rigenerare i listini PVC | ## 1) Backoffice Laravel (API + admin) — porta 8000 ```bash cd backoffice composer install ``` ### Database Creare il database (una volta sola): ```sql CREATE DATABASE kreios_preventivi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### `.env` Il backoffice ignora il suo `.env` in git: in un clone fresco va creato: ```bash cp .env.example .env php artisan key:generate ``` Poi impostare le variabili di sviluppo (in questo repo il `.env` è già configurato così): ```ini DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=kreios_preventivi DB_USERNAME=root DB_PASSWORD= APP_URL=http://localhost:8000 APP_FRONTEND_CLIENTE_URL=http://localhost:5199 ADMIN_NOTIFY_EMAIL=tua-email@example.com MAIL_MAILER=log ``` | Variabile | Descrizione | |---|---| | `APP_URL` | Base URL del backoffice | | `APP_FRONTEND_CLIENTE_URL` | URL dell'app cliente — restituito al configuratore da `GET /api/config` | | `ADMIN_NOTIFY_EMAIL` | Email che riceve la notifica di nuovo preventivo | | `CONFIGURATOR_SESSION_DAYS` | Durata (giorni) della sessione di login del configuratore | | `MAIL_MAILER` | `log` in dev: le email finiscono in `storage/logs/laravel.log` (incluso il PDF allegato) | ### Migrations, seed e asset ```bash php artisan migrate --seed # crea le tabelle + l'utente admin php artisan storage:link npm install # asset Vite del pannello (nessun lockfile; .npmrc ha ignore-scripts=true) ``` ### Avvio ```bash php artisan serve --port=8000 ``` - API: - Pannello admin: - Email: `admin@kreiosinfissi.it` — Password: `password` (seed di default) - Le email di conferma preventivo sono inviate **in modo sincrono** (`Mail::send`): in dev non serve avviare `queue:listen`. > Alternativa: `composer dev` avvia in parallelo server, queue, log (`pail`) e Vite. ## 2) App cliente (Vue) — porta 5199 ```bash cd backoffice/cliente pnpm install pnpm dev ``` `.env` già presente in repo con il default corretto per lo sviluppo: `VITE_API_BASE=http://localhost:8000/api`. ## 3) Configuratore 3D — porta 5173 ```bash pnpm install pnpm dev ``` - Il server parte su `0.0.0.0:5173` (vedi `vite.config.js`). - L'entry point **richiede due parametri obbligatori** nella query string: ``` http://localhost:5173/?sistema=pvc&type=finestra_2_ante ``` - `sistema`: `pvc` | `alluminio` | `legno` | `acciaio` - `type`: id modello valido per quel sistema (elenco completo in [URL_PARAMS.md](URL_PARAMS.md)) Senza i due parametri l'app lancia un errore in fase di avvio. - In produzione il configuratore gira dentro un `