Site permettant de consulter la collection de mémoire de PostERG
  • PHP 53.7%
  • CSS 30.8%
  • Hack 7.8%
  • Python 5.6%
  • Shell 2.1%
Find a file
2026-05-19 00:09:15 +02:00
app feat: file browser + relink for orphaned files + htmx fix + header cleanup + fix relinked FilePond integration + resolve acces.php conflict markers 2026-05-19 00:08:06 +02:00
deploy feat(backup): deploy cron-based SQLite backups to production 2026-05-19 00:08:06 +02:00
docs feat: implement SQLite backup & data integrity plan (Phases 2-4) 2026-05-19 00:08:06 +02:00
nginx Refactor HTMX fragment architecture: DRY split into auth endpoints + shared templates 2026-05-19 00:08:06 +02:00
scripts add syntaqlite SQL validation to migrate.sh before applying schema.sql 2026-05-19 00:08:06 +02:00
.gitignore .gitignore ignore rate_limit and theses and logs. 2026-05-19 00:08:06 +02:00
.ignore refactor: unify FilePond edit previews + clean upload UI and shared fragments 2026-05-19 00:08:06 +02:00
.php-cs-fixer.cache Fix migrations and deploy issues + errors + linting 2026-05-08 22:58:05 +02:00
.php-cs-fixer.dist.php Replace Psalm with PHPStan + PHP‑CS‑Fixer + Biome, add linting configs & cleanup 2026-05-05 11:04:52 +02:00
biome.json Fix migrations and deploy issues + errors + linting 2026-05-08 22:58:05 +02:00
error.log refactor: unify FilePond edit previews + clean upload UI and shared fragments 2026-05-19 00:08:06 +02:00
justfile fix: track vendor JS files, add 'unsafe-inline' to public CSP, gitignore filepond tmp 2026-05-19 00:08:06 +02:00
phpstan-baseline.neon Replace Psalm with PHPStan + PHP‑CS‑Fixer + Biome, add linting configs & cleanup 2026-05-05 11:04:52 +02:00
phpstan.neon Replace Psalm with PHPStan + PHP‑CS‑Fixer + Biome, add linting configs & cleanup 2026-05-05 11:04:52 +02:00
README.md rename posterg → xamxam throughout: nginx conf, scripts, PHP source, docs 2026-05-05 11:04:52 +02:00
TODO.md cleanup: squash commit history from 177 to 98 commits, resolve acces.php conflict markers 2026-05-19 00:09:15 +02:00

XAMXAM

(Anciennement Posterg)

Répertoire des travaux de fin d'études de l'ERG (É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

  1. Faire un changement dans ton IDE
  2. Démarrer le site via MAMP, en sélectionnant le dossier public
  3. Vérifier que ça marche sur le site en local, depuis ton navigateur
  4. Une fois qu'un changement spécifique est fait, commit les changements sur les fichiers qui sont relatif à ce changement
  5. Vérifier que vous avez syncroniser avec le remotepull + rebase ! pas merge
  6. push les changements vers le remote
just serve   # http://localhost:8000  (public) and /admin/

Deployment

Files are pushed to the server with rsync — there is no repo on the remote.

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

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:

just deploy
just deploy-nginx

Admin users (htpasswd)

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