Personal blog built with Astro, Tailwind CSS v4, MDX, KaTeX, Giscus, and Pagefind.
npm installnpm run devnpm run buildnpm run preview
src/pages: Astro routes for home, blog, tags, RSS, and error pagessrc/content/blog: Markdown and MDX postssrc/content/images: images referenced from postssrc/layoutsandsrc/components: shared page shell and UI building blockssrc/lib: shared content selectors, markdown helpers, and browser-side UI logic
Posts live in src/content/blog and use this frontmatter shape:
---
title: Example Title
date: 2026-01-01
tags:
- life
draft: false
---titleanddateare requireddescription,tags, anddraftare optional[[wiki links]]and![[image embeds]]are supported through a custom remark plugin- embedded images should live in
src/content/images
The starter template is available at src/content/templates/template.md.
If you want to edit posts in Obsidian, open src/content as the vault.
- shared vault settings are tracked in
src/content/.obsidian - personal workspace state in
src/content/.obsidian/workspace.jsonis ignored - plugin files stay tracked so a fresh clone can be opened and edited right away
Search uses Pagefind.
- the search index is generated during
npm run build - the repository no longer tracks
public/pagefind - search is guaranteed in built output such as
npm run build && npm run preview
Based on Astro Micro.