Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A static-first personal publication theme for Astro with writing, columns, projects, research, photo galleries, search, favorites, and RSS.

A clean and minimalist Astro blog theme with calm colors, spacious layouts, and a comfortable reading experience.

A port of BOOTSTRA.386 for Hugo, giving blogs a responsive MS-DOS retro look. Free under Apache 2.0.
Fourfold is an Astro theme for building a static-first personal publication site that organizes writing, columns, projects, research, and photo essays through a content-model-driven architecture rather than a flat article list. The template, published under the Liyuk/astro-fourfold repository with a v0.1.0 release, accepts Markdown and MDX files in six validated content collections and outputs a fully static site with HTML pages, an RSS feed, sitemap, dynamic robots.txt, Open Graph metadata, BlogPosting JSON-LD, and a client-side search index.
Fourfold is a personal publication theme for Astro that treats content as structured collections instead of a single blog feed. It takes Markdown/MDX content from src/content/ — writing, columns, projects, research, photos, and links — validates each file's frontmatter against a schema at build time, and generates static pages with year-month URLs, yearly archives, and aggregation views. The default site language is Chinese, with locale and translationKey fields reserved for future English mirror pages. It runs on Astro and can be deployed to GitHub Pages, Cloudflare Pages, Netlify, Vercel Static, or any static CDN.
/search-index.json is generated at build time; the search page matches titles, summaries, body text, and tags and syncs the query into the ?q= parameter.npm run validate:content catches missing required fields, duplicate translationKeys, duplicate article URLs, invalid columns, and broken resource references.No. The site is fully static: Astro pre-renders all pages as HTML, search reads a build-generated /search-index.json file, and favorites are stored in the reader's localStorage. Optional features such as comments, email subscription, or analytics require third-party services that you add yourself.
Writing articles need title, description, locale, publishedAt, and author. Optional fields include updatedAt, translationKey, featured, minutes, column, columnOrder, and draft. Draft articles are excluded from public lists, RSS, and sitemap.
Copy .env.example to .env, set SITE_URL to your domain, and configure BASE_PATH as / for a user site or the repository name for a project site. The included GitHub Actions workflow derives these values from the actual repository context, so you don't hardcode your GitHub username in the template source.
The schema includes locale and translationKey fields, and the recommended approach is parallel files such as hello-world.zh-cn.md and hello-world.en.md in the writing collection. The template currently defaults to Chinese, with English fields reserved but not yet rendered as full mirror pages.
Run npm run validate:content to check required fields, duplicate translationKeys, duplicate article URLs, invalid column references, and broken resource references. Run npm run check after adding content to ensure the build passes before deploying.
