Files
xamxam/database/posterg_fiche-technique.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

5.6 KiB
Raw Blame History

Fiche technique

Différentes catégories / métadonnées

• Titre du TFE

• Sous-titre (si applicable)

• Auteur·ice(s)

• Contact (optionnel) [mail/site/insta/etc.]

• Promoteur·ice(s)

• Année

• Orientation [liste prédéfinie]

  • Arts Numériques / Dessin / Cinéma d'animation / Installation-Performance / Peinture / Photographie / Sculpture / Vidéographie / Graphisme / Typographie / Design Numérique / Illustration / Bande-Dessinés / Sérigraphie / Gravure • AP [liste prédéfinie]

  • Narration Spéculative / Design et Politique du Multiple [DPM] / Atelier Pratiques Situées [APS] / Lieux, Interdisciplinarités, Écologie, Nécessité, Systèmes [L.I.E.N.S.] • Finalité du master [liste prédéfinie]

  • Approfondi / Enseignement /Spécialisé • Langue du TFE [liste prédéfinie + option de créer des nouvelles langues]

  • Français / Anglais / autre : [imput] —> possible d'en sélectionner plusieurs en même temps • Format [liste pré-définie + une case autre "fourre-tout"]

  • Site web / Audio / Vidéo / Performance / Objet éditorial / Installation / Etc. / Autre

  • —> possible d'en sélectionner plusieurs en même temps • Mots-clés (max 10) [liste avec les mots clés déjà existants + option d'en créer des nouveaux]

  • spéculation / narration / urbanisme / patrimoine / intime / collectivité / film / cinéma / sociologie / anthropologie / éphémérité / queer / écriture / poésie / écologies affectives / technologies / autre : [imput] • Synopsis (environ 200 mots ; pas nécessairement de max à voir si c'est nécessaire côté technique)

• Durée du TFE (si applicable) [faire en choix entre minutes/pages : [imput]]

• J'autorise l'erg à archiver mon TFE de la manière suivante ;

[]x Libre ;[] mon TFE est en libre accès à tout le monde sur la plateforme des TFE ainsi que dans la bibliothèque de l'erg.

[]x Interne ;[] mon TFE n'est accessible que sur place en physique. Une note descriptive est disponible sur le site.

[]x Interdit ;[] mon TFE n'est pas disponible en physique ni sur le site. Une note descriptive est disponible sur le site.

L'étudiant·e peut, à tout moment, décider de restreindre son propre choix. Iel ne peut par contre pas l'ouvrir.

• Licence du TFE ; dropdown avec plusieurs choix pré-établis + ouverture pour en donner d'autres ?

  • Les options précises sont encore au travail.

• Upload du TFE

• Upload des annexes éventuelles

• Upload de la partie écrite

• Système pour que læ président·e du jury puisse rajouter une note de max 150 mots qui contextualiserait le TFE.

• Points du jury

[]/!\ Quand l'étudiant·e dépose le TFE, celui-ci ne doit pas immédiatement être publié. Il faut attendre que la soutenance ait eu lieu et que læ président·e puisse éventuellement y ajouter un texte ainsi que les points. []

[]—> trouver un système pour rendre ça le plus fluide possible pour læ présidant·e ainsi que l'étudiant·e.[]

Design

• Prévoir un « onglet » Charte / à propos (texte à venir doit être facile à adapter sans avoir à coder).

• Prévoir un « onglet » licences (texte à venir doit être facile à adapter sans avoir à coder).

• Prévoir un « onglet » contact (texte à venir doit être facile à adapter sans avoir à coder).

• Il faut prévoir un espace ou quelque chose pour différencier les thèses (doctorats) des TFE.

Points importants

• Important que le "back-office" soit accessible / pas trop complexe pour qu'on puisse adapter, supprimer, ajouter, corriger les données des TFE (relativement) facilement.

• Important que le texte des différents onglets soit éditable (relativement) facilement.

• Important que le statut de monstration "libre", "interne", "interdit" soit facilement changeable.

Création Base de Données

• Engagement début décembre

  • Min 5h/semaine à horaire libre
  • On espère qu'un premier draft de base donnée arrivera mi-décembre pour pouvoir expérimenter avec. On vous enverra un fichier csv dès qu'on a une base solide.

• Collecte et assemblage des différentes années (au moins 2 ans idéalement tout [lol])

  • —> il faudra demander aux ancien·nes étudiant·es s'iels sont d'accord que leurs données soient publiées. Un mail sera envoyé après la récolte.
    • —> voir avec Karim ce qu'on a le droit de montrer s'il n'y a pas de réponse (fiche descriptive, TFE en physique ?)

• Établir une liste de mots clés prédéfinis / voir s'il y a des lacunes et/ou problèmes quelque part

• On est au travail pour la partie doctorats. On vous tient au courant dès qu'il y a plus d'informations à ce sujet.

Technique

• Hébergement et intégration avec les outils existants à voir avec Joan.

Retroplanning

• Mi-décembre ; envoi d'un semblant de base de donnée pour permettre à l'équipe posterg d'expérimenter

• Journées pédagogiques du 15 & 16 janvier ; travail sur les TFE, la place du jury dans sa publication etc.

• Mi-février ; envoi d'un mail aux ancien·nes étudiant·es et aux profs en vue de la publication digitale des TFE

• Mi-février ; finalisation de la maquette du site Post-ERG

• Mi-mars ; base de donnée des ancien·nes étudiant·es finalisée (fichier .cvs)

• Mi-avril ; date de remise du projet site finalisé

• Début mai ; mise en ligne du site

• Mi-mai ; dépôt des TFE de 1e session (les TFE ne sont pas publiés publiquement à ce moment)

• Mi-juin ; publication publique des TFE (après éventuelle note du jury)