# VRP - Acronimi e glossario

Sigle e termini usati nella piattaforma e nei documenti. In ASCII puro
(accenti con l'apostrofo). Documento vivo: si aggiorna quando ne nasce uno nuovo.

---

## 1. Prefissi di servizio (`vr?`)

Ogni sigla di tre lettere dice a quale servizio appartiene un file/funzione.

| sigla | servizio | cos'e' |
|-------|----------|--------|
| `vrp` | **V**itt**R**os **P**latform | lo strato condiviso (questo Lab): boot, config, log, db, utility |
| `vrv` | **V**itt**R**os **V**iaggi | il diario di viaggio (l'app principale) |
| `vrs` | **V**itt**R**os **S**hare | condivisione / share (`/srv/http/share`); accesso login+WAN |
| `vrw` | **V**itt**R**os **W**izard | wiz_foto: importa foto in leNostre (gia' LAN-only) |
| `vrn` | leNostre | archivio foto e ricerca (la N di "**n**ostre") |

Regola: `vrp_*` sta nella piattaforma (comune a tutti); `vrv/vrs/vrw/vrn_*` e'
specifico del servizio.

Nota: "Sera" NON e' un servizio: e' una **categoria di post dentro il VRV**
(cosi' Elena non si confonde). Percio' `vrs` e' libero e va a **Share**.

---

## 2. Separatore = dipende dal linguaggio

Il trattino `-` non e' valido negli identificatori PHP/JS (`$vrp-x` = sottrazione).
Quindi il separatore cambia a seconda di dove scrivi la sigla:

| artefatto | regola | esempio |
|-----------|--------|---------|
| file PHP | underscore | `vrp_db.php`, `vrp_defines.php` |
| file CSS/JS | trattino | `vrp-lab.css` |
| funzioni / variabili PHP | underscore | `vrp_log_info()`, `$vrp_env` |
| costanti | UPPER_SNAKE | `VRP_BASE_URL`, `VRP_DB_CREDS` |
| classi / id CSS | trattino | `.vrp-cfg-row`, `.vrp-nav` |

---

## 3. Costanti di piattaforma (`VRP_*`)

Tutte definite in un posto solo: il manifesto `platform/boot/vrp_defines.php`
(letto da `env.json`). Niente guardie: se una manca, si aggiunge li'.

| costante | significato |
|----------|-------------|
| `VRP_BOOT_DIR` / `VRP_PLATFORM_DIR` / `VRP_LIB_DIR` / `VRP_PAGES_DIR` | percorsi interni |
| `VRP_CONFIG_FILE` | il file `env.json` |
| `VRP_APP_NAME` / `VRP_CHANNEL` / `VRP_HOST` | identita' dell'istanza |
| `VRP_BASE_URL` | prefisso URL (con slash finale) |
| `VRP_DEBUG` | mostra errori dettagliati si/no |
| `VRP_TZ` | fuso orario |
| `VRP_LOG_LEVEL` / `VRP_LOG_FILE` | soglia e file del log |
| `VRP_SHARED_DIR` / `VRP_MEDIA_ROOT` / `VRP_MEDIA_URL` | storage condiviso e archivio foto |
| `VRP_DB_CREDS` | registro DB: nome -> file delle credenziali |

---

## 4. File e concetti chiave

| termine | cos'e' |
|---------|--------|
| **3_2_1_Go.php** | l'avvio UNICO dell'app (il "loader"). NON si chiama "bootstrap" |
| **bootstrap** | al massimo indica un framework HTTP: MAI il nostro avvio |
| **env.json** | la configurazione (JSON). NON si usa `config.php` (relitto) |
| **vrp_defines.php** | manifesto: legge env.json e definisce le costanti `VRP_*` |
| **FC (front controller)** | `public/index.php`: unica porta web, smista alle pagine (`?p=nome`) |
| **vista / pagina** | i file in `platform/pages/`: corpo della pagina, inclusi SOLO dal FC |
| **livrea** | testata + navigazione + fondo comuni, messi dal FC (`vrp-lab.css`) |
| **manifesto** | il file con TUTTE le define in un posto solo |
| **fail-loud** | se qualcosa non va, si ferma e lo dice (invece di tirare avanti zitto) |

---

## 5. Canali (`channel`)

Il campo `channel` in env.json dice che ruolo ha l'istanza:

| canale | uso |
|--------|-----|
| `lab`  | la culla della piattaforma (qui) |
| `dev`  | sviluppo |
| `test` | collaudo (Elena prova) |
| `prod` | produzione (in linea) |

Il ruolo vero lo danno il symlink e il `channel`, non il nome fisico della cartella.

---

## 6. Livelli di log

Ordine crescente di dettaglio; si scrive tutto cio' che ha rango <= soglia
(`VRP_LOG_LEVEL`):

    ERROR < WARN < TRACE < INFO < DEBUG

Es.: soglia `WARN` scrive ERROR+WARN; soglia `DEBUG` scrive tutto.

---

## 7. Termini di dominio

| termine | significato |
|---------|-------------|
| **leNostre** | l'archivio delle nostre foto (cartelle per anno) |
| **ANW / anw** | ramo/flag delle foto naturiste: riservate, mai pubbliche senza auth |
| **lenostre.foto** | tabella DB indice delle foto (path, lat/lon, flag anw, ~35k righe) |
| **LAN guard** | accesso ristretto alla rete di casa (127.0.0.1 + 192.168.1.0/24 + WireGuard) |
| **CSRF** | gettone anti-falsificazione richieste sui form (POST) |
| **CR** | Change Request (richiesta di modifica con ID) |

---

## 8. Fasi di rilascio (grammatica Siemens di vitti)

| fase | significato |
|------|-------------|
| **B100** | analisi |
| **B200** | disegno / architettura |
| **B300** | coding |
| **B400** | dev test |
| **B500** | rilascio (e festa) |

"Dichiariamo B500" = pronto per la produzione. I passi intermedi finti si
numerano B099, B199, ... (fake step).
