Files
xamxam/apps/public/README.md
Théophile Gervreau-Mercier 467aced734 Restructure repository and implement secure search feature
Phase 1: Consolidate shared infrastructure
- Create shared/ directory for common code
- Consolidate Database.php from front-backend and formulaire into unified shared/Database.php
  - Smart path detection for test.db vs posterg.db
  - Secure search with wildcard escaping and input validation
  - Support both singleton and direct instantiation patterns
  - Full CRUD methods for admin functionality
- Move RateLimit.php to shared/ (30 requests/min)
- Update all require paths across apps to use shared/

Phase 2: Reorganize directory structure
- Rename front-backend/ → apps/public/
- Rename formulaire/ → apps/admin/
- Rename db/ → database/
- Update all file paths for new structure
- Create root .gitignore excluding databases, cache, logs

Implement secure search feature
- Add apps/public/search.php with full-text search across theses
- Search filters: query, year, orientation, AP program, keywords
- Security features:
  - SQL injection prevention (prepared statements)
  - Wildcard injection prevention (escape % and _)
  - Input validation (max 200 chars, year range 1900-2100)
  - Rate limiting (30 req/min per IP)
  - Pagination limited to 100 results/page
  - XSS protection (htmlspecialchars on output)

Add comprehensive test suite
- Create apps/public/tests/ with proper structure
  - tests/Integration/SearchTest.php - 12 search scenarios
  - tests/Security/SecurityTest.php - vulnerability testing
  - tests/Unit/RateLimitTest.php - rate limit behavior
- Create database/fixtures/CreateTestDatabase.php
- Add apps/public/run-tests.php test runner
- All tests passing (4/4 suites)

Update deployment configuration
- Rename justfile 'sync' recipe to 'deploy'
- Create deploy group with separate deploy-public and deploy-admin
- Add test-deploy recipe for test database
- Exclude *.db, tests/, cache/, *.md from production deploy
- Deploy shared/ to both public and admin locations

Stats: +4482 insertions, -654 deletions across 72 files
2026-02-02 18:53:58 +01:00

1.1 KiB

PostERG - Site web public

Site web affichant publiquement les mémoires et travaux de fin d'études soumis par les étudiant.e.s de l'ERG.

Fonctionnalités

  • Affichage paginé des mémoires
  • Visualisation détaillée de chaque mémoire
  • Pages d'information (à propos, contact, licences)

Technologies

  • PHP
  • Symfony YAML pour la lecture des métadonnées
  • CSS (Bulma)

Installation

composer install

Lancement

php -S 127.0.0.1:3001

Puis ouvrir 127.0.0.1:3001 dans votre navigateur.

Structure

front-backend/
├── assets/          # Fichiers CSS et ressources
├── data/
│   └── yaml/        # Fichiers YAML des mémoires
├── inc/             # Fichiers inclus (header, footer)
├── index.php        # Page d'accueil avec liste paginée
├── memoire.php      # Page de détail d'un mémoire
├── apropos.php      # Page à propos
├── contact.php      # Page de contact
└── licences.php     # Page des licences