Contexte
Pour présenter mes compétences sans surcouche et surcoût de maintenance de framework lourd, j'ai conçu et développé ce portfolio sur-mesure. Le besoin exigeait une application rapide, sécurisée, accessible (WCAG) et facilement déployable sur un hébergement mutualisé standard.
Actions réalisées
- Architecture PHP MVC : Conception d'une structure logicielle modulaire en PHP 8 avec autoloader Composer, séparation nette des responsabilités (
AuthManager,SessionManager,Fail2banManager,Layout) et routage explicite. - Moteur Hybride Flat-File & SQLite :
- Contenu éditorial (Projets, Notes, Docs) : Stockage en Markdown avec métadonnées Frontmatter YAML, indexé en temps réel dans un fichier JSON léger (
articles_index.json). - Authentification & Audit : Bases SQLite embarquées et découplées (
auth.dbpour le contrôle d'accès RBAC etfail2ban.dbpour le suivi des événements de sécurité).
- Contenu éditorial (Projets, Notes, Docs) : Stockage en Markdown avec métadonnées Frontmatter YAML, indexé en temps réel dans un fichier JSON léger (
- Sécurité en profondeur : Protection anti-brute force Fail2ban applicative (statuts avertissement/blocage IP sur 24h), Content Security Policy (CSP) stricte sans aucun script ni style inline, et gestion des sessions sans bloquer d'inodes.
- Accessibilité & UX : Conformité WCAG 2.1 Level AA (liens d'évitement
.skip-link, gestion:focus-visible, sémantique HTML5 complète, support du mode sombre et gestion A4 à l'impression). - Moteur de recherche intégré : Recherche plein texte indexée inter-sections (Markdown + CV) respectant les permissions d'accès aux données personnelles.
Résultats chiffrés
- Performance d'affichage : Temps de rendu serveur
< 15 mset score Google Lighthouse de 100/100 sur la performance et la sécurité. - Zéro dépendance lourde : Empreinte mémoire minime (
< 2 Mopar requête) tournant nativement sur PHP 8.x sans base de données externe complexe. - Couverture de tests : Suite de 12 modules de tests unitaires CLI automatisés validant la sécurité, la gestion des sessions et la cohérence de l'index à chaque modification.