hockey club website

Client

HC Čestice

Role

Fullstack — data migration, CMS data model, frontend, tests, CI/CD and deployment.

Year

2026

Stack

Next.js 16, React 19, Payload CMS 3, PostgreSQL, TypeScript, Tailwind CSS, Playwright, Vitest, Docker

Next.js 16React 19Payload CMS 3PostgreSQLTypeScriptTailwind CSSPlaywrightVitestDocker

Project

Website for the HC Čestice ice-hockey club — news, fixtures and results including the amateur hockey league, player roster, photo galleries, club history, sponsors and merchandise. The project was a full migration from a legacy website to a modern CMS, preserving the entire archive and the original URLs.

Fullstack — data migration, CMS data model, frontend, tests, CI/CD and deployment.

Project Preview
Project Preview
Project Preview
Project Preview

What I built

A full archive migration from the legacy site — an XML export parser and import pipeline for articles, sections, galleries and files, plus seed scripts for players, fixtures, AHL rosters, history milestones, sponsors and products.

URL preservation — a redirect generator mapping legacy paths onto the new pages, so the migration cost the club no inbound links or search rankings.

An adapter layer over an immature navigation plugin — it normalises the plugin's behaviour and throws on unexpected upstream changes. Without it a regression would surface only as an English admin UI, with no explanation.

A custom navigation model separating link label, anchor and path, with a resolver kept apart from the server-only CMS config — otherwise the CMS would leak into the client bundle and break the build.

Tag-based rather than time-based navigation caching, with revalidation hooks on both create and delete — without them the cache TTL is a full year; import scripts opt out.

An audit log extended with the document ID and the acting user — neither of which the plugin records — and locked read-only so an admin cannot delete their own trail.

Editorial features — layout builder, draft and live preview, on-demand revalidation, search, form builder, reCAPTCHA v3, content-type-split sitemaps and maintenance mode.

Quality — Playwright e2e tests, Vitest integration tests, a design-token guard and typecheck behind a single command, and an internal catalogue of UI patterns and widgets.

IconLet's talk about your project!

ImageImage