Personal site and blog, built with Astro, Tailwind CSS 4, and TypeScript. Deployed as a static site to GitHub Pages.
- Astro 5 — static output
- Tailwind CSS 4 (via
@tailwindcss/vite) - TypeScript (checked with
astro check) - MDX + content collections for all content
- Shiki syntax highlighting
@astrojs/rssfor feeds,@astrojs/sitemapfor sitemaps
bun install
bun run dev # local dev server
bun run build # build static site to dist/
bun run preview # serve the built site
bun run check # typecheck + content schema validationbun run compose "My new post"This scaffolds src/content/blog/<slug>.md with a draft: true frontmatter. Drafts are excluded from the build until you remove the flag.
All content lives in src/content/ as Astro content collections, validated by src/content.config.ts:
| Collection | Path | Frontmatter |
|---|---|---|
| Blog posts | src/content/blog/*.md |
title, date, summary, tags[], draft, images[] |
| Author / CV | src/content/authors/*.md |
name, avatar, occupation, company, email, linkedin, github |
| Projects | src/content/projects/*.md |
title, description, imgSrc, href, images[], featured |
GitHub Actions (.github/workflows/astro.yml) builds on push to master and deploys dist/ to GitHub Pages.
src/pages/— routes (home, about, projects, blog, tags)src/layouts/— page layouts (Base, Post, About, List)src/components/— Header, Footer, theme toggle, project cardssrc/utils/— sorting, tag helpers, date formatting