68 lines
2.6 KiB
Markdown
68 lines
2.6 KiB
Markdown
# 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 `<main id="content">`, 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/<project_id>/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/<project_id>/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
|