# Petits Pas & Merveilles

Site vitrine pour **Petits Pas & Merveilles** — packs d'activités PDF pour enfants.

Stack : [Eleventy (11ty)](https://www.11ty.dev/) pour les templates + HTML/CSS/JS statique + [Decap CMS](https://decapcms.org/) pour l'admin.

## Structure du projet

```
petits-pas-et-merveilles/
├── admin/                      # Mon espace packs (Decap CMS)
│   ├── index.html
│   ├── config.yml
│   ├── admin.css
│   ├── ACCUEIL.md              # Guide cliente
│   └── GITLAB-SETUP.md         # Config OAuth GitLab
├── src/
│   ├── _data/
│   │   ├── site.json           # Config globale (nav, email, âges, thèmes)
│   │   ├── packs.js            # Agrège src/_data/pack-items/*.json
│   │   └── pack-items/         # 1 fichier JSON par pack
│   ├── _includes/
│   ├── index.njk
│   └── pages/
├── assets/
│   ├── images/packs/           # Vignettes catalogue
│   └── pdfs/                   # PDF téléchargeables
├── scripts/
│   ├── validate-packs.js
│   ├── pack-normalize.js
│   └── pdf/                    # Génération PDF (outil développeur)
├── _site/                      # Site généré (ne pas éditer à la main)
└── .eleventy.js
```

## Commandes

```bash
npm install
npm run build         # Valide + test + génère _site/
npm run dev           # Serveur local avec rechargement
npm run validate      # Vérifie les packs
npm run generate:pdfs # Génère les PDF depuis scripts/pdf/ (développeur)
```

Ouvrir [http://localhost:8080](http://localhost:8080) après `npm run dev`.  
Admin local : [http://localhost:8080/admin/](http://localhost:8080/admin/)

## Mon espace packs (admin cliente)

URL : `/admin/` — marque-page **Mon espace packs** (non linké depuis le site public).

| Action | Procédure |
|---|---|
| Se connecter | Se connecter → email + mot de passe GitLab |
| Ajouter un pack | Nouveau pack → vignette + PDF → Visible sur le site → Mettre en ligne |
| Modifier un pack | Ouvrir le pack → Mettre en ligne |
| Ajouter un prix | Ouvrir le pack → Prix (optionnel) → Mettre en ligne |
| Désactiver | Visible sur le site OFF → Mettre en ligne |
| Réactiver | Visible sur le site ON → Mettre en ligne |

Après chaque mise en ligne Decap, le site public se met à jour **sous 24 h** après déploiement manuel.

Guides :
- [`admin/ACCUEIL.md`](admin/ACCUEIL.md) — fiche cliente
- [`admin/GITLAB-SETUP.md`](admin/GITLAB-SETUP.md) — configuration OAuth GitLab

## Données des packs

| Élément | Fichier source |
|---|---|
| Métadonnées pack | `src/_data/pack-items/{slug}.json` |
| Agrégation Eleventy | `src/_data/packs.js` |
| Vignette | `assets/images/packs/` |
| PDF | `assets/pdfs/` |
| Fiches produit | Générées depuis `pack.njk` (packs publiés uniquement) |

Statuts :
- `published` — visible sur le site
- `draft` — brouillon (validation allégée)
- `archived` — masqué du site, données conservées

### Ajouter un pack (développeur)

1. `npm run generate:pdfs` si le PDF est produit via `scripts/pdf/packs/`
2. Ou déposer le PDF dans `assets/pdfs/{slug}.pdf`
3. Créer `src/_data/pack-items/{slug}.json` avec `"status": "published"` et `"pdf": "{slug}.pdf"`
4. `npm run build`

Via l'admin Decap, la cliente uploade vignette + PDF directement.

## Déploiement

```bash
git pull origin main
npm run build
# uploader _site/ sur le serveur Apache (inclut admin/ et assets/pdfs/)
```

Le [`.htaccess`](.htaccess) sert le site depuis `_site/` sur le domaine dédié :

- `https://petitspasetmerveilles.ddnsfree.com/` → `_site/index.html`
- `https://petitspasetmerveilles.ddnsfree.com/admin/` → `_site/admin/`
- etc.

**Prérequis Apache :** `mod_rewrite` activé, `AllowOverride All` sur le virtual host HTTPS.

Avant le déploiement, mettre à jour `url` dans `src/_data/site.json`.

Configurer l'OAuth GitLab (voir `admin/GITLAB-SETUP.md`) et remplacer `VOTRE_APPLICATION_ID` dans `admin/config.yml`.

## Conventions CSS

- Tokens dans `assets/css/base/tokens.css`
- BEM léger : `.pack-card`, `.btn--primary`
- Mobile-first

## Phase 2

- GitLab CI : build + deploy automatique
- Paiement / téléchargement (Gumroad, Stripe…)
- Backend formulaire contact
