# 🎲 rpg-sessioni

Archivio privato di campagne RPG. Hostato su Cloudflare Pages con Cloudflare Access per autenticazione.

---

## Struttura della Repo

```
/
├── README.md
├── .gitignore
├── manifest.json               ← elenco mondi + campagne (aggiornare manualmente)
├── sessioni.html               ← hub di navigazione principale
│
├── assets/
│   └── rpg.css                 ← stili condivisi tra tutti i file
│
├── templates/                  ← file blank da copiare per nuove campagne
│   ├── mondo.html
│   ├── master.html
│   ├── storia.html
│   ├── appunti.html
│   └── galleria.html
│
└── sessioni/
    └── {slug-mondo}/           ← es. surea
        ├── mondo.html          ← descrizione del mondo (lore, mappa, fazioni globali)
        └── {slug-campagna}/    ← es. dreaming-big
            ├── meta.json       ← metadati campagna (OBBLIGATORIO)
            ├── master.html     ← manuale del narratore con segreti
            ├── storia.html     ← narrativa pubblica per i player
            ├── appunti.html    ← log sessioni del master
            ├── galleria.html   ← galleria immagini campagna
            └── img/
                ├── cover.png   ← copertina campagna (usata in sessioni.html)
                └── *.png       ← immagini della campagna
```

---

## Nomenclatura

| Elemento | Regola | Esempio |
|----------|--------|---------|
| Slug mondo | kebab-case, minuscolo | `surea`, `alto-picco` |
| Slug campagna | kebab-case, minuscolo | `dreaming-big`, `la-caduta` |
| Immagini | descrittivo, minuscolo | `tauros-overview.png`, `npc-vaelor.png` |
| `cover.png` | **sempre** questo nome | copertina usata nella hub |

---

## Aggiungere una Nuova Campagna

1. Crea la cartella: `sessioni/{slug-mondo}/{slug-campagna}/`
2. Crea `img/` dentro e aggiungi una `cover.png`
3. Copia tutti i template da `/templates/` nella cartella
4. Compila `meta.json` con i dati della campagna
5. **Aggiorna `manifest.json`** alla root aggiungendo la campagna
6. Commit e push → Cloudflare fa deploy automatico

---

## Aggiungere un Nuovo Mondo

1. Crea la cartella: `sessioni/{slug-mondo}/`
2. Copia `templates/mondo.html` dentro e personalizzalo
3. **Aggiungi il mondo a `manifest.json`**
4. Crea la prima campagna seguendo i passi sopra

---

## meta.json — Struttura

```json
{
  "nome": "Dreaming Big",
  "mondo": "Surea",
  "slug_mondo": "surea",
  "slug": "dreaming-big",
  "stato": "attiva",
  "sessione_corrente": 1,
  "data_inizio": "2025-05-25",
  "ultima_sessione": "2025-05-25",
  "descrizione": "Piccoli crimini nascondono verità enormi nelle strade di Tauros.",
  "tag": ["noir", "urbano", "investigativo"],
  "copertina": "img/cover.png",
  "immagini": [
    { "file": "img/tauros.png", "didascalia": "Vista di Tauros dal fiume" }
  ]
}
```

**Valori `stato`:** `attiva` · `pausa` · `conclusa` · `pianificata`

---

## Setup Cloudflare Pages

1. Dashboard Cloudflare → **Pages** → "Create a project" → connetti la repo GitHub privata
2. Build settings: nessun build command, output directory `/` (sito statico puro)
3. Vai su **Access** → "Add an application" → tipo "Self-hosted"
4. URL: `*.{tuo-dominio}.pages.dev` (o dominio custom)
5. Policy: aggiungi le email autorizzate (solo te + co-DM eventuali)
6. Ogni accesso richiederà un one-time code via email → nessuna password da gestire

---

## .gitignore

Vedi `.gitignore` nella root. In breve: ignora `.DS_Store`, file di sistema, e `node_modules` se mai aggiunti.

---

## Workflow Tipico

```
Nuova sessione giocata
  → apri appunti.html della campagna
  → aggiungi una nuova entry sessione
  → aggiorna meta.json (sessione_corrente, ultima_sessione)
  → commit: "Sessione 3 — I Brramm spariscono"
  → push → deploy automatico
```
