--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CLAUDE.md Fri Sep 05 18:40:08 2025 +0200
@@ -0,0 +1,136 @@
+# CLAUDE.md
+
+This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
+
+## Project Overview
+
+This is a WordPress multisite installation for the ENMI Conference website (enmi-conf.org) running in a containerized environment. The project uses Docker Compose with Caddy as a web server, MariaDB for the database, and PHP-FPM for processing.
+
+## Architecture
+
+- **`wp/`**: Primary WordPress installation (production-like)
+- **`wordpress/`**: Secondary WordPress installation (backup/staging)
+- **`enmi12/`**: Legacy conference materials from 2012
+ - `freemind/`: Mind mapping files
+ - `glossaire/`: Glossary with graph visualization
+- **Docker services**:
+ - `web`: Caddy server (port 8080)
+ - `fpm`: PHP-FPM container
+ - `db`: MariaDB database
+ - `wpcli`: WordPress CLI (dev profile only)
+
+## Development Environment
+
+The project uses Nix for development dependencies and direnv for environment management.
+
+### Prerequisites
+- Docker and Docker Compose (or Podman Compose)
+- Nix (optional, for development shell)
+
+### Development Setup
+
+1. **Start the environment:**
+ ```bash
+ docker compose pull
+ docker compose build
+ docker compose up -d
+ ```
+
+2. **Access the site:**
+ - Local URL: http://enmi-conf.127.0.0.1.nip.io:8080
+
+### Database Operations
+
+**Import database backup:**
+```bash
+zcat ../dev/enmi-conf_db_export_2022-09-21.sql.gz | docker compose --profile=dev run -T -w "/var/www/html/wp" wpcli wp db cli
+```
+
+**Update URLs for local development:**
+```bash
+# Test URL replacement (dry run)
+docker compose --profile=dev run -w "/var/www/html/wp" wpcli wp search-replace --dry-run --network "enmi-conf.org" "enmi-conf.local:8080"
+
+# Update blog domains
+echo "update wp_blogs set domain='enmi-conf.local:8080';" | docker compose --profile=dev run -T -w "/var/www/html/wp" wpcli wp db cli
+
+# Update home and siteurl options for all sites
+echo "select path from wp_blogs;" | docker compose --profile=dev run -T -w "/var/www/html/wp" wpcli wp db cli --skip-column-names | xargs -I % docker compose --profile=dev run -T -w "/var/www/html/wp" wpcli wp --url="http://enmi-conf.local:8080%" option update home "http://enmi-conf.local:8080%/"
+
+echo "select path from wp_blogs;" | docker compose --profile=dev run -T -w "/var/www/html/wp" wpcli wp db cli --skip-column-names | xargs -I % docker compose --profile=dev run -T -w "/var/www/html/wp" wpcli wp --url="http://enmi-conf.local:8080%" option update siteurl "http://enmi-conf.local:8080%/"
+
+# Update database schema
+docker compose --profile=dev run -w "/var/www/html/wp" wpcli wp core update-db --network
+```
+
+### WordPress CLI Operations
+
+All WP-CLI commands should be run in the `/var/www/html/wp` directory:
+```bash
+docker compose --profile=dev run -w "/var/www/html/wp" wpcli wp [command]
+```
+
+### File Synchronization
+
+**Sync uploads from production:**
+```bash
+rsync -avz -h --stats -P charlie.iri.centrepompidou.fr:/shared/php-01/enmi-conf.org/wp/wp-content/uploads/ ./
+```
+
+**Sync WordPress core files (dry-run first):**
+```bash
+rsync -arvz --delete --dry-run --exclude wp-content --exclude wp-config.php ./wordpress/ ./wp/
+```
+
+## WordPress Configuration
+
+- **Database**: `wordpress_ec`
+- **DB User**: `iri`
+- **Themes**: IN-MOTION-package-u1 (parent), IN-MOTION-package-u1-child
+- **Key Plugins**:
+ - portfolio
+ - include-mastodon-feed
+ - blog-copier
+ - option-tree
+
+## Important Files
+
+- `docker-compose.yml`: Container orchestration
+- `Caddyfile`: Web server configuration
+- `wp-config.php`: WordPress configuration (root level)
+- `wp/wp-config.php`: Site-specific WordPress config
+- `fpm.Dockerfile`: PHP-FPM container build
+- `Readme`: Setup and maintenance commands
+
+## Version Control (Mercurial)
+
+This project uses Mercurial (hg) for version control.
+
+**Add files to tracking:**
+```bash
+hg add [file]
+```
+
+**Remove files from tracking:**
+```bash
+hg remove [file]
+# or to remove from tracking but keep file:
+hg forget [file]
+```
+
+**Add new files and remove deleted files automatically:**
+```bash
+hg addremove
+```
+
+**Check repository status:**
+```bash
+hg status
+```
+
+## Alternative with Podman
+
+For systems using Podman instead of Docker, replace `docker compose` with `podman-compose` and use the nip.io domain format:
+```bash
+podman-compose --profile=dev run -w "/var/www/html/wp" wpcli wp search-replace --network "enmi-conf.org" "enmi-conf.127.0.0.1.nip.io:8080"
+```
\ No newline at end of file