60"
:style="scrolled ? 'background-color:#252426;box-shadow:0 2px 20px rgba(0,0,0,0.4);padding-top:0.5rem;padding-bottom:0.5rem;' : 'background-color:#252426;padding-top:0.75rem;padding-bottom:0.75rem;'">
7
mises à jour majeures
3
rôles utilisateurs
4
services Docker
1
dev solo
Contexte & origine
ESA-RH était une plateforme de recrutement développée en équipe lors de mon BTS SIO (option SLAM) avec Symfony 6.4 et MySQL. Après l'obtention de mon diplôme, j'ai décidé de reprendre ce projet entièrement seul pour le moderniser, le dockeriser et lui donner une identité visuelle complète sous le nom JobMarket.
Évolution du projet
ESA-RH (équipe)
→
Symfony 7.4 LTS
→
PHP 8.4
→
Docker
→
JobMarket
Mises à jour techniques
Stack vers les dernières LTS
Symfony 6.4 → 7.4 LTS · PHP 8.1 → 8.4 · Doctrine ORM 2.x → 3.6 · MySQL → MySQL 8.4 · Doctrine Migrations v3 → v4
Modernisation du code Symfony
Routing annotations →
#[Route] natifs PHP 8 · Authenticator custom → form_login natif Symfony (plus sécurisé, moins de code) · Entités Doctrine annotées → attributs PHP 8
Architecture refactorisée
MappedSuperclass — entité Utilisateur abstraite héritée par Candidat, Recruteur, Admin · Chain provider Symfony Security (deux tables distinctes) · UserCheckerInterface pour bloquer les recruteurs non validés
Services & outils dédiés
CvManager (gestion fichiers CV/LM) · CandidatVerifier (contrôle d'accès) · Commande app:seed (Symfony Console) · Repository avec méthodes custom (filterByCriteria, plusdoffres)
Dockerisation complète (nouvelle)
PHP 8.4-FPM + Xdebug 3 · nginx 1.27-alpine avec HTTPS (certificat auto-signé) · MySQL 8.4 · phpMyAdmin · volumes persistants
Fonctionnalités
Espace Candidat
Inscription, recherche & filtre d'offres, candidature avec CV + lettre de motivation, suivi des candidatures.
Espace Recruteur
Inscription entreprise, création / modification / suppression d'offres, gestion des candidatures (accepter / refuser).
Authentification & rôles
ROLE_CANDIDAT · ROLE_RECRUTEUR · ROLE_ADMIN — accès protégés par le composant Security de Symfony.Annuaire entreprises
Listing des entreprises avec classement par nombre d'offres (
plusdoffres) et upload de fichiers (CV, LM).Infrastructure Docker
php-fpm 8.4
Image custom avec extensions Symfony + Xdebug 3
nginx 1.27-alpine
HTTPS avec certificat auto-signé
MySQL 8.4
Volume persistant pour les données
phpMyAdmin
Interface d'administration de la base de données
Stack technique
Backend
Symfony 7.4PHP 8.4Doctrine ORM 3.6MySQL 8.4
Frontend
TwigBootstrap 5.3Bootstrap IconsInter font
Infrastructure
DockerPHP-FPMnginxphpMyAdmin
Outils dev
Symfony MakerWeb ProfilerXdebug 3
Voir le code source
Code source complet disponible sur GitHub.