AstroBlogStarter

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.

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

What stands out

A quick read of the recorded project description.

01

Built-in posts, authors, and pages content collections; articles support categories, tags, series, and heroImage

02

Client-side article search supports ⌘K / Ctrl+K, Esc, and ↵ shortcuts, and articles can be saved to local storage

03

Article detail pages provide a dropdown table of contents, series index, and share popover (social links, native share, copy link)

04

AI article summary entry points via Google AI Mode, DeepSeek, and Perplexity

05

Outputs sitemap.xml, Google News sitemap, Schema.org JSON-LD, and Open Graph and Twitter card metadata

06

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.

AstroBlogStarter

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. 1

    Requires Node.js 18.17.1 or higher; dependencies can be installed with pnpm install or npm install

  2. 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. 3

    Articles, authors, and pages are stored as Markdown files in src/content/posts, src/content/authors, and src/content/pages respectively

  4. 4

    Donation platforms are shown or hidden via enabled booleans in src/lib/donations.ts, and each platform's url must be replaced

  5. 5

    Build output is in the dist/ directory and can be deployed to any static hosting service

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 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

Replace `site` in `astro.config.mjs` and `SITE_URL` in `src/consts.ts` with your production URL

Original README
https://github.com/MauCariApa-com/bloodstone/blob/main/LICENSEhttps://github.com/MauCariApa-com/bloodstone/blob/main/README.md

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.

[![Astro](https://img.shields.io/badge/Astro-7-48477C?logo=astro&logoColor=white&labelColor=1F1F2E)](https://astro.build/)
[![Preact](https://img.shields.io/badge/Preact-10-673AB8?logo=preact&logoColor=white&labelColor=1F1F2E)](https://preactjs.com/)
[![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-4-38BDF8?logo=tailwindcss&logoColor=white&labelColor=1F1F2E)](https://tailwindcss.com/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)

![Bloodstone screenshot](./screenshot.png)

## 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)
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.