Yet another Christmas Countdown website, built in React using Next.js.
3.9K
A self-hosted, self-contained countdown to Christmas — and then to New Year's — with a festive red-and-green design, animated flip-style digits, and snow that reacts to your cursor. No ads, no analytics, no social icons, just the countdown.

docker run -d --name christmas-countdown -p 8080:8080 modem7/christmas-countdown
Or Compose, if that's more your thing:
services:
xmas:
image: modem7/christmas-countdown
container_name: Xmas-Countdown
ports:
- 8080:8080
Open http://localhost:8080 and enjoy.
next build, no server-side runtimenginxinc/nginx-unprivileged, runs as a non-root user, with security headers (CSP, X-Frame-Options, etc.) set in scripts/nginx/70-nginx.shamd64, arm64/v8yarn lint and yarn test (Vitest — countdown date logic, phase derivation,
and component rendering) run in
GitHub Actions on every push and PR, alongside a
Dockerfile build check (native amd64/arm64 runners, no QEMU).
A separate image test builds the real image,
boots a container, and checks it end-to-end: security headers, gzip,
/healthz, non-root/no-sudo/no-world-writable-files, and — via a Playwright
script — that each countdown phase actually renders correctly.
.woodpecker.yml does the actual multi-arch build and Docker Hub push,
triggered automatically on push to master (or manually, for on-demand
rebuilds).
| Tag | Description |
|---|---|
latest | Latest version |
Originally based on plbrault/christmas-countdown, since substantially redesigned.
MIT, see LICENSE.txt.
Content type
Image
Digest
sha256:a0b881cdc…
Size
22.8 MB
Last updated
2 days ago
docker pull modem7/christmas-countdown