Cherry blossom themed visuals with glassmorphism, gradient accent colors, and transition animations
astro-sakura-blog — Astro Blog Template
By HuanNan520
An Astro-based cherry blossom themed blog template with a built-in music player, light/dark mode, and client-side full-text search.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Built-in music player: playlists, bilingual synchronized lyrics, draggable position, MediaSession API
Light/dark mode with automatic switching by time and manual switching
Fuse.js client-side full-text search, no backend required
Automatic previous/next navigation for series articles; per-article background music can be set in frontmatter
SEO output includes JSON-LD, OpenGraph, Twitter Cards, and sitemap
Template Details
astro-sakura-blog is a blog template built with Astro and Tailwind CSS, featuring a cherry blossom theme with glassmorphism, gradient accent colors, and transition animations. Site information is centralized in src/config.ts, and articles are placed as .md or .mdx files under src/content/blog/, with frontmatter configuring the title, summary, date, cover, tags, series, and per-article background music.
In terms of features, the template includes a custom music player supporting playlists, bilingual synchronized lyrics, Apple Music-style blur, draggable position, and the MediaSession API (keyboard media keys and system notifications); playlist and lyrics data are written in src/data/playlist.ts, audio files go in public/music/, covers go in public/images/covers/, and an empty state is shown when no songs are configured. It also provides light/dark mode (automatic switching by time and manual switching), client-side full-text search based on Fuse.js, view transitions via Astro's built-in routing, automatic previous/next navigation for series articles, optional Waline comments, automatically generated RSS, SEO output including JSON-LD/OpenGraph/Twitter Cards/sitemap, mobile bottom navigation, a reading progress bar, one-click code block copying, and an image lightbox.
Usage limitations: comments depend on an external Waline service, which requires self-deployment and filling in the serverURL; leaving it blank disables comments. Third-party assets such as demo images, fonts, and icons must be checked against their respective licenses, while the code itself is under the MIT license.
Is it right for your project?
Use Cases
- Building a personal blog that should include music playback and lyrics display
- Needing to organize articles by series with automatically generated previous/next navigation
- Static sites that want client-side search instead of server-side search
- Blogs that need light/dark mode, RSS, and basic SEO metadata
Suitable For
- Personal blog authors using Astro
- Content sites preferring cherry blossom/soft visual styles
- Writing sites that need a built-in music player
- Users who accept that comments depend on an external Waline service
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
After cloning the repository, run npm install, start the development server with npm run dev, and build the production version with npm run build
- 2
Configure the site name, description, URL, language, author information, social links, comments, and analytics in src/config.ts
- 3
Write articles in src/content/blog/ using .md or .mdx and set the title, summary, date, cover, tags, series, and bgm via frontmatter
- 4
Configure music player data in src/data/playlist.ts, place MP3 files in public/music/, and place covers in public/images/covers/
- 5
Comments require self-deploying Waline and filling in the serverURL in config.ts; leaving it blank disables comments
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version in the public repository under the MIT license; the free scope is the code of this version and does not mean 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 liability limitations 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 against 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.
- The comment feature depends on an external Waline service, which requires self-deployment and filling in the serverURL in src/config.ts; without deployment or if left blank, comments cannot be used.
- Comments are an optional feature; leaving the serverURL blank disables comments without affecting the use of other parts of the template.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
1. Set up [Waline](https://waline.js.org) (free hosting on Vercel) 2. Add your server URL in `src/config.ts`
Original README
https://github.com/HuanNan520/astro-sakura-blog/blob/main/LICENSEhttps://github.com/HuanNan520/astro-sakura-blog/blob/main/README.mdLeave `serverURL` empty to disable comments.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-05. 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 · 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-06-14
- Screenshot last checked
- 2026-10-05
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-05
Inspect the recorded source material
SHA-256: f80edf1a526b6e81bf3fb80d613fb6b5576eaa87d577d1c43f672c639a7586a5
2026-10-05T00:12:39.418Z
Source file / repository# Astro Sakura Blog
[](https://astro.build)
[](https://tailwindcss.com)
[](LICENSE)
A beautiful, feature-rich blog template built with Astro 6 and Tailwind CSS, featuring a cherry blossom aesthetic and a built-in music player.
[**Live Demo**](https://huannan.top)

<details>
<summary>More Screenshots</summary>
### Dark Mode

### Blog List

### Article Page

### Mobile
<img src="screenshots/mobile.png" width="390" alt="Mobile" />
</details>
## Features
- **Cherry Blossom Theme** — Sakura-inspired design with glassmorphism, gradient accents, and smooth animations
- **Built-in Music Player** — Custom player with playlist, bilingual lyrics sync, Apple Music-style blur, drag-to-move, and MediaSession API (keyboard media keys, system notifications)
- **Dark / Light Mode** — Automatic time-based switching (dark after 18:00), manual toggle
- **Full-text Search** — Client-side search powered by Fuse.js
- **View Transitions** — Smooth page transitions via Astro's built-in router
- **Series Navigation** — Group related posts with automatic prev/next links
- **Per-article BGM** — Set background music per blog post via frontmatter
- **Comments** — Optional Waline integration
- **RSS Feed** — Auto-generated
- **SEO Optimized** — JSON-LD, OpenGraph, Twitter Cards, sitemap
- **Mobile Responsive** — Bottom navigation bar, touch-friendly player
- **Reading Progress Bar** — Visual scroll indicator
- **Code Block Copy** — One-click copy on code blocks
- **Image Lightbox** — Click to zoom images
## Quick Start
```bash
# Clone the repo
git clone https://github.com/HuanNan520/astro-sakura-blog.git
cd astro-sakura-blog
# Install dependencies
npm install
# Start dev server
npm run dev
# Build for production
npm run build
```
## Configuration
All site settings live in a single file: **`src/config.ts`**
```typescript
export const siteConfig = {
name: "My Blog", // Site title
description: "My personal blog", // SEO description
url: "https://myblog.com", // Your deployed URL
language: "en", // "en" | "zh-CN" | "ja"
author: {
name: "Your Name",
tagline: "Writer / Developer",
avatar: "/images/avatar.png",
motto: "Your favorite quote.",
},
// ... hero, quotes, projects, social links, comments, analytics
};
```
See `src/config.ts` for the full reference with comments.
## Writing Posts
Create `.md` or `.mdx` files in `src/content/blog/`:
```yaml
---
title: "My Post Title"
summary: "A brief summary"
date: 2026-01-01
cover: "../../assets/images/covers/cover-1.webp" # optional
tags: ["Tag1", "Tag2"]
bgm: "Song Name" # optional: auto-play this song
series: "Series Name" # optional: group posts
seriesOrder: 1 # optional: order in series
---
Your content here...
```
## Music Player
Add songs to **`src/data/playlist.ts`**:
```typescript
export const instrumental: Song[] = [
{ name: 'Track Name', artist: 'Artist', url: '/music/track.mp3', cover: '/images/covers/cover.webp' },
];
export const vocal: Song[] = [];
export const lyrics: Record<string, LyricLine[]> = {
'Track Name': [
{ time: 0.0, ja: '(Intro)', zh: '' },
{ time: 15.0, ja: 'First lyric line', zh: 'Translation' },
],
};
```
Place MP3 files in `public/music/` and cover images in `public/images/covers/`.
The player works with zero songs configured — it shows a friendly empty state.
## Comments
1. Set up [Waline](https://waline.js.org) (free hosting on Vercel)
2. Add your server URL in `src/config.ts`:
```typescript
comments: { serverURL: "https://your-waline.vercel.app" }
```
Leave `serverURL` empty to disable comments.
## Deployment
### Cloudflare Pages
1. Push to GitHub
2. Connect repo in Cloudflare Pages dashboard
3. Build command: `npm run build`
4. Output directory: `dist`
### Vercel / Netlify
Zero-config — just connect your repo.
## Tech Stack
- [Astro 6](https://astro.build) — Static site generator
- [Tailwind CSS v3](https://tailwindcss.com) — Utility-first CSS
- [MDX](https://mdxjs.com) — Markdown with components
- [Fuse.js](https://www.fusejs.io) — Fuzzy search
- Self-hosted fonts: Manrope + Noto Serif SC
## Project Structure
```
src/
├── config.ts # All site configuration
├── data/playlist.ts # Music player data
├── layouts/Base.astro # Main layout
├── pages/
│ ├── index.astro # Homepage
│ ├── blog/ # Blog listing & posts
│ ├── projects.astro # Projects showcase
│ ├── about.astro # About page
│ ├── tags.astro # Tag cloud
│ └── archives.astro # Post archive
├── components/
│ ├── MusicPlayer.astro # Built-in music player
│ ├── Footer.astro
│ └── ...
├── content/blog/ # Your blog posts (.md/.mdx)
└── styles/global.css # Global styles
```
## License
MIT
Explore similar templates
Compare previews and descriptions within the same stack and category.

astrowind
AstroWind is a free, open-source Astro starter theme using Astro and Tailwind CSS, released under the MIT license.
Astro · Blog

astro-paper
AstroPaper is a minimal, responsive, accessible, and SEO-friendly Astro blog theme. Articles are stored as Markdown/MDX in src/content/posts/, with subdirectories affecting URLs.
Astro · Blog

fuwari
Fuwari is a static blog template built with Astro and Tailwind CSS for personal blogs. It manages posts as Markdown files in src/content/posts/, with frontmatter for title, date, description, cover, tags, categories, draft status, and language.
Astro · Blog

Firefly
Firefly is a clean personal blog theme forked from Astro and Fuwari, offering four background modes, single/double sidebar and list/grid layouts, Pagefind client-side full-text search, and a six-language UI.
Astro · Blog

astro-theme-cactus
Astro Cactus is an Astro-based blog and portfolio theme that uses Markdown/MDX content collections to manage posts, notes, and tags, with frontmatter type-checked by a schema.
Astro · Portfolio

astrofy
Astrofy is a free and open-source personal portfolio website template built with Astro and TailwindCSS, with built-in blog, CV timeline, project showcase, store, and RSS feed modules.
Astro · Portfolio
