Skip to content

Treść build-time + BrowserRouter + prerender (HTML per trasa) #55

Description

@MrCrystal2

Parent PRD

#53

Type

AFK

What to build

Trzy spiniające się elementy jednego pionu:

  1. Treść build-time: content.json importowany statycznie (koniec fetch w runtime); hook treści synchroniczny — znika logika stanów ładowania i null-guardy (if (!hero) return null). Kształt pilnowany typami TS (rozszerz/aktualizuj typy razem z JSON).
  2. BrowserRouter: zmiana routingu z hash na BrowserRouter; wewnętrzne linki /... bez #; ScrollToTop zachowany; reguła wewnętrzne (/) vs zewnętrzne (<a target="_blank" rel="noopener noreferrer">) bez zmian.
  3. Prerender w buildzie: własny lekki skrypt (React SSR) renderujący statyczny HTML każdej trasy z pełną treścią + generacja 404.html (fallback deep-linków na GH Pages) + szkielet sitemap.xml. Efekt: view-source dowolnej trasy pokazuje treść bez uruchamiania JS.

Kontekst: PRD #53 → Implementation Decisions (Treść / Routing / Prerender); plan plans/landing-upgrade.md Faza 2.

Assumptions

Out of scope for this issue

Acceptance criteria

  • Źródło zbudowanego HTML dowolnej trasy zawiera treść hero bez wykonywania JS — [observable: view-source pliku z dist/]
  • dist/ zawiera HTML per trasa + 404.html + sitemap.xml — [observable: zawartość katalogu build]
  • Nawigacja między trasami bez pełnego przeładowania, URL bez # — [observable: test ręczny w yarn preview]
  • Hook treści synchroniczny; brak stanów ładowania w komponentach — [observable: code review + brak loading w DOM]
  • Build i testy zielone — [command: yarn build && yarn test]

How to verify

  1. yarn build — exit 0
  2. Otwórz zbudowany HTML dla / i dla np. /products — treść hero/produktów obecna w źródle strony
  3. Sprawdź istnienie dist/404.html i dist/sitemap.xml
  4. yarn preview — klikaj po nawigacji: URL zmienia się bez #, bez pełnych przeładowań; głęboki link (odświeżenie na /products) działa przez fallback 404
  5. yarn test && yarn lint — exit 0

Blocked by

User stories addressed

  • User story 12 (część: statyczny HTML per trasa)
  • User story 18 (treść JSON bez dotykania komponentów)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions