Retour à l’index

Architecture et décisions

Frontières applicatives, flux principaux et raisons des choix techniques.

Des frontières claires et une évolution progressive

Diagramme du flux entre le navigateur, Nginx, Laravel et les services de données

Flux d’une requête

Nginx sert les assets publics et transmet uniquement index.php à PHP-FPM. Laravel applique la langue, la politique d’indexation et les analytics avant d’appeler des contrôleurs légers. Des repositories et services isolent contenus, médias, documentation et agrégations.

Décisions principales

Le rendu serveur comme base

Blade produit un contenu complet sans JavaScript. Les onglets asynchrones, l’audio et les démonstrations sont des améliorations progressives : une erreur côté client ne supprime ni le contenu essentiel ni la navigation.

Des données structurées sans duplication

Projets, compétences, centres d’intérêt et CV restent dans la base de données. Le contenu narratif est versionné et les références sont résolues par des slugs autorisés.

Des opérations réversibles

Les uploads et modifications utilisent des transactions. Les médias orphelins passent par une quarantaine avec manifeste avant suppression. Les déploiements et migrations incluent smoke tests et rollback.

Confidentialité et sécurité par défaut

Les analytics stockent des agrégats, pas des événements personnels. Les routes admin utilisent rôles et policies ; les documents publics reposent sur une allowlist et un Markdown sans HTML brut ni liens dangereux.

Exemple de configuration imposée par le renderer :

new Environment([
    'html_input' => 'strip',
    'allow_unsafe_links' => false,
]);

Consultez les Études de cas pour voir ces choix en pratique.