AstroSvelteBlog

shirone-theme — Astro Blog Template

By tyransol

Shirone is a static personal blog theme built on Astro and Svelte, adopting the Material 3 Expressive design system, aimed at long-form writing and personal collection content.

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-09View source

What stands out

A quick read of the recorded project description.

01

Component system based on Material 3 Expressive design tokens, supporting dynamic HCT palettes and light/dark themes

02

Markdown and MDX writing workflow, supporting math formulas, Mermaid, callouts, enhanced code blocks, and image galleries

03

Swup smooth in-site navigation, keeping the app shell persistent, and supporting route progress and reduced motion

04

Built-in Pagefind full-text search, RSS, and sitemap output

05

Beyond articles, provides pages for archives, categories, tags, friend links, moments, anime, albums, projects, skills, and timeline

06

Optional features follow a zero-burden rule: when disabled, they produce no additional requests, DOM, layout shifts, or main bundle code

Template Details

Shirone is a static personal blog theme built with Astro and Svelte, using Tailwind CSS and Stylus. It establishes a component system driven by design tokens based on the Material 3 Expressive specification, with colors using dynamic HCT palettes, supporting light and dark themes, banner or solid backgrounds, optional textures, and visitor-adjustable display preferences.

Content is written in Markdown or MDX, supporting math formulas, Mermaid diagrams, callouts, enhanced code blocks, and image galleries; the site provides Pagefind full-text search, RSS, and sitemap output. At the article level, it includes table of contents, related articles, sharing, encryption, and optional comments. Beyond articles, the theme also provides standalone pages for archives, categories, tags, friend links, moments, anime, albums, projects, skills, and timeline. The interface includes ten languages, supports keyboard interaction, and includes accessibility tests.

Navigation uses Swup for smooth in-site transitions, keeping the app shell persistent, and supports route progress and reduced motion preferences. Optional features follow a "zero-burden" rule: when disabled, they produce no additional external requests, DOM, layout shifts, or main bundle code. The theme source code, personal content, and npm release are split into separate repositories; the official Shirone-Content is provided for a dual-repository content separation mode, and Shirone-NPM for publishing the shirones package.

Before use, note: the runtime requires Node.js 22.12 or newer, and the package manager is pnpm 9.x (the repository pins [email protected]). The theme source code is under the MIT license, but third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses; external services like domains and hosting may incur additional charges.

AstroSvelteBlog

Is it right for your project?

Use Cases

  • Building a personal blog focused on long-form writing
  • Organizing personal collection content, such as anime lists, albums, projects, and timelines
  • Static content sites requiring full-text search, RSS, and sitemap
  • Maintaining theme source code and personal content in separate repositories

Suitable For

  • Personal blog authors using the Astro and Svelte stack
  • Users who prefer a Markdown/MDX writing workflow and need math formulas, diagrams, and enhanced code blocks
  • Sites requiring multilingual interface and light/dark theme switching
  • Users who want to deploy the site to static hosting services like Vercel, Netlify, or GitHub Pages

Getting started & customization

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

  1. 1

    Runtime requires Node.js 22.12 or newer, and the package manager is pnpm 9.x (the repository pins [email protected])

  2. 2

    Set the site URL, title, language, theme, banner, and display options in src/config/siteConfig.ts

  3. 3

    Update profile and navigation in src/config/profileConfig.ts and src/config/navBarConfig.ts

  4. 4

    Replace the sample articles, personal data, and media files under src/content/, src/data/, and public/

  5. 5

    Before deployment, update site and base, and use pnpm build as the build command and dist as the output directory

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; 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 of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • 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

  • Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
  • Using this theme requires Node.js 22.12 or newer locally and pnpm 9.x (the repository pins [email protected]) as the package manager; installation and building are not possible if the environment does not meet these requirements.
  • In Windows PowerShell environments with restricted script execution, commands must be run using pnpm.cmd and npx.cmd; otherwise, the relevant scripts cannot run.
  • Before submitting code, you must run pnpm format to format source files with Biome; this is a mandatory contribution process requirement of the repository.
  • When contributing code, you must format with pnpm format before committing, keep each PR focused, and use Conventional Commits for commit messages.
  • If planning larger feature or visual changes, you must first open an issue or discussion; large changes cannot be submitted directly.
  • Before deployment, you must first update the site and base configuration in src/config/siteConfig.ts; otherwise, site paths and links may be incorrect.
  • When deploying to static hosting services, the build command must be set to pnpm build and the output directory to dist.
  • Before use, replace the sample articles, personal data, and media files under src/content/, src/data/, and public/; do not directly reuse the sample content.
  • When using the content separation mode, you need to fork or clone the Shirone-Content repository as your own (usually set to private), then point the theme repository to that content repository.
  • Regular blog users should install the shirones npm package rather than working directly in this theme source repository.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

