# @bg_perspective

Il canale di giochi da tavolo di Paolo (Instagram, Threads, Facebook) e il suo sito, **bg-perspective.it**.
Foto dei giochi giocati davvero dal suo gruppo, un carosello per gioco, una scheda permanente sul sito in cinque
lingue. Si lavora in italiano.

**Prima di tutto si legge la memoria** (`~/.claude/projects/-Users-paolo-Server-Siti-Web--private-BG-Perspective/memory/`,
indice `MEMORY.md`, copia in `memoria/`), a partire da `stato-scaletta-e-coda.md`: lì ci sono stato, regole e
preferenze di Paolo. Una scheda vecchia non è un modello.

## Dove sta cosa

- Il progetto sta sul NAS, in `~/Server/Siti Web/_private/BG-Perspective/` (share SMB `web`, dal 29/9/2026). Se il
  NAS non è montato non funziona niente: prima si rimonta. Il venv e `node_modules` sono locali al NAS e si rifanno
  con `python3 -m venv` e `npm ci` se si rompono.

- `_instagram/schede/`: una scheda per gioco (dati verificati, come funziona, didascalie). `_instagram/README.md`
  descrive la struttura.
- `_instagram/codice/`: `slide.py` (caroselli, dizionario `POST`), `storia.py` (storie), `unboxing.py` (copertine
  dei reel), `festa.py` (storie dei traguardi), `sito.py` (pubblica sul sito), `portale.py` (dati dal portale BGG
  di Paolo), `blob.py`, `scontorna.py`, `follow_registra.py`, `gestionale.py` e `gestionale_import.py`. Il venv è in `_instagram/codice/.venv/`.
- `_instagram/dati/`: `bgp.sqlite`, cache del portale, CSV di handle ed editori, `follow_reciproci.json`.
- `_instagram/sito/`: il sito SvelteKit + Turso su Vercel.
- `unboxing/`: i video e le foto delle copertine dei reel di unboxing (nomi `AAAA-MM-GG hhmmss - Gioco.ext`),
  **fuori da git** come l'archivio; le copertine finite escono in `_instagram/out/unboxing/`, i loghi trasparenti
  degli editori per la sovrimpressione stanno in `_instagram/loghi/`.
- `archivio/`: le foto (2,5 GB), **fuori da git**; `_archivio/`: file tolti dal progetto, con indice in `LEGGIMI.md`.
- `giochi.rtf` in radice: i vocali di Paolo dettati come testo, **sovrascritto a ogni gioco**: appena arriva si copia
  in `_instagram/schede/come_gira_paolo.md`. Non si archivia.

## Come si lavora

- **Pubblicazione**: Buffer (MCP) sui tre canali, poi `sito.py pubblica`. I dettagli (id dei canali, tetto dei
  dieci post, metadata) sono in memoria, `pipeline-pubblicazione.md`.
- **Salvataggio**: `./salva.sh "messaggio"` copia la memoria in `memoria/`, committa e fa push. Commit e deploy li
  fa Claude, non Paolo.
- **Mail, DM, commenti, moduli** agli editori: Claude scrive, **Paolo invia**, salvo che dica lui di mandarlo.
- **Editori, autori, illustratori, giochi e contatti stanno nel gestionale** (dal 29/9/2026; il foglio Google è
  archiviato): pagine su bg-perspective.it/gestionale (un account per Paolo e uno per Valentina), API su
  /api/gestionale (guida con GET senza chiave), da qui `codice/gestionale.py` (ricontatti, editore, stato, contatto, follow…). Pagina Follow: lo scambio settimanale dei ricambiati con Valentina.
  Ogni messaggio mandato o ricevuto va nella cronologia dell'editore, con stato e data di ricontatto. Credenziali in
  `sito/.env.gestionale`, mai stampate. Guide per Valentina e il suo Claude in `_instagram/gestionale-*.md`.

## Trappole

- Sul NAS i nomi con lettere accentate si aprono solo nella forma NFD (lettera + accento separato): `Valparaíso`
  scritto a mano, in NFC, dà "file non trovato". Si passa dall'elenco della cartella (`os.listdir`, `ls`) o si
  normalizza con `unicodedata.normalize('NFD', percorso)`. Per git lo stesso: nessun file tracciato con accenti
  nel nome (per questo la scheda è `Cafe.md`).
- Mai un segreto in linea di comando con `subprocess(check=True)`: in caso di errore lo stampa.
- Mai id BGG o handle tirati a memoria: si verificano sempre alla fonte.
- Nei testi niente em-dash né formule da IA: skill `scrivere-come-paolo`.
