Files
xamxam/README.md
Théophile Gervreau-Mercier 7e26351f4b refactor: remove test.db, use only posterg.db for all environments
- Simplified Database.php determineDatabasePath to always use posterg.db
- Removed test.db auto-detection based on php_sapi_name
- Removed test.db targets from justfile (migrate-test removed)
- Removed CreateTestDatabase.php fixture script
- Updated migrate.sh to only init posterg.db
- Updated setup-dev.sh to init posterg.db
- Updated run-tests.php (removed DB_ENV=test env var)
- Updated deploy-db to use posterg.db
- Removed test.db file

refactor: remove empty fixtures directory
2026-04-27 18:07:20 +02:00

88 lines
2.3 KiB
Markdown

# 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
```bash
just setup # first-time: installs dev dependencies
just serve # http://localhost:8000 (public) and /admin/
just test # run test suite
```
Admin credentials in development are set via `config/admin_credentials.php`
(see `config/admin_credentials.example.php`).
## Deployment
Files are pushed to the server with rsync — there is no repo on the remote.
```bash
just deploy # rsync app files → posterg:/var/www/posterg/
just deploy-db # push local posterg.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 posterg
sudo mkdir -p /var/www/posterg
sudo chown www-data:posterg /var/www/posterg
sudo chmod 775 /var/www/posterg
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 posterg "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
## Mise en place Dev
### 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