Przejdź do głównej zawartości

Twarde wymogi techniczne

  • Strona czysto statyczna. SC_CLIENT_STATIC=1 npm run build musi przechodzić. Żadna strona nie może żądać serwera (prerender = false wywróciłby build).

  • Zero skryptu inline i zero atrybutów on… w zbudowanym HTML-u. Polityka bezpieczeństwa strony i tak by ich nie wykonała, a kontrakt sprawdza wynik buildu. Interakcje to osobne pliki przez <script src>.

  • Żadnych stron trzecich poza Turnstile. Żądania do obcych hostów zatrzymują aktualizację i audyt. Osadzenia idą wyłącznie jako ramki.

  • Build bez sekretów. Build biegnie na kopii bez .git i .env, jako osobny użytkownik, bez skryptów instalacyjnych. Dowiązanie symboliczne w wyniku blokuje wysyłkę.

  • Bezpieczniki, które wywrócą build. Kontrakt łapie przed scaleniem:

    • moduł skopiowany ręcznie z monorepo,
    • własny plik niedodany do commita,
    • znacznik {% … %} w treści wpisu (pokazany w bloku kodu jest w porządku — panel zapisuje go zabezpieczony: {% process=false %} na płotku, \{% we wciętej linii).
  • Otwieracz z filmem — reguły sprawdzane przy każdym sc submit:

    • żadnego <source> w <video> (WebKit trzyma przez nie load ok. 3 s),
    • plakat z tego samego pliku co pod spodem,
    • osobne kadry telefon/komputer przez media.

    Media przygotujesz jednym poleceniem z jednego mastera (AV1/VP9/H.264, plakat z pierwszej klatki, AVIF). Szczegóły i polecenia są w .sc/docs/hero-media.md klonu oraz w skillu media-otwieracza.

  • Rytm i skala. Każda sekcja ma pionowe wcięcie, a odstępy biorą wartości ze skali systemu stylów zamiast przypadkowych liczb.

Do pomiaru szybkości zbudowanej strony służą przyrządy (budżet CSS, LCP, sonda otwieracza). Przy stronie ze sklepem runner mierzy CSS i LCP przed odbiorem sam.