Případová studie
ozjuliana.sk: web malého sdružení bez WordPressu
Web Občanského sdružení Juliána bez WordPressu: zprávy přidávají sami z telefonu, přihlášení chrání kód z mobilu a redesign je ověřený po pixelech.
Ve zkratce
- 0 nálezů automatické kontroly přístupnosti na všech 10 stránkách
- 30 denních záloh; obsah se každý večer zálohuje sám
- 2 kola bezpečnostního auditu a ani jedno nenašlo cestu do administrace bez přihlášení
- PHP
- HTML
- CSS
- JavaScript
- Apache


Redesign ze září 2026: velké logo se srdcem, červený akcent a výraznější tlačítka. Vlevo původní web, vpravo nový; úchyt lze přetáhnout nebo posouvat šipkami.Nahoře původní web, dole nový.
O co šlo
Občanské sdružení Juliána (slovenská obdoba spolku) celoročně sbírá oblečení, obuv, hračky a potřeby do domácnosti a rozváží je lidem v nouzi a komunitním centrům. Web má říct, kde a kdy se dá pomoc přinést, a zprávy o sbírkách do něj přidávají lidé ze sdružení sami, většinou z telefonu.
Web dělám dobrovolnicky od dubna 2026. Před redesignem prošel auditem přístupnosti, typografie a administrace; redesign dostal jedinou podmínku: co se měnit nemá, nesmí se změnit ani o pixel.
Co z toho sdružení má
Lidé ze sdružení přidávají zprávy o sbírkách i s fotkami sami z telefonu, bez technika. Na webu není nic, co by se muselo každý měsíc aktualizovat, a běží na levném sdíleném hostingu za jednotky eur měsíčně, bez dalších poplatků. Návštěvnost se měří, jen když s tím návštěvník souhlasí, a obsah se každý večer sám zálohuje.
Omezení
- Rozpočet. Levný sdílený hosting, na kterém běží jen PHP – bez příkazové řádky (SSH) a bez Gitu. Žádné placené doplňky ani externí služby.
- Bez WordPressu. Na takovém hostingu by znamenal pravidelné aktualizace jádra a pluginů, databázi a nekonečné pokusy o přihlášení. Sdružení přitom přidá článek s fotkami jednou za pár týdnů.
- Publikum čte na mobilu. Web je navržený od nejmenších telefonů, od šířky 320 px.
- Nezávislost na mně. Web běží na hostingu sdružení a nepotřebuje žádný můj server ani počítač.
Rozhodnutí
- Soubory, ne databáze. PHP bez frameworku; každý článek je jeden soubor JSON a fotky se při nahrání zmenší knihovnou GD. Celý obsah se zálohuje zkopírováním dvou složek a v nouzi se dá článek opravit v obyčejném textovém editoru.
- Heslo a kód z telefonu. Administrace má povinné dvoufaktorové přihlášení (2FA): heslo a šestimístný kód z aplikace Google Authenticator. Výpočet kódů je součástí webu, bez cizí knihovny, protože na takovém hostingu je to jednodušší než nahrávat knihovnu se závislostmi, a ověřuje se proti oficiálním testovacím hodnotám.
- Soukromí návštěvníků. Písma se načítají z vlastního serveru, veřejné stránky nenastavují žádnou cookie a Google Analytics se spustí až po souhlasu v liště podle slovenského zákona 452/2021 Z. z. Souhlas se zaznamenává bez IP adresy. Od Googlu se hned načítá jen mapa v kontaktu.
- Bezpečnost bez doplňků. Prohlížeč dostává přísná pravidla: načte jen zdroje ze schváleného seznamu a web otevírá vždy přes šifrované HTTPS. Formulář chrání skryté pole pro roboty a limit odeslání. Hned po spuštění prošel živý web bezpečnostním auditem ve dvou kolech: 38 zjištění, ani jedno kolo nenašlo cestu do administrace bez přihlášení a opravy kódu byly nasazeny ještě tentýž den.
- Redesign podle měření, ne podle pocitu. Refaktoring před redesignem nesměl změnit ani bajt HTML, ani pixel na 450 screenshotech (15 stránek × 10 šířek × 3 režimy). Při samotném redesignu se zamýšlené změny zapsaly předem a všechno ostatní muselo zůstat shodné.
Výsledek
| Co | Hodnota |
|---|---|
| Přístupnost | 0 nálezů nástroje axe podle pravidel WCAG 2, úrovně A a AA, na všech 10 stránkách (30 běhů) |
| Mobil a monitor | nic nepřetéká v rozsahu 320–1440 px |
| Písmo a kontrast | 12 velikostí písma (audit před redesignem: 29), hranice polí s kontrastem nad 3 : 1 |
| Správa obsahu | článek s galerií přidají lidé ze sdružení z telefonu, bez technika |
| Záloha | každý večer automaticky, 30 denních snímků |
| Provozní náklady | jen sdílený hosting, žádné placené služby |
Co dnes dělám jinak
Změnu vzhledu dnes nejprve změřím: kontrast každého barevného páru, screenshoty na deseti šířkách od 320 px a porovnání se starou verzí. Po každém nasazení navíc skript živý web pouze čte a kontroluje. Tak odhalil i tlačítko „nastavit DNS“ v administraci hostingu, které potichu přesměrovalo doménu přímo na server, mimo CDN (síť, která web doručuje a chrání).
Technologie a postup
PHP 8.5 (minimum 8.4), HTML, CSS a tři malé soubory čistého JavaScriptu bez knihoven; Apache s .htaccess;
sdílený hosting za CDN. Kontrolní sada: Playwright, axe-core, html-validate a stylelint. Nasazení
skriptem přes FTPS se zkušebním během a s kontrolou živého webu na konci.
Dvoufaktorové přihlášení: TOTP podle RFC 6238 v čistém PHP, ověřené testovacími hodnotami z RFC. Hlavičky Content Security Policy (CSP) bez inline skriptů a HSTS; ve formuláři honeypot a limit odeslání.
Každá změna prošla testy a mou kontrolou před sloučením.
Delší text o tom, proč web běží bez WordPressu a jak se ověřoval redesign, je v zápisku Jak vznikl web OZ Juliána.