This is my personal website ported from Next.js to Astro recently (1 Dec 2024). There is also a blog which I occasionally update as a diary and personal geek note. I am not a good storyteller but sometimes the feeling is just right.
- 28 Apr 2026 — Upgraded Astro 5→6, React 18→19, Tailwind CSS 3→4, TypeScript 5→6. Migrated blog to Astro Content Collections (replaced
gray-matter/remarkcustom loader with Zod schema + built-in shiki syntax highlighting). - 1 Dec 2024 — Ported from Next.js to Astro.
- 7 May 2022 — Ported from Jekyll to Next.js + Tailwind CSS.
- Dec 2015 — Initial blog launch on Jekyll.
- Astro 6
- React 19
- TypeScript
- Tailwind CSS 4
Visual Studio Code with Tailwind CSS IntelliSense extension.
pnpm run devpnpm run build # astro check + build
pnpm run checktype # type check only
pnpm run lint # lint with ESLint
pnpm run format # format with Prettier
pnpm run format:check # check formatting without writing
pnpm run format:lintfix # format + lint fixCurrently deploy on Cloudflare Pages and can be accessed at https://bluenex.dev.
A new post can be added in src/content/posts/ directory with a file name format:
{year}-{month}-{date}-{title-as-kebab-case}.mdSupported frontmatter:
title: string # required
date: YYYY-MM-DDTHH:mm # required
modified: YYYY-MM-DDTHH:mm # optional
tags: [tag1, tag2] # optional
thumbnail: string # optionalPosts are loaded via Astro Content Collections (src/content.config.ts) with a Zod schema. Markdown is rendered at build time using Astro's built-in pipeline with shiki for syntax highlighting (github-dark-dimmed theme).