Built-in posts, authors, and pages content collections; articles support categories, tags, series, and heroImage
bloodstone — Astro Blog Template
By MauCariApa-com
Bloodstone is a minimalist editorial blog theme for Astro and Preact, used to publish history, biography, and world-event articles, with built-in content collections, search, series, and table of contents modules.
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.
Client-side article search supports ⌘K / Ctrl+K, Esc, and ↵ shortcuts, and articles can be saved to local storage
Article detail pages provide a dropdown table of contents, series index, and share popover (social links, native share, copy link)
AI article summary entry points via Google AI Mode, DeepSeek, and Perplexity
Outputs sitemap.xml, Google News sitemap, Schema.org JSON-LD, and Open Graph and Twitter card metadata
Includes PWA support (web app manifest and offline service worker) and states a target of WCAG 2.1 AA
Template Details
Bloodstone is a static editorial blog theme built with Astro and Preact, styled with Tailwind CSS, and written in TypeScript. It is aimed at publishing history, biography, and world-event articles, emphasizing a neutral tone and fact-based narrative. The theme includes three content collections: posts, authors, and pages. Articles support frontmatter fields such as categories, tags, series, and heroImage.
Functionally, the article list and detail pages use responsive layouts. Detail pages provide a dropdown table of contents, series index, client-side article search (supporting ⌘K / Ctrl+K, Esc, and ↵ shortcuts), locally stored saved articles, a share popover (social links, native share, copy link), and AI article summaries triggered via Google AI Mode, DeepSeek, and Perplexity. Code blocks are highlighted with Shiki. The site outputs sitemap.xml and a Google News sitemap, and includes Schema.org JSON-LD, Open Graph, and Twitter card metadata. The theme also provides PWA support (web app manifest and offline service worker) and states a target of WCAG 2.1 AA, including skip links, focus indicators, reduced motion support, and an accessibility statement page.
For configuration, site-level parameters are centralized in src/consts.ts (SITE_NAME, SITE_URL, SITE_DESCRIPTION, SITE_EMAIL), and the site in astro.config.mjs must also be updated to match. The donation module is located in src/lib/donations.ts and supports Ko-fi, Buy Me a Coffee, Liberapay, GitHub Sponsors, and PayPal, with each platform shown or hidden via an enabled boolean. Content is stored as Markdown files in the posts, authors, and pages directories under src/content/.
Limitations and notes: the README requires Node.js 18.17.1 or higher, and package management defaults to pnpm, though npm commands are also provided. AI summaries depend on external services, and their availability and costs are not determined by the theme code. Third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses; the MIT license covers only the code itself.
Is it right for your project?
Use Cases
- Publishing history, biography, and world-event articles on an editorial blog that requires a neutral tone and fact-based narrative
- Content sites that build author profiles, series collections, and category/tag systems for articles
- Static blogs that need client-side search, article saving, and sharing without relying on a backend service
- Astro static sites that want integrated sitemap, structured data, and PWA support
- Content sites that need accessibility support (skip links, focus indicators, reduced motion) and an accessibility statement page
Suitable For
- Developers building static blogs with Astro and Preact
- Editorial teams or individual authors focused on history, biography, and world events
- Blog projects that need out-of-the-box modules such as content collections, search, series, and table of contents
- Site maintainers concerned with WCAG 2.1 AA accessibility and PWA support
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Node.js 18.17.1 or higher; dependencies can be installed with pnpm install or npm install
- 2
Configure SITE_NAME, SITE_URL, SITE_DESCRIPTION, and SITE_EMAIL in src/consts.ts, and update the site in astro.config.mjs to match
- 3
Articles, authors, and pages are stored as Markdown files in src/content/posts, src/content/authors, and src/content/pages respectively
- 4
Donation platforms are shown or hidden via enabled booleans in src/lib/donations.ts, and each platform's url must be replaced
- 5
Build output is in the dist/ directory and can be deployed to any static hosting service
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of that version and does not mean external services or third-party assets are free.
Must comply with when using
- The code of this version may be used, modified, used commercially, and distributed for free.
- 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 separate charges.
- The AI article summary feature depends on external services such as Google AI Mode, DeepSeek, and Perplexity, which must be accessed separately; their availability and costs are not determined by the theme code.
- Running and building require Node.js 18.17.1 or higher; lower versions cannot be used.
- Before deployment, the site in astro.config.mjs and SITE_URL in src/consts.ts must be replaced with the actual production URL; otherwise site metadata and the sitemap will be incorrect.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
AI-powered article summaries via Google AI Mode, DeepSeek, and Perplexity
Original README
Requires Node.js **18.17.1** or later.
Original README
https://github.com/MauCariApa-com/bloodstone/blob/main/LICENSEhttps://github.com/MauCariApa-com/bloodstone/blob/main/README.mdReplace `site` in `astro.config.mjs` and `SITE_URL` in `src/consts.ts` with your production URL
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-13. 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
- Website type
- Blog · Starter
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-16
- Screenshot last checked
- 2026-10-13
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-13
Inspect the recorded source material
SHA-256: 91e3b49a163e2885ea259727b3673f0c45e8e6e89e471a15d2617740019b6ecb
2026-10-13T01:31:34.858Z
Source file / repository# Bloodstone
A minimalist editorial blog theme for [Astro](https://astro.build/) and [Preact](https://preactjs.com/). Bloodstone publishes history, biography, and world-event articles with a neutral tone and fact-based narrative.
[](https://astro.build/)
[](https://preactjs.com/)
[](https://tailwindcss.com/)
[](./LICENSE)

## Live Preview
[Bloodstone](https://bloodstone-oss.pages.dev/)
## Description
Bloodstone is a static, editorial blog theme built with Astro 7 and Preact 10, styled with Tailwind CSS 4. It includes content collections for posts, authors, and pages, plus a search overlay, article saving, sharing, series browsing, and a table of contents, all ready to use out of the box.
## Features
- Content collections for **posts**, **authors**, and **pages**
- Responsive article list and detail pages
- Dropdown table of contents on article pages
- Article series with a dedicated series index
- Client-side article search with keyboard shortcuts (`⌘K` / `Ctrl+K`, `Esc`, `↵`)
- Save articles to local storage
- Share popover with social links, native sharing, and copy link
- AI-powered article summaries via Google AI Mode, DeepSeek, and Perplexity
- Syntax-highlighted code blocks with Shiki
- `sitemap.xml` and Google News sitemap
- Schema.org JSON-LD structured data
- Open Graph and Twitter card metadata
- PWA support with a web app manifest and offline service worker
- WCAG 2.1 AA accessibility (skip links, focus indicators, reduced-motion support, accessibility statement)
- Mobile-first responsive layout
## Accessibility (WCAG)
Bloodstone is built with accessibility in mind and targets conformance to the **Web Content Accessibility Guidelines (WCAG) 2.1 Level AA**.
### Accessibility Features
- **Skip navigation** – A skip-to-content link lets keyboard users bypass the header and jump straight to the main content.
- **Semantic HTML** – Correct landmark regions, heading hierarchy, and native elements throughout the theme.
- **Keyboard support** – All interactive components (search, menus, popovers) are fully keyboard-operable with visible focus indicators.
- **ARIA attributes** – Icon-only buttons and dynamic regions use appropriate ARIA labels and states.
- **Color contrast** – Text and interactive elements meet AA contrast ratios.
- **Alt text** – All meaningful images include descriptive alt text; decorative icons are hidden from screen readers.
- **Responsive design** – Content is usable at all screen sizes and zoom levels up to 200%.
- **Reduced motion** – Animation and transitions are disabled for users who prefer reduced motion.
- **Accessibility statement** – A dedicated page at `/accessibility` documents the theme's accessibility features and provides a feedback channel.
## Tech Stack
- [Astro](https://astro.build/) 7
- [Preact](https://preactjs.com/) 10
- [Tailwind CSS](https://tailwindcss.com/) 4
- [TypeScript](https://www.typescriptlang.org/)
- [Shiki](https://shiki.style/) for syntax highlighting
- [Lucide](https://lucide.dev/) icons
- [pnpm](https://pnpm.io/) for package management
## Demo
Replace `site` in `astro.config.mjs` and `SITE_URL` in `src/consts.ts` with your production URL, then deploy the generated `dist/` directory to any static hosting service.
## Quick Start
Requires Node.js **18.17.1** or later.
```bash
# install dependencies
pnpm install
# or
npm install
# start the dev server
npm run dev
# build for production
npm run build
# preview the production build
npm run preview
```
## Configuration
All site-wide values live in `src/consts.ts`:
- `SITE_NAME`: the site name shown in metadata, the header, and the footer.
- `SITE_URL`: the canonical production URL used by sitemaps and JSON-LD.
- `SITE_DESCRIPTION`: the default meta description.
- `SITE_EMAIL`: the contact email used by the contact page.
Also update `site` in `astro.config.mjs` so it matches `SITE_URL`.
## Project Structure
```
public/ # Static assets (favicon, manifest, service worker, robots.txt, etc.)
src/
components/ # Reusable UI and interactive components
content/ # Markdown content for authors, pages, and posts
content.config.ts# Content collections schema
hooks/ # Custom Preact hooks
layouts/ # Astro page layouts
lib/ # Utility modules
pages/ # Astro routes
styles/ # Global Tailwind CSS
astro.config.mjs # Astro configuration
package.json # Dependencies and scripts
```
## Donations
Bloodstone supports multiple donation platforms. All configuration lives in `src/lib/donations.ts`.
### Supported Platforms
- **Ko-fi**
- **Buy Me a Coffee**
- **Liberapay**
- **GitHub Sponsors**
- **PayPal**
### Activating / Deactivating Platforms
Each platform has an `enabled` boolean in `src/lib/donations.ts`. Set it to `true` to show the platform or `false` to hide it:
```ts
{
id: 'kofi',
name: 'Ko-fi',
description: 'Buy us a coffee on Ko-fi',
url: 'https://ko-fi.com/yourusername',
enabled: true, // ← toggle this
},
```
### Updating Your Donation Links
Replace the `url` value for each platform with your actual donation link.
### Components
- **DonateButton** – Popover button in the footer that lists all active platforms.
- **DonationSwitcher** – Interactive selector on the `/donate` page where visitors pick their preferred platform.
- **DonatePlaceholder** – Reusable placeholder widget that lists all active platforms. Add it anywhere (e.g., end of an article) with `<DonatePlaceholder client:load />`.
## Content Guide
### Posts
Create new posts inside `src/content/posts/` as Markdown files with frontmatter:
```yaml
---
title: Article Title
description: Short description of the article.
pubDate: 2026-08-08T08:00:00Z
authors:
- Bloodstone
category:
- History
tags:
- tag-name
series: Series Name
heroImage: https://example.com/image.jpg
---
```
### Authors
Author profiles live in `src/content/authors/`:
```yaml
---
name: Author Name
avatar: https://example.com/avatar.jpg
bio: Brief bio.
position: Editorial
social:
github: username
---
```
### Pages
Static pages such as About, FAQ, and Contact are managed as Markdown entries in `src/content/pages/`. The contact page itself is a dedicated route at `src/pages/contact.astro`.
## License
[MIT](./LICENSE)
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
