AstroBlog

astro-solitude — Astro Blog Template

By everfu

Astro Solitude is a static blog theme built on Astro, supporting Markdown/MDX writing, 41 content components, category/tag/series archives, multiple comment systems, and local search. The interface defaults to English and includes Simplified Chinese, Traditional Chinese, and Spanish translations.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Supports Markdown and MDX writing, with 41 built-in content components, Shiki syntax highlighting, and KaTeX math rendering

02

Article management covers categories, tags, series, archives, pagination, pinned posts, drafts, custom URLs, and aliases

03

Provides pages such as about, friends, equipment, music, guestbook, short posts, recent comments, and 404

04

Supports local search, Algolia, and DocSearch, and generates RSS and sitemap

05

Can integrate with Twikoo, Waline, Valine, Artalk, and Giscus comment systems, loaded according to configuration

06

Interface defaults to English and includes built-in Simplified Chinese, Traditional Chinese, and Spanish translations

Template Details

Astro Solitude is a static blog theme developed by everfu for Astro, licensed under Apache-2.0. It targets personal blog scenarios, generates static pages via Astro, and can be deployed to hosting platforms or self-hosted servers.

For writing, the theme supports Markdown and MDX, with 41 built-in content components, Shiki syntax highlighting, and KaTeX math rendering. Article management provides categories, tags, series, archives, pagination, pinned posts, drafts, custom URLs, and aliases. Beyond regular posts, it includes pages such as about, friends, equipment, music, guestbook, short posts, recent comments, and 404.

For interaction, it offers light/dark mode, image lightbox, keyboard shortcuts, context menu, and a music capsule that continues playing across page navigation. Search supports local search, Algolia, and DocSearch, and generates RSS and sitemap. Comments can integrate with Twikoo, Waline, Valine, Artalk, and Giscus, loaded according to configuration. The interface defaults to English and includes built-in Simplified Chinese, Traditional Chinese, and Spanish translations.

Before use, note: the template includes sample posts and pages; comments, comment aggregation, and online music are disabled by default and require filling in your own service identifiers per the integration guide. Changing the interface language does not translate posts or custom navigation. When hosting the site in a subdirectory, set base. Third-party assets such as sample images, fonts, and icons require separate license verification.

AstroBlog

Is it right for your project?

Use Cases

  • Building a personal static blog with Astro and deploying to a hosting platform or self-hosted server
  • Writing technical articles, notes, and short posts in Markdown or MDX, and organizing content with categories, tags, and series
  • Blog sites that need local search, RSS subscription, and sitemap
  • Blogs that want to integrate comment services such as Twikoo, Waline, Valine, Artalk, or Giscus
  • Sites that need reading interactions such as light/dark mode, image lightbox, keyboard shortcuts, and cross-page music playback

Suitable For

  • Developers familiar with Astro or willing to configure site.config.ts according to the documentation
  • Personal blog authors who primarily use static deployment and do not need server-side rendering
  • Blog sites that need a multilingual interface (English, Simplified Chinese, Traditional Chinese, Spanish)
  • Technical bloggers who want to write using MDX components and math formula rendering

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Requires Node.js 22.12.0+ and pnpm; the pnpm version is determined by the packageManager field in package.json

  2. 2

    Create an independent repository via GitHub's Use this template, then clone it, run pnpm install --frozen-lockfile and pnpm dev

  3. 3

    Edit src/site.config.ts to set the site URL, title, author, navigation, and theme options; for subdirectory deployment, set base

  4. 4

    The template includes sample posts and pages; replace sample content, images, and site identity information before publishing

  5. 5

    Comments, comment aggregation, and online music are disabled by default; fill in your own service identifiers per the integration guide

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version in the public repository under the Apache-2.0 license; the free scope is the code of this version and does not imply that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution are permitted; when distributing, include the Apache-2.0 license.
  • Modified files must prominently indicate changes and retain relevant copyright, patent, trademark, and attribution notices.
  • If the original project includes a NOTICE file, retain applicable attribution notices when distributing derivative works.
  • The license includes an applicable contributor patent grant; initiating patent litigation as described in the license terminates that patent grant, and no trademark rights are granted.
  • The code is provided as-is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Comments, comment aggregation, and online music are disabled by default and require configuring third-party service identifiers (such as Twikoo, Waline, Valine, Artalk, Giscus, etc.) per the integration guide to enable; this may involve external service accounts or fees.
  • Before publishing, you must replace the template's sample posts, images, and site identity information; do not launch directly with sample content.
  • Switching the interface language only affects built-in interface text and does not translate post content or custom navigation.
  • If the site is deployed in a subdirectory, you must additionally set the base configuration item, otherwise paths will be incorrect.
  • The runtime requires Node.js 22.12.0 or higher and uses pnpm, and the pnpm version must match the packageManager field specified in package.json.
  • When modifying or redistributing the project, retain applicable license and copyright notices.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; do not judge solely based on the code's Apache-2.0 license.
  • External services such as domain, hosting, database, payment, or AI may incur additional charges.
