HC Čestice
web hokejového klubu
Klient
HC Čestice
Role
Fullstack — migrace dat, datový model v CMS, frontend, testy, CI/CD a nasazení.
Rok
2026
Stack
Next.js 16, React 19, Payload CMS 3, PostgreSQL, TypeScript, Tailwind CSS, Playwright, Vitest, Docker
Projekt
Web hokejového klubu HC Čestice — aktuality, rozpis a výsledky zápasů včetně amatérské hokejové ligy, soupiska hráčů, fotogalerie, historie klubu, sponzoři a klubové produkty. Projekt byl kompletní migrací ze zastaralého webu na moderní CMS se zachováním celého archivu i původních URL.
Fullstack — migrace dat, datový model v CMS, frontend, testy, CI/CD a nasazení.




Co jsem řešil
Kompletní migrace archivu ze starého webu — parser XML exportu a importní pipeline pro články, sekce, galerie a soubory, plus seed skripty pro hráče, zápasy, sestavy AHL, milníky historie, sponzory a produkty.
Zachování původních URL — generátor redirectů z legacy cest na nové stránky, takže migrace nestála klub ani jeden zpětný odkaz nebo pozici ve vyhledávání.
Adaptérová vrstva nad navigačním pluginem, který je nezralý — srovnává jeho chování a shodí build výjimkou, když se plugin změní. Bez toho by se regrese projevila jen anglickým adminem a nikdo by nepoznal proč.
Vlastní navigační model oddělující text odkazu, kotvu a cestu, s resolverem drženým mimo server-only konfiguraci CMS — jinak by se CMS dostalo do klientského bundlu a build by spadl.
Cache navigace řízená tagem místo času, s revalidačními hooky na vytvoření i smazání — bez nich má cache TTL jeden rok; importní skripty revalidaci vypínají.
Auditní log doplněný o ID dokumentu a autora změny, které použitý plugin sám neloguje, a zamčený na read-only, aby přihlášený správce nemohl mazat vlastní stopu.
Redakční funkce — layout builder, draft a live preview, on-demand revalidace, fulltext, form builder, reCAPTCHA v3, sitemapy dělené po typech obsahu a režim údržby.
Kvalita — e2e testy v Playwrightu, integrační ve Vitestu, guard na design tokeny a typecheck v jednom příkazu, interní katalog UI vzorů a widgetů.
Let's talk about your project!

