Show HN: TinyBones
TinyBones is a minimalist, batteries‑included blog template built with Astro. It focuses on:
- Speed: ships almost zero JS by default on content pages
- Accessibility: includes a dyslexia‑friendly font toggle and high‑contrast theming
- Writing ergonomics: clean typography, MD/MDX support, TOC, code copy, and sensible defaults
Why I built it
Most blog starters are either too heavy or too bare. I wanted a tiny, readable baseline that I could deploy quickly without sacrificing quality of life features (TOC, search, comments). TinyBones started as my personal starter and is now a tidy template you can clone and ship.
Highlights
- 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
Quick start
- Clone the repo
git clone https://github.com/itzcozi/tinybones.git
cd tinybones
pnpm install
pnpm dev
Then open http://localhost:4321.
- Create your first post
src/content/blog/my-first-post/index.md
---
title: "My first post"
description: "A short hello."
publicationDate: 2025-09-30
tags: [Hello]
authors: ["BadDeveloper"]
---
Write your content here.
TinyBones CLI
Ship content faster with the built-in TinyBones CLI. It helps you:
- Scaffold new blog posts (MD or MDX) and projects
- List existing posts/projects
- Safely update your blog to the latest TinyBones template (with backups)
Install
From your project root:
# Prefer this in this repo (runs a helper script)
pnpm run setup-cli
# After linking, the `tinybones` command is available globally
Alternatively, you can navigate into the CLI folder and link it manually:
cd scripts/tinybones-cli
npm install
npm link
Use
You can run the CLI either via the npm script or directly if globally linked:
tinybones --help
Common commands:
# Create a new blog post (interactive: title, description, MD/MDX)
tinybones -- create new-post
# Create a new project page (interactive)
tinybones -- create new-project
# List content
tinybones -- list posts
tinybones -- list projects
# Update to the latest TinyBones template (backs up content, creates a branch)
tinybones -- update
Notes:
- New posts/projects are created under
src/content/blog/
andsrc/content/projects/
with anindex.md(x)
file and sensible frontmatter. - The update command backs up your
src/content
,public
, andsrc/siteConfig.ts
by default, fetches the latest template, restores your content, installs deps, and checks out a new branch for review. - If you prefer global usage, replace
tinybones --
withtinybones
(for example,tinybones create new-post
).
What’s inside
src/content/
— your posts (MD/MDX), validated with a Zod schemasrc/components/
— SEO, TOC, search, share, toggles, MDX UI (tabs, infobox)src/pages/
— blog listing, tag and author routes, RSS, Open Graph imagespublic/
— favicons and the dyslexia font assets
Performance
Astro renders static HTML by default, so content pages ship minimal JS. Interactive bits like search and theme/dyslexia toggles hydrate only where needed.