Build, content authoring and deployment notes for jordikroon.nl.
| Layer | Choice |
|---|---|
| Runtime | Node.js 24 |
| Package mgr | pnpm 10 |
| Framework | Astro |
| Styling | Tailwind CSS v4 |
| Authoring | MDX + Astro Content Collections (Zod schemas) |
| Code blocks | Shiki (dual theme) |
| Search/feeds | Sitemap + RSS |
| Fonts | Inter Variable + JetBrains Mono Variable (OFL) |
| Deploy | GitHub Actions → GitHub Pages |
Zero JS shipped on most pages. Just a tiny theme toggle.
# install (Node 24 required; use nvm/fnm/volta)
pnpm install
# run dev server
pnpm dev
# type-check
pnpm check
# production build
pnpm build
# preview the build
pnpm previewDrop an .mdx (or .md) file in src/content/blog/:
---
title: 'A new post'
description: 'One-line summary used in lists, RSS and social previews.'
pubDate: 2026-05-12
updatedDate: 2026-05-20
tags: ['php', 'caching']
draft: false
---
Write your post here. Standard markdown plus JSX.Schema lives at src/content.config.ts — pnpm check will catch frontmatter errors.
Add a .md file in src/content/projects/:
---
name: 'project-name'
description: 'One-line description shown in lists.'
url: 'https://example.com'
repo: 'https://github.com/jordikroon/project-name'
role: 'Maintainer'
tags: ['php', 'open-source']
featured: true
order: 1
---featured: true projects show on the home page. order controls position
(lower = higher).
Top-level values (URL, title, nav, socials) live in src/site.config.ts. Update
them there rather than scattering literals across templates.
Replace public/pgp.asc with your actual ASCII-armored public key:
gpg --armor --export YOUR_KEY_ID > public/pgp.ascThen update the fingerprint and keyId in src/pages/pgp.astro.
- Push to GitHub (
jordikroon/jordikroonfor the canonical user site athttps://jordikroon.github.io). - In repository Settings → Pages, set Source to GitHub Actions.
- Push to
main—.github/workflows/deploy.ymlbuilds and deploys.
- Add a
CNAMEfile inpublic/containing the domain (e.g.jordikroon.nl). - Update
SITE.urlinsrc/site.config.ts. - Configure DNS per GitHub's docs.
If hosting as a project page (username.github.io/jordikroon), uncomment / set
base: '/jordikroon' in src/site.config.ts. The workflow already wires
base_path via actions/configure-pages when run from a project repo.
Source code: MIT.
Content (posts and copy in src/content/): CC BY 4.0.