# XAMXAM (Anciennement *[Posterg](https://wiki.erg.be/m/#Posterg))* Répertoire des travaux de fin d'études de l'[ERG](https://erg.be) (École de Recherche Graphique). ## Requirements - PHP 8.4 - SQLite3 (`php8.4-sqlite3`) - nginx (production) ## Development ### MacOS Logiciels: - un IDE pour éditer → VSCode - git (ou une interface graphique) pour partager les modifications → git-gui (officiel) ou Github Desktop - un server web avec PHP pour visualiser le project dans le navigateur → MAMP ### Workflow 0. Faire un changement dans ton IDE 1. Démarrer le site via MAMP, en sélectionnant le dossier `public` 2. Vérifier que ça marche sur le site en local, depuis ton navigateur 3. Une fois qu'un changement spécifique est fait, `commit` les changements sur les fichiers qui sont relatif à ce changement 4. Vérifier que vous avez syncroniser avec le `remote` → `pull` + `rebase` ! pas merge 5. `push` les changements vers le remote ```bash just serve # http://localhost:8000 (public) and /admin/ ``` ## Deployment Files are pushed to the server with rsync — there is no repo on the remote. ```bash just deploy # rsync app files → xamxam:/var/www/xamxam/ just deploy-db # push local xamxam.db → remote (only if remote DB is absent) ``` `deploy-db` refuses to run if a database already exists on the server, to avoid accidental overwrites of production data. ### First-time server setup ```bash ssh xamxam sudo mkdir -p /var/www/xamxam sudo chown www-data:xamxam /var/www/xamxam sudo chmod 775 /var/www/xamxam exit ``` Then deploy once and apply nginx config: ```bash just deploy just deploy-nginx ``` ### Admin users (htpasswd) ```bash just manage-admin-users # Then on server: ssh xamxam "sudo bash /tmp/manage-admin-users.sh" ``` ## Security notes - Admin panel protected by nginx `auth_basic` + PHP session (`AdminAuth`) - Uploads stored outside webroot, served via controlled `media.php` - Rate limiting on public search (`src/RateLimit.php`) - See `nginx/docs/SECURITY_HEADERS.md` for security headers reference