This repository contains the source code for vojtechruzicka.com, a blog about Full-stack Software Development, Clean Code, Design Patterns, Java, Spring, JavaScript, and more. Built with Eleventy static site generator.
Requires Node.js 24.15+ (the exact version is pinned in .node-version, which CI and Cloudflare Pages both read —
nvm, fnm and volta pick it up automatically). The version must stay pinned exactly: a bare 24 resolves to
whatever 24.x the Cloudflare build image has cached, which can be older than the engines minimum in package.json and
fail the install (engine-strict is on).
Then follow these steps:
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
This will start a local server at
http://localhost:8080with hot-reloading.
npm run build: Build the site for production.npm run test: Run Vitest unit tests (most of them assert against_site/, so build first).npm run validate: Run all validation checks (HTML, CSS, JS, Markdown, XML).npm run validate:links: Check internal links in_site/(runs in CI);npm run validate:links:externalalso checks every outbound link (slow, run on demand).npm run lighthouse: Lighthouse CI audit of the built site (lighthouserc.json); needs a running server, e.g. afternpm run devin another terminal.npm run format: Format the codebase using Prettier.npm run clean: Remove the_sitedirectory.
Unpublished posts live in src/posts/_drafts/ with draftStatus: draft | review | ready in their frontmatter.
npm run dev shows all of them; npm run build includes none (production) or only ready ones (Cloudflare preview
deploys of non-master branches). Override with the INCLUDE_DRAFTS env var: all, none, or a stage name, which
includes that stage and everything riper (INCLUDE_DRAFTS=review npm run build). npm run build:with-drafts is a
shortcut for INCLUDE_DRAFTS=all. The rules are implemented in config/draft-utils.js.
Design notes and internal documentation live in the docs/ directory:
- MERMAID.md — build-time Mermaid diagram rendering: design decisions, accessibility, the Chromium dependency
- IMAGES.md — responsive image pipeline and the persistent build cache (local, GitHub Actions, Cloudflare Pages)
- FEEDS.md — RSS/Atom feed generation and the content processing that keeps feeds readable
- DEPLOYMENT.md — Cloudflare Pages settings, preview vs production URLs, and what differs between build environments
Contributions are welcome! If you find a typo, broken link, or have a suggestion, please see CONTRIBUTING.md for guidelines.
Feel free to fork this repository and use the code for your purposes. Be sure to delete all the posts and personal configuration.
All blog content (posts, images, etc.) is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).
The source code of this project is licensed under the MIT License.