Bloodstone is a minimalist editorial blog built with Astro and Preact. It publishes history, biography, and world-event articles with a neutral tone and fact-based narrative.
Key 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
- Save articles to local storage
- Share popover with social links and native sharing
sitemap.xmland Google News sitemap- Schema.org JSON-LD structured data
- Mobile-first responsive layout
Technology
- Framework: Astro 7
- UI Library: Preact 10
- Styling: Tailwind CSS 4
- Language: TypeScript
- Icons: Lucide (Preact build)
- Output: Static site
Project Structure
public/ # Static assets (favicon, 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
Content
Content is managed through Markdown collections inside src/content/:
- Posts (
posts) contain the main articles. - Authors (
authors) contain author profiles. - Pages (
pages) contain static pages such as About, FAQ, and Contact.
Each article uses YAML frontmatter that supports a title, description, publish date, authors, category, tags, series, and hero image.
Running Locally
Make sure Node.js 18.17.1 or later is installed.
npm install
npm run dev
Production build:
npm run build
Preview the build:
npm run preview
License
Licensed under the MIT License.
