Architecture

La bibliothèque core/ : 20 classes PHP

QuietCMS n'utilise aucun framework. Toute la logique métier est répartie entre vingt classes PHP regroupées dans le répertoire core/. Chaque classe a une responsabilité unique, déclare strict_types=1 et n'expose que des méthodes statiques — pas d'instanciation, pas d'injection de dépendances, pas de conteneur IoC.

Gestion du contenu

  • ContentManager — Point d'entrée unique pour le CRUD de pages, articles et catégories. Expose getAll(string $type), getBySlug(string $type, string $slug), save(string $type, array $data) et delete(string $type, string $slug). Toutes les lectures et écritures JSON passent par ici.
  • AuthorManager — Gère les profils d'auteurs associés aux articles (nom, bio, avatar, liens sociaux).
  • CommentManager — File de modération des commentaires, comptes lecteurs, approbation et suppression.
  • FormManager — CRUD de formulaires de contact personnalisés, validation des champs, notification par e-mail, stockage des soumissions en JSON.

Sécurité

  • AdminManager — Authentification administrateur, gestion multi-utilisateurs, réinitialisation de mot de passe par token signé.
  • Security — Classe centrale de sécurité : chiffrement AES-256-GCM, tokens CSRF, rate limiting par IP, gestion de session, sanitisation des entrées (clean(), cleanHtml()).
  • RedirectManager — Gestion des redirections 301/302 stockées en JSON, appliquées avant tout rendu de template.

Médias et assets

  • MediaManager — Upload de fichiers, conversion automatique en WebP, sanitisation des SVG via DOMDocument pour éliminer les balises <script> embarquées.
  • ImageService — Redimensionnement et recadrage d'images à la volée via GD.
  • ThumbHelper — Génération et mise en cache des miniatures pour les listings d'articles.

Thèmes et présentation

  • ThemeManager — Lecture des métadonnées de thème (theme.json), gestion du logo et du favicon, éditeur CSS en ligne.
  • SidebarManager — Zones de widgets nommées, rendu par identifiant : SidebarManager::render($id, $settings).
  • BreadcrumbBuilder — Génère le fil d'Ariane HTML en fonction de la route courante.

SEO et metadata

  • SitemapBuilder — Génère sitemap.xml à la volée à partir de tous les contenus publiés.
  • OpenGraphBuilder — Injecte les balises <meta property="og:…"> et Twitter Card dans le <head>.
  • JsonLD — Produit le bloc <script type="application/ld+json"> (Article, BreadcrumbList, WebSite) pour les rich results Google.

Infrastructure

  • Router — Résolution des patterns d'URL vers les templates PHP.
  • Mailer — Envoi d'e-mails via SMTP avec une implémentation légère inspirée de PHPMailer.
  • PluginManager — Système de hooks (body_end, head_end), activation et désactivation de plugins tiers.
  • AIGenerator — Interface optionnelle vers l'API Claude d'Anthropic pour la génération assistée de contenu depuis le back-office.

Principes de conception

Toutes les classes respectent les mêmes conventions :

  • declare(strict_types=1) en tête de chaque fichier.
  • Méthodes 100 % statiques — aucun new ClassName() dans le code applicatif.
  • Aucune dépendance externe : uniquement la bibliothèque standard PHP (SPL, OpenSSL, GD, DOMDocument).
  • Un fichier par classe, nommé identiquement (Security.php, ContentManager.php…).

Cette structure rend QuietCMS particulièrement facile à auditer : chaque classe est une unité indépendante qu'on peut lire, tester et remplacer sans toucher au reste du système.

Articles similaires