Note: This project is a fork of barebones blog with enhanced features and improved UI.
A minimal blog template built with Astro. Perfect for developers who want a clean, fast, and customizable blog without the bloat.
- Minimal and fast: Built with Astro for optimal performance and minimal JavaScript
- SEO-friendly: Sitemap, RSS feed, and Open Graph protocol support out of the box
- Accessible: System, dark, and light mode support with keyboard navigation
- Developer-friendly: TypeScript, Tailwind CSS, and modern tooling
- MDX support: Write interactive blog posts with custom components including built-in InfoBox admonitions
- Comments system: Built-in support for Giscus comments
- CLI tool: Create and manage blog posts and projects from the command line
- Post series: Group related posts with ordered navigation and dedicated listing pages
- Click the "Use this template" button at the top of the repository
- Clone your new repository to your local machine
- Install dependencies:
pnpm install - Update
src/siteConfig.tswith your site details - Add your content to
src/content/blog/andsrc/content/projects/its that easy! - Start writing and customizing!
- Update site configuration in
src/siteConfig.ts - Modify colors and styling in
src/styles/ - Add your content in
src/content/blog/
You can group related posts into a sequential series that gets:
- A dedicated listing page:
/series/<slug> - A global index page:
/series - Previous/next navigation within the series on each post
- A parts list with direct links
Add two new optional frontmatter fields to your blog posts:
series: my-cool-series # slug identifier (lowercase recommended)
seriesIndex: 1 # numeric order (start at 1)Example:
---
title: "Building a Series: Part 1"
description: "Introducing the new post series feature."
publicationDate: 2025-11-15
tags: [Series]
authors: ["BadDeveloper"]
series: building-a-series
seriesIndex: 1
---
Content...Create additional parts by incrementing seriesIndex. The reading order uses seriesIndex first, then publication date as a tiebreaker.
Want a nicer display name or description per series? You can add optional fields later (e.g. seriesTitle) and update the /series pages to use them.
TinyBones comes with a built-in CLI tool to help you manage your blog content:
- Set up the CLI tool:
pnpm setup-cli - Use it to manage your blog:
- Create a new blog post:
tinybones create new-post - Create a new project:
tinybones create new-project - List all posts:
tinybones list posts - List all projects:
tinybones list projects - Update template:
tinybones update
- Create a new blog post:
For more details, see the CLI documentation.
TinyBones includes a built-in update mechanism that allows you to get the latest template improvements while preserving your content. To update your TinyBones-based blog:
- Make sure you have committed all your changes (or create a backup)
- Run:
tinybones update(or the legacy command:pnpm update-template) - Review the changes and resolve any conflicts if needed
- Commit the updated code to your repository
The update script preserves the following directories and files:
- Your content:
src/content/ - Your site configuration:
src/siteConfig.ts - Your public assets:
public/
To build your blog for production, run:
pnpm buildThis will generate static files in the dist/ directory. You can then deploy these files to any static hosting provider like Vercel, Netlify, or my favorite Cloudflare Pages (which is completely free and super easy). For most providers all you have to do is link your GitHub repository and set your build command to pnpm build and your output directory to dist/.
This project exclusively uses pnpm as its package manager for several reasons:
- Disk space efficiency: pnpm uses a content-addressable store to avoid duplication
- Faster installations: pnpm creates hard links instead of copying packages
- Strict dependency management: prevents phantom dependencies
- Monorepo support: built-in workspace capabilities