What's on this page
Architecture de Cecil
Diagramme
graph TD
%% Entry
CLI["bin/cecil\n(CLI Entry)"]
APP["Application\n(Symfony Console)"]
CMD["Commands\nbuild / serve / new:site\nnew:page / clear / show:content"]
CLI --> APP --> CMD
%% Builder
BUILDER["Builder\n(Orchestrateur)"]
CONFIG["Config\n(config.yml + default.php\n+ thèmes)"]
CMD --> BUILDER
CONFIG --> BUILDER
%% Pipeline
subgraph PIPELINE["Pipeline de Build (Steps)"]
S1["1. Pages/Load\n(Finder → fichiers MD)"]
S2["2. Data/Load\n(fichiers YAML)"]
S3["3. StaticFiles/Load"]
S4["4. Pages/Create\n(objets Page)"]
S5["5. Pages/Convert\n(Markdown → HTML\nfront matter)"]
S6["6. Taxonomies/Create"]
S7["7. Pages/Generate\n(générateurs)"]
S8["8. Menus/Create"]
S9["9. StaticFiles/Copy"]
S10["10. Pages/Render\n(Twig)"]
S11["11. Pages/Save"]
S12["12. Assets/Save"]
S13["13. Optimize/*\n(HTML/CSS/JS/Images)"]
S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 --> S8 --> S9 --> S10 --> S11 --> S12 --> S13
end
BUILDER --> PIPELINE
%% Subsystems
subgraph COLLECTIONS["Collections"]
PC["PagesCollection\n(Page objects)"]
TC["TaxonomiesCollection\n(Vocabulary/Terms)"]
MC["MenusCollection"]
end
subgraph GENERATORS["Générateurs (virtuels)"]
GP["Pagination"]
GT["Taxonomy"]
GS["Section"]
GR["Redirect"]
GD["DefaultPages (home, 404)"]
end
subgraph RENDERER["Rendu Twig"]
TW["Twig Engine"]
EXT["Extensions\n(Core, Content, Collection)"]
PP["PostProcessors\n(metadata, excerpts, links)"]
TH["Themes / Layouts"]
TW --> EXT
TW --> PP
TH --> TW
end
subgraph ASSETS["Assets"]
AL["Asset Locator"]
AC["Compiler\n(SCSS → CSS)"]
AI["Image Processor\n(responsive, WebP, AVIF)"]
AO["Optimizer\n(minify CSS/JS)"]
end
subgraph OUTPUT["Sortie (_site/)"]
HTML["pages .html"]
CSS2["assets CSS/JS"]
IMG["images"]
SF["fichiers statiques"]
end
S4 --> PC
S6 --> TC
S8 --> MC
S7 --> GENERATORS
GENERATORS --> PC
S10 --> RENDERER
S12 --> ASSETS
PC --> RENDERER
TC --> RENDERER
MC --> RENDERER
RENDERER --> S11
S11 --> HTML
S12 --> CSS2
S12 --> IMG
S9 --> SF
%% Input
subgraph INPUT["Sources"]
MD["content/\n(Markdown + front matter)"]
DATA["data/\n(YAML)"]
STATIC["static/"]
LAYOUTS["layouts/\n(templates Twig)"]
end
MD --> S1
DATA --> S2
STATIC --> S3
LAYOUTS --> TH
Légende des composants clés
| Composant | Rôle |
| Builder | Orchestrateur central, exécute les steps en séquence |
| Config | Fusion config défaut + thème + projet + CLI |
| Steps | Pipeline modulaire (13 étapes), chacune avec init() / canProcess() / process() |
| Collections | Pages, Taxonomies, Menus — structures de données centrales |
| Generators | Créent des pages virtuelles (pagination, tags, redirections…) |
| Renderer (Twig) | Applique les templates + extensions + post-processors |
| Assets | Compile SCSS, optimise images, fingerprinte les fichiers |