- [Node.js](https://nodejs.org/) 22.12 or newer - [pnpm](https://pnpm.io/) 9.x (the repository pins `[email protected]`)

Original README

On Windows PowerShell installations where script execution is restricted, use `pnpm.cmd` and `npx.cmd` instead.

Original README

| `pnpm format` | Format source files with Biome (mandatory before commit) |

Original README

Always format your changes with `pnpm format` before committing, keep each pull request focused, and use Conventional Commits.

Original README

For substantial features or visual changes, please open an issue or discussion first.

Original README

Before deploying, update `site` and `base` in `src/config/siteConfig.ts`, then run:

Original README

Use `pnpm build` as the build command and `dist` as the output directory.

Original README

Replace the sample posts, personal data, and media under `src/content/`, `src/data/`, and `public/`.

Original README

Fork or clone it into your own repository, normally private, then point this theme repository at it.

Original README

regular blog users install `shirones` rather than working in this repository.

Original README
https://github.com/tyransol/shirone-theme/blob/main/LICENSEhttps://github.com/tyransol/shirone-theme/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-09. 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
GitHub
Documentation and maintenance reference score
More documented · 85 / 100
Technologies
Astro · Svelte
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-10-09
Screenshot last checked
2026-10-09

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.

Review declaration: [email protected] · 2026-10-09

Inspect the recorded source material

SHA-256: 4b0efca9d31a532cd3c355749447c1793c7de5cb6e9a53e52fe49a594ff790df

2026-10-09T08:27:37.198Z

Source file / repository
<div align="center">

<img src="./public/logo/icon.webp" width="88" height="88" alt="Shirone logo" />

# Shirone

**An expressive, anime-inspired blog theme built on Material 3 Expressive.**

A calm reading space for long-form writing, personal collections, and the small details that make a site feel like yours.

[Live demo](https://shirone.mysqil.com/) · [Documentation](https://docs.shirone.mysqil.com/) · [Report an issue](https://github.com/LyraVoid/Shirone/issues)

[English](./README.md) · [简体中文](./README.zh-CN.md) · [繁體中文](./README.zh-TW.md) · [日本語](./README.ja.md)

![Node.js >= 22.12](https://img.shields.io/badge/Node.js-%3E%3D22.12-5FA04E?logo=nodedotjs&logoColor=white)
![pnpm 9](https://img.shields.io/badge/pnpm-9-F69220?logo=pnpm&logoColor=white)
![Astro 7](https://img.shields.io/badge/Astro-7-BC52EE?logo=astro&logoColor=white)
[![License: MIT](https://img.shields.io/badge/License-MIT-3DA639.svg)](./LICENSE)

</div>

> [!IMPORTANT]
> **Start with the [online documentation](https://docs.shirone.mysqil.com/).** It is the primary guide for setup, configuration, content workflows, and deployment.

## Start Here

The [online documentation](https://docs.shirone.mysqil.com/) is the main entry point for setup, configuration, content workflows, and deployment. This repository contains the theme source; use [Shirone-Content](https://github.com/LyraVoid/Shirone-Content) when you want to keep personal content in a separate repository.

## Verified In Practice

The current reference run scores 100 for Performance, Accessibility, Best Practices, and SEO, with all three agentic browsing checks passing. The detailed performance metrics also reach 100 in this run; results can vary with hosting, content, and network conditions.

![Shirone benchmark](./Benchmark.webp)

![Shirone homepage](./public/assets/projects/shirone.webp)

<table>
  <tr>
    <td align="center"><strong>Chromatic Spell</strong><br><sub>Dynamic HCT palettes that respond to light, mood, and choice.</sub></td>
    <td align="center"><strong>Seamless Passage</strong><br><sub>Swup navigation keeps the surrounding world gently in motion.</sub></td>
  </tr>
  <tr>
    <td align="center"><strong>Story Grimoire</strong><br><sub>Markdown, MDX, math, diagrams, code, and images in one writing flow.</sub></td>
    <td align="center"><strong>Quiet by Design</strong><br><sub>SSR-first, accessible, and truly weightless when features are disabled.</sub></td>
  </tr>
</table>

## ✦ A Small Spell for Every Story

Shirone is a static personal blog theme built with Astro 7, Svelte 5, Tailwind CSS 4, and Stylus. Its magic is not a layer of spectacle: it lives in colors that shift with light and mood, pages that turn without breaking the atmosphere, and small details that make a personal corner of the web feel alive.

Behind that softness is a token-driven Material 3 Expressive component system. Content is rendered server-side, while Swup provides smooth in-site navigation and keeps the surrounding application shell alive between pages.

The theme is designed for long-form writing as well as personal collections such as moments, albums, anime lists, friends, projects, skills, and timelines.

## ✦ Inside the Grimoire

- Dynamic HCT color palettes with Material 3 and Material 3 Expressive specifications
- Light and dark themes, banner and solid backgrounds, optional textures, and visitor display preferences
- Responsive layouts with configurable single or dual sidebars
- Smooth Swup navigation with a persistent shell, route progress, and reduced-motion support
- Markdown and MDX content with math, Mermaid, admonitions, enhanced code blocks, and image galleries
- Full-text search powered by Pagefind, plus RSS and sitemap output
- Article table of contents, related posts, sharing, encryption, and optional comments
- Dedicated pages for archives, categories, tags, friends, moments, anime, albums, projects, skills, and timelines
- Ten built-in interface locales
- SSR-first output, keyboard-friendly interactions, and accessibility testing
- Optional integrations follow a zero-burden rule: when disabled, they add no external requests, DOM, layout shift, or main-bundle code

## ✦ AI Skills

Shirone ships with [agent skills](./.agents/skills/README.md) in `.agents/skills/`. AI coding assistants that support the Agent Skills standard (Claude Code, Codex, ZCode, and others) discover them automatically after you clone the repository — developer-oriented skills guide theme development, while user-oriented skills help you write posts, use the custom Markdown syntaxes, and configure your site. To package the same skills as one installable Codex plugin, run `pnpm.cmd skills:package -- --zip`.

## Quick Start

### Requirements

- [Node.js](https://nodejs.org/) 22.12 or newer
- [pnpm](https://pnpm.io/) 9.x (the repository pins `[email protected]`)

### Run locally

```bash
git clone https://github.com/LyraVoid/Shirone.git
cd Shirone
corepack enable
pnpm install
pnpm dev
```

Open `http://localhost:4321` in your browser.

On Windows PowerShell installations where script execution is restricted, use `pnpm.cmd` and `npx.cmd` instead.

### Customize your site

1. Set the canonical URL, title, language, theme, banner, and display options in `src/config/siteConfig.ts`.
2. Update the profile and navigation in `src/config/profileConfig.ts` and `src/config/navBarConfig.ts`.
3. Review the feature-specific files in `src/config/`; their inline comments document defaults and supported values.
4. Replace the sample posts, personal data, and media under `src/content/`, `src/data/`, and `public/`.
5. Create a post with `pnpm new-post <filename>`, then edit it under `src/content/posts/`.

See [`src/config/README.md`](./src/config/README.md) for the complete configuration contract.

## Official Companion Repositories

Shirone keeps theme source, personal site content, and npm publishing responsibilities separate. These official repositories serve different workflows:

| Repository | Use it for | What it contains |
| --- | --- | --- |
| [Shirone-Content](https://github.com/LyraVoid/Shirone-Content) | Running a blog in the external-content, dual-repository mode | A content template for posts, moments, data, media, and `config/*.yaml` overlays. Fork or clone it into your own repository, normally private, then point this theme repository at it. See the [content-separation guide](./docs/content-separation/README.md). |
| [Shirone-NPM](https://github.com/LyraVoid/Shirone-NPM) | Maintaining and publishing the `shirones` npm package | The manual build-and-publish pipeline. It pulls this repository at build time and deliberately contains no theme source; regular blog users install `shirones` rather than working in this repository. See [npm package mode](./docs/npm-package-mode.md). |

## Main Configuration

| File | Purpose |
| --- | --- |
| `src/config/siteConfig.ts` | Site URL, identity, locale, dynamic color, banner, texture, TOC, and display settings |
| `src/config/profileConfig.ts` | Author profile and social links |
| `src/config/navBarConfig.ts` | Main navigation |
| `src/config/sidebarConfig.ts` | Sidebar layout, widgets, and page filters |
| `src/config/postListConfig.ts` | Pagination and list/grid presentation |
| `src/config/articleConfig.ts` | Update notice, related posts, and article sharing |
| `src/config/commentConfig.ts` | Optional comment provider |
| `src/config/musicConfig.ts` | Optional local, custom, Meting, or mixed music source |
| `src/config/animeConfig.ts` | Anime page and local/Bangumi/Bilibili snapshot source |

## Writing a Post

Posts live in `src/content/posts/` and may be Markdown or MDX. A minimal frontmatter block looks like this:

```yaml
---
title: My First Post
published: 2026-08-26
description: A short summary shown in post lists and metadata.
image: ./cover.webp
tags: [Astro, Notes]
category: Writing
draft: false
---
```

Frequently used optional fields include `updated`, `pinned`, `comment`, `lang`, `encrypted`, `password`, `passwordHint`, and `hideHomeContent`. Images may be remote URLs, absolute paths from `public/`, or paths relative to the post file.

## Commands

| Command | Action |
| --- | --- |
| `pnpm dev` | Start the development server |
| `pnpm new-post <filename>` | Create a new post |
| `pnpm format` | Format source files with Biome (mandatory before commit) |
| `pnpm check` | Run Astro diagnostics |
| `pnpm type-check` | Run TypeScript checks |
| `pnpm check:manifest` | Validate the component manifest |
| `pnpm test` | Run the Playwright test suite |
| `pnpm build` | Build the site and Pagefind index into `dist/` |
| `pnpm preview` | Preview the production build |
| `pnpm lighthouse` | Run the desktop production audit |

## Deployment

Shirone produces a static `dist/` directory and can be deployed to Vercel, Netlify, GitHub Pages, or any static hosting service.

Before deploying, update `site` and `base` in `src/config/siteConfig.ts`, then run:

```bash
pnpm install --frozen-lockfile
pnpm check
pnpm type-check
pnpm check:manifest
pnpm build
```

Use `pnpm build` as the build command and `dist` as the output directory. More details are available in [`INDEX.md`](./INDEX.md).

## Documentation

- [`src/config/README.md`](./src/config/README.md) - configuration reference
- [`docs/m3e-standard.md`](./docs/m3e-standard.md) - design tokens and component standard
- [`docs/atomic-structure.md`](./docs/atomic-structure.md) - component layers and dependency rules
- [`docs/markdown-extensions.md`](./docs/markdown-extensions.md) - Markdown plugin, styling, cache, and testing contracts
- [`docs/markdown-on-demand-loading.md`](./docs/markdown-on-demand-loading.md) - content-driven Markdown asset loading and Swup lifecycle
- [`docs/sidebar-system.md`](./docs/sidebar-system.md) - sidebar orchestration and Swup synchronization
- [`docs/on-demand-loading.md`](./docs/on-demand-loading.md) - zero-burden optional features
- [`docs/font-system.md`](./docs/font-system.md) - font configuration and production subsetting
- [`docs/npm-package-mode.md`](./docs/npm-package-mode.md) - how the theme also runs as an npm package, and the override system
- [`docs/packaging-contract.md`](./docs/packaging-contract.md) - rules new theme code must follow to keep working when installed from npm

## Contributing

Issues and pull requests are welcome. For substantial features or visual changes, please open an issue or discussion first. Read [`CONTRIBUTING.md`](./CONTRIBUTING.md) and the repository rules before submitting code. Always format your changes with `pnpm format` before committing, keep each pull request focused, and use Conventional Commits.

## Acknowledgements

Shirone began as a refactor of [Fuwari](https://github.com/saicaca/fuwari) by [saicaca](https://github.com/saicaca). Its current M3E design system, component architecture, page modules, and orchestration are developed as Shirone. Thanks to the Fuwari project and its contributors for the original foundation.

## Contributors

Every contribution adds a new line to Shirone's spellbook. Thank you to everyone who helps this little world grow.

<div align="center">
  <a href="https://github.com/LyraVoid/Shirone/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=LyraVoid/Shirone" alt="Shirone contributors" />
  </a>
</div>

## Star Trail

<div align="center">
  <a href="https://star-history.com/#LyraVoid/Shirone&amp;Date">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=LyraVoid/Shirone&amp;type=Date&amp;theme=dark" />
      <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=LyraVoid/Shirone&amp;type=Date" />
      <img alt="Shirone Star History chart" src="https://api.star-history.com/svg?repos=LyraVoid/Shirone&amp;type=Date" />
    </picture>
  </a>
  <p><sub>Each star is a spark that helps Shirone shine a little farther.</sub></p>
</div>

## License

Shirone is released under the [MIT License](./LICENSE). The repository retains the original copyright notice required by that license.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.