How This Blog Was Built
"After trying hexo, vue, vitepress, nuxtjs, and pandoc, I finally settled on Astro."
Table of Contents Expand Collapse
Origins
This blog has existed in one form or another for about three years. The journey through tech stacks is a familiar one:
- hexo with the Butterfly theme, then the Redefine theme. Neither felt quite right aesthetically.
- VitePress — too clean, almost sterile. Good for documentation; not for personal writing.
- VuePress — started setting up, never finished.
- Astro — stayed.
The DaisyUI component library replaced the Vue-ecosystem UI libraries I’d been using. TailwindCSS throughout.
Aesthetics and Pipeline
The visual identity relies entirely on the TailwindCSS ecosystem. DaisyUI provides the semantic component layer and, more importantly, the theme system—light and dark mode handled through CSS variables, with no JavaScript required.
@tailwindcss/typography handles the prose styling in post bodies. It defaults to opinions that are largely correct, and the customization surface is wide enough to adjust the few things that aren’t.
For Chinese-language writing, I follow the Chinese Copywriting Guidelines—spaces around inline code and foreign text, consistent punctuation conventions, and so on. These are small details that add up.
Routing and Content
Astro’s file-based routing in the pages/ directory is exactly as convenient as it sounds. Components in components/ are auto-imported. Content in posts/ becomes a route.
I attempted to add Typst support for typesetting mathematical content, but Typst’s build pipeline doesn’t work on Netlify’s build environment. Pending.
Images are served from a CDN on Tencent Cloud Object Storage. The CDN URL is https://static.yizhou.ac.cn/, and images are referenced by hash filename. This keeps the repository lightweight and makes image loading fast from within China.
Bilingual support—Chinese at / and English at /en/—is handled by directory structure: the /en/ directory mirrors the structure of the root, with translated versions of posts and pages. No i18n framework required.