tauri.kalve.dev

Hello, world

Welcome. This blog lives on the same Astro site as my CV — posts are plain markdown files rendered to static HTML at build time, so there’s no CMS and no client-side JavaScript involved.

How a post is made

Each post is a .md file in src/content/blog/ with a bit of frontmatter:

---
title: "Hello, world"
description: "First post on this blog."
pubDate: 2026-07-05
draft: false
---

Setting draft: true keeps a post visible in dev but out of the production build. Code blocks are highlighted at build time with Shiki:

import { getCollection } from "astro:content";

export async function getPosts() {
  const posts = await getCollection("blog", ({ data }) =>
    import.meta.env.PROD ? !data.draft : true,
  );
  return posts.sort(
    (a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf(),
  );
}

That’s the entire pipeline. More posts to follow.