Résultats de recherche 1
Réinitialiser les filtres### 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.db` pour le contrôle d'accès RBAC et `fail2ban.db` pour le suivi des événements de sécurité). * **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 ms` et score Google Lighthouse de **100/100** sur la performance et la sécurité. * **Zéro dépendance lourde :** Empreinte mémoire minime (`< 2 Mo` par 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.