# CLAUDE.md ## Ce qu'est ce dépôt **Folio** est un moteur de blog PHP. Ce répertoire est la **copie locale du dépôt Git** (`https://git.abonnel.fr/cedricAbonnel/folio`), branche DEV. Il contient uniquement le code du moteur — pas de données, pas de credentials. ## Architecture | Répertoire local | Site distant | Rôle | |-----------------|-------------|------| | `~/Projects/folio/` | — | Copie du dépôt Folio (branche DEV). On code ici. | | `~/Projects/varlog/` | varlog.a5l.fr | Sync bidirectionnelle des articles varlog. Sert de site de test pour le moteur. | | `~/Projects/fr.abonnel.www/` | www.abonnel.fr | Sync bidirectionnelle des articles abonnel.fr. A aussi servi au déploiement initial. | **abonnel.fr** utilise Folio mais se met à jour seul via son UpdateChecker interne (vérifie `version.txt` sur Gitea). Aucune action manuelle nécessaire côté serveur. ## Articles (`data/`) Les articles ne sont pas versionnés dans ce dépôt. Ils ont leur propre git local dans chaque workspace site (`~/Projects/varlog/data/`, `~/Projects/fr.abonnel.www/data/`), synchronisé de façon bidirectionnelle avec le serveur distant. ## Modifier le moteur ### Branches | Branche | Rôle | |---------|------| | `dev` | Branche d'intégration permanente. **Tout le développement courant se fait ici.** | | `main` | Branche de production. **Jamais de commit direct.** | | `feat/*` | Branches feature optionnelles pour du travail isolé, mergées dans `dev`. | ### Workflow 1. Toujours travailler sur `dev` (ou une branche feature mergée dans `dev`) : ```bash git checkout dev ``` 2. **Tester sur varlog.a5l.fr** à chaque itération (rsync des fichiers locaux, DB persistante) : ```bash ~/Projects/varlog/scripts/sync.sh # puis tester sur http://varlog.acegrp.lan ``` 3. Quand `dev` est stable et prête pour la production : - Bumper `public/version.txt` (semver) - Ajouter une entrée `CHANGELOG.md` (`### Ajouté / Corrigé / Modifié`) - Ouvrir une **PR `dev` → `main`** sur Gitea 4. Merger la PR → abonnel.fr se met à jour automatiquement. **Règle absolue : ne jamais commiter directement sur `main`.** Le script `scripts/push.sh` bloque cette action. ### Pourquoi `dev` et non des branches feature à la volée - La DB de varlog (test) accumule les migrations au fil du temps — changer de branche ne fait pas reculer les migrations. - Travailler toujours sur `dev` évite toute désynchronisation entre le code rsyncé et la DB. ## Données articles (`DATA_PATH`) Les articles sont stockés dans un répertoire **hors du dépôt Folio**, configurable via `DATA_PATH` dans `.env` (défaut production : `/srv/data/folio`). | Environnement | Dépôt local articles | Dépôt Gitea | Serveur | |--------------|---------------------|------------|---------| | varlog | `~/Projects/varlog-data/` | `cedricAbonnel/varlog` | `varlog:/srv/data/folio` | | abonnel.fr | `~/Projects/fr.abonnel.www-data/` | `cedricAbonnel/abonnel-www` | `abonnel-wiki:/srv/data/folio` | Sync bidirectionnelle via **git** (pas rsync). Scripts dans `~/Projects/varlog/scripts/` et `~/Projects/fr.abonnel.www/scripts/` : - `pull-data.sh` : commit auto serveur + git pull local - `push-data.sh` : git commit local + git push + git pull serveur - `sync.sh` : moteur (rsync) + articles (git bidirectionnel) ## Asymétrie de déploiement moteur | Site | Mécanisme | Raison | |------|-----------|--------| | varlog (test) | rsync depuis `~/Projects/folio/` | Itération rapide, pas de contrainte de stabilité | | abonnel.fr (prod) | `git pull origin main` sur le serveur | Contrôle via PR/merge, UpdateChecker autonome | Pour initialiser git sur un serveur abonnel.fr déployé via rsync : `scripts/git-init-remote.sh` ## Ne pas mettre ici - `.env` (credentials → dans chaque workspace site) - `data/` (articles → dans chaque workspace site) - `vendor/` (non versionné)