View Original Text Basis

no-charge, royalty-free, irrevocable copyright license

Original License Text

Comments, comment aggregation, and online music are disabled with empty service identifiers. Follow the [integration guide](docs/integrations.md) to connect your own services.

Original README

Replace sample content, images, and site identity before publishing.

Original README

Changing the interface locale does not translate posts or custom navigation.

Original README

For a site hosted under a subdirectory, also set `base`, for example `base: '/blog/'`.

Original README

Install Node.js **22.12.0+** and pnpm. Use the pnpm version specified in the `packageManager` field of [package.json](package.json).

Original README

Retain the applicable license and copyright notices when modifying or redistributing the project.

Original README
https://github.com/everfu/astro-solitude/blob/main/LICENSEhttps://github.com/everfu/astro-solitude/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
Astro Themes
Documentation and maintenance reference score
More documented · 83 / 100
Technologies
Astro
Website type
Blog
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-09-14
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 7d9dfc4e1eceb048153aa6616827aaa86af8dd7701459b65da62b777c12adb59

2026-10-02T09:04:22.685Z

Source file / repository
English 丨 [简体中文](README.zh-CN.md)

<div align="center">

<img src="public/img/logo.png" width="120" height="120" alt="Astro Solitude paper airplane logo" />

# Astro Solitude

A clean, elegant, feature-rich blog theme for Astro.

Build your personal blog with static pages, Markdown / MDX, light and dark modes, and a rich collection of content components.

