Strona jest statyczna: czysty HTML, gotowy build Tailwind CSS i vanilla JavaScript bez frameworków i backendu.
Priorytety: prostota, szybkość, bezpieczeństwo (restrykcyjny CSP) i brak „martwego kodu”.
index.html– jedyny entry pointassets/tailwind.css– wygenerowany CSS (runtime)assets/app.js– jedyny JS runtime (CSP-safe)assets/fonts/*.woff2– lokalnie hostowany Interfavicon/– favicony (bez PWA / manifestu)nginx/default.conf– konfiguracja nginx (cache + MIME)tools/– narzędzia pomocnicze (nie runtime)
assets/app.js wykonuje tylko:
- inicjalizację ikon Lucide (
lucide.createIcons()) - obsługę menu mobilnego
- wstrzyknięcie SVG logo z
<template>do kontenerów:.header-logo.footer-logo
Założenie: brak inline JavaScript w index.html (zgodność z CSP).
Nagłówki są ustawiane na reverse-proxy (Caddy). Minimalny zestaw:
Content-Security-PolicyStrict-Transport-SecurityX-Content-Type-OptionsX-Frame-OptionsReferrer-PolicyPermissions-PolicyCross-Origin-Opener-PolicyCross-Origin-Resource-Policy
Aktualna CSP (skrót):
default-src 'self'- brak inline JS
object-src 'none'frame-ancestors 'none'
- HTML (
/oraz*.html) → krótki cache (np.max-age=300) /assets/*→ długi cache +immutable
Uruchom:
./tools/check.shSkrypt sprawdza m.in.:
- brak inline
<script>windex.html - poprawne targety dla wstrzyknięcia logo
- nagłówki security + CSP
- cache dla HTML i assets
- porty 80/443 (docker-proxy) i kontener Caddy
Wyniki zapisywane są do:
/tmp/gotovalues_check/<timestamp>/headers.txt/tmp/gotovalues_check/<timestamp>/headers_filtered.txt
Typowe wyniki:
- Performance ≈ 99
- Accessibility ≥ 95
- Best Practices = 100
- SEO = 100
Uwaga: Lighthouse może ostrzegać o wpływie rozszerzeń Chrome — najlepiej testować w trybie incognito lub czystym profilu.
- Caddy działa w Dockerze jako reverse proxy
- nginx serwuje statyczne pliki
- systemowy
caddy.servicejest wyłączony, aby nie było konfliktu na porcie 443