# Krok 15 - Rendering Vrstva (Jadro a Baseline šablóna) ## Kontext projektu Renderer je PHP služba, ktorá z `wizard_data` a AI vygenerovaného obsahu vytvorí statický HTML web. Rendering layer je oddelená od content layer. ## Pred implementáciou si preštuduj - `docs/mvp.md` - Sekcia 4 (Rendering layer). - `docs/architecture.md` - Sekcia 12 (Website Quality Requirements). ## Cieľ Vytvoriť základnú triedu `Renderer` a baseline HTML šablónu, ktorá bude slúžiť ako kostra pre generovaný web. ## Požadované zmeny 1. Vytvorenie triedy `App\Services\Renderer` v `src/Services/Renderer.php`: - Metóda `render(string $projectId): bool`. - Načítanie dát projektu. - Implementácia "tvrdého" HTML escapovania pre všetky texty z JSONu (`htmlspecialchars`). 2. Vytvorenie základnej šablóny `src/Templates/base.php`: - Kompletná HTML5 štruktúra. - Dynamické vkladanie SEO meta tagov (`title`, `description`, OpenGraph). - Inklúzia CSS a JS súborov (relatívne cesty). - Kontajner `
`, do ktorého sa budú vkladať sekcie. 3. Vytvorenie statických assetov pre export: - `src/Templates/css/site.css` (základný reset a štruktúra). - `src/Templates/js/site.js` (voliteľné pre interaktivitu). ## Implementačné pravidlá - Všetky URL v exporte musia byť relatívne. - Renderer nesmie generovať žiadne inline štýly, ak to nie je nevyhnutné (napr. farby v :root). - Striktné dodržanie sémantiky HTML5. ## Súbory ktoré je potrebné vytvoriť - `src/Services/Renderer.php` - `src/Templates/base.php` - `src/Templates/css/site.css` ## Súbory ktoré je potrebné upraviť Žiadne. ## API a dátové štruktúry Metóda `render` zapisuje výsledok do `exports//index.html`. ## Frontend požiadavky Nerelevantné (generovanie výstupu). ## Backend požiadavky - PHP 8.2 (použitie `ob_start()` / `ob_get_clean()` pre buffering šablón). ## Testovací scenár 1. Spusti `Renderer::render()` pre projekt, ktorý má v `content.generated` základné SEO dáta. 2. Over, či vznikol súbor `exports//index.html`. 3. Over v prehliadači, či má stránka správny titulok a meta tagy. 4. Over, či je HTML kód čistý a správne escapovaný. ## Definition of Done - Renderer dokáže vytvoriť základnú HTML kostru webu. - SEO metadáta sú správne namapované. - Escapovanie je implementované na úrovni jadra. ## Obmedzenia - Žiadne externé template engine (ako Twig/Blade), použi čisté PHP šablóny. ## Výstup - zoznam vytvorených súborov - zoznam upravených súborov - stručné zhrnutie vykonaných zmien - prípadné otvorené problémy