[![Astro](https://img.shields.io/badge/Astro-7-BC52EE?logo=astro&logoColor=white)](https://astro.build/)
[![Node.js](https://img.shields.io/badge/Node.js-%3E%3D22.12.0-5FA04E?logo=node.js&logoColor=white)](package.json)
[![License](https://img.shields.io/badge/license-Apache--2.0-FF5531)](LICENSE)
[![Checks](https://github.com/everfu/astro-solitude/actions/workflows/check.yml/badge.svg)](https://github.com/everfu/astro-solitude/actions/workflows/check.yml)
[![Stars](https://img.shields.io/github/stars/everfu/astro-solitude)](https://github.com/everfu/astro-solitude/stargazers)

[Use this template](https://github.com/everfu/astro-solitude/generate) · [Documentation](docs/README.md) · [Quick start](#quick-start) · [Configuration](docs/configuration.md) · [Components](docs/components.md) · [Deployment](docs/deployment.md) · [Report an issue](https://github.com/everfu/astro-solitude/issues)

</div>

![Astro Solitude desktop homepage preview](docs/screenshots/home-desktop.png)

## Features

- **Layout and reading**: responsive post cards, recommendations, sidebar, table of contents, related posts, copyright notices, and donation links.
- **Writing**: Markdown / MDX, 41 content components, Shiki syntax highlighting, and KaTeX math rendering.
- **Post management**: categories, tags, series, archives, pagination, pinned posts, drafts, custom URLs, and aliases.
- **Special pages**: About, Links, Equipment, Music, Message Board, short posts, Recent Comments, and 404.
- **Interactions**: light and dark modes, image lightbox, keyboard shortcuts, context menu, and a music capsule that persists across page navigation.
- **Search and feeds**: local search, Algolia, DocSearch, RSS, and sitemap.
- **Comments**: Twikoo, Waline, Valine, Artalk, and Giscus, loaded according to configuration.
- **Interface languages**: English by default, with Simplified Chinese, Traditional Chinese, and Spanish.
- **Static deployment**: generate static files for a hosting platform or your own server.

## Quick start

### 1. Get the project

Install Node.js **22.12.0+** and pnpm. Use the pnpm version specified in the `packageManager` field of [package.json](package.json).

Click [Use this template](https://github.com/everfu/astro-solitude/generate) to create an independent repository, then clone your copy (replace `YOUR_NAME` and `my-blog`):

```sh
git clone https://github.com/YOUR_NAME/my-blog.git
cd my-blog
pnpm install --frozen-lockfile
pnpm dev
```

Open the local URL shown in your terminal to preview the theme and sample content.

### 2. Configure your site

Edit [`src/site.config.ts`](src/site.config.ts) to set your site URL, title, author, navigation, and theme options. Here is a minimal configuration:

```ts
import { defineSolitudeConfig } from './lib/config';

export default defineSolitudeConfig({
  site: 'https://example.com',
  title: 'My blog',
  description: 'Notes, stories, and discoveries.',
  locale: 'en',
  author: { name: 'Your name' },
});
```

For a site hosted under a subdirectory, also set `base`, for example `base: '/blog/'`. See [Configuration](docs/configuration.md) for all options.

The template includes sample posts and pages with local search enabled. Comments, comment aggregation, and online music are disabled with empty service identifiers. Follow the [integration guide](docs/integrations.md) to connect your own services. Replace sample content, images, and site identity before publishing. Changing the interface locale does not translate posts or custom navigation.

### 3. Start writing

Create a Markdown or MDX file in `src/content/posts/`, such as `hello-world.md`:

```md
---
title: Hello, world
date: 2026-09-11
description: My first post.
tags: [Life]
---

Start your story here.
```

The default URL is `/p/hello-world/`. Use `slug`, `url`, and `aliases` to customize addresses. Set `draft: true` for drafts, or `home: false` to hide a post from homepage areas while keeping it in archives, search, RSS, and direct links.

See [Front matter](docs/writing.md#front-matter) and [MDX components](docs/components.md) for more writing options.

### 4. Build and deploy

```sh
pnpm build
pnpm preview
```

Publish the generated `dist/` directory to your hosting platform. Set the build command to `pnpm build` and the output directory to `dist`. Use `pnpm install --frozen-lockfile` during dependency installation.

See [Deployment](docs/deployment.md) for hosting instructions and path configuration.

## Documentation

The template, sample content, and documentation use English by default. Built-in interface translations are available in Simplified Chinese, Traditional Chinese, and Spanish. Start with the [documentation index](docs/README.md).

| Guide                                      | Contents                                                  |
| ------------------------------------------ | --------------------------------------------------------- |
| [Getting started](docs/getting-started.md) | Create a template copy, install, write your first post    |
| [Configuration](docs/configuration.md)     | Site identity, appearance, navigation, defaults           |
| [Writing](docs/writing.md)                 | Front matter, drafts, categories, URLs, feeds             |
| [Pages](docs/pages.md)                     | About, links, equipment, short updates                    |
| [Components](docs/components.md)           | Usage, parameters, and examples for all 41 MDX components |
| [Integrations](docs/integrations.md)       | Comments, music, external search                          |
| [Deployment](docs/deployment.md)           | GitHub Pages, static hosts, subpaths                      |
| [Hugo import](docs/migration.md)           | Preview, export, verify migrated content                  |
| [FAQ](docs/faq.md)                         | Troubleshooting and theme updates                         |

<details>
<summary>More previews: dark mode and mobile reading</summary>

![Dark homepage](docs/screenshots/home-desktop-dark.png)
![Mobile article](docs/screenshots/post-mobile-dark.png)

</details>

## Project structure

```text
astro-solitude/
├── public/                # Images, fonts, and other static assets
├── src/
│   ├── components/        # Theme and MDX components
│   ├── content/
│   │   ├── posts/         # Blog posts
│   │   └── pages/         # Custom pages
│   ├── data/              # About, links, equipment, and short-post data
│   ├── layouts/           # Page layouts
│   ├── pages/             # Astro routes
│   ├── styles/custom.css  # Custom styles
│   └── site.config.ts     # Site configuration
├── docs/                  # Documentation
└── astro.config.mjs       # Astro configuration
```

## Contributing

Use [Issues](https://github.com/everfu/astro-solitude/issues) for bug reports and suggestions. [Pull requests](https://github.com/everfu/astro-solitude/pulls) improving the theme, documentation, and translations are welcome. Include reproduction steps, your environment, and relevant configuration when reporting a problem.

Run these checks before submitting changes:

```sh
pnpm docs:check
pnpm check
pnpm build
pnpm test
```

For changes to page interactions, also run the browser tests:

```sh
pnpm build:fixture
pnpm exec playwright install chromium
pnpm test:e2e
```

Browser tests use an isolated fixture site. Mocked third-party tests do not establish that live services work. See the [development validation report](docs/parity.md) for test coverage and source comparisons.

## License

[Apache-2.0](LICENSE) License © 2026–present [everfu](https://github.com/everfu). Retain the applicable license and copyright notices when modifying or redistributing the project.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.