Astro-based static blog theme, articles stored as Markdown/MDX in src/content/posts/, supports subdirectories that affect article URLs
astro-paper — Astro Blog Template
By satnaing
AstroPaper is a minimal Astro blog theme emphasizing responsiveness, accessibility, and SEO friendliness, with built-in static search, dark mode, RSS, and sitemap, suitable for personal tech blogs.
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.
Built-in Pagefind static search, generates index at build time and copies to public/pagefind/
Provides light and dark modes, draft articles, pagination, collapsible table of contents, RSS and sitemap
Supports i18n and can dynamically generate OG images for blog posts
Configuration centralized in astro-paper.config.ts, where site information and Google site verification can be adjusted
Under MIT license, allows free use, modification, commercial use, and distribution, requires retaining copyright and license notice
Template Details
AstroPaper is an open-source Astro blog theme designed by the author based on their personal blog, positioned as a minimal, responsive, accessible, and search-engine-friendly static blog template. Articles are stored as Markdown or MDX in the src/content/posts/ directory, and can be placed in subdirectories; the subdirectory name becomes part of the article URL. The theme provides light and dark modes, drafts and pagination, collapsible table of contents, RSS and sitemap, and uses Pagefind to implement a static search index generated at build time.
Configuration is centralized in astro-paper.config.ts, where site information, Google site verification, etc., can be set; the build process performs type checking, generates the site, and runs the Pagefind index. The theme supports i18n and can dynamically generate OG images for blog posts. The author states that accessibility testing covered VoiceOver on Mac and TalkBack on Android, and other screen readers were not individually tested.
Usage limitations: The code is under the MIT license, allowing free use, modification, commercial use, and distribution, but when distributing copies or substantial portions of the code, the copyright notice and full MIT license notice must be retained; third-party assets such as demo images, fonts, and icons need to be checked separately under their respective licenses. The theme is a static site, with search relying on the Pagefind index generated at build time, and does not include a server-side database or account system.
Is it right for your project?
Use Cases
- Building a personal tech blog or writing site, managing articles with Markdown/MDX
- Pure static content sites requiring static search, RSS, and sitemap
- Blogs wanting to offer light/dark modes and accessibility support
- Blog projects needing multilingual content and dynamic OG images
Suitable For
- Individual bloggers using Astro and wanting a quick start
- Developers preferring Markdown/MDX writing and static deployment
- Site builders focusing on accessibility and basic SEO configuration
- Projects needing static search without introducing external search services
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Can initialize the project via pnpm/npm/yarn/bun create astro command specifying the satnaing/astro-paper template
- 2
Local development uses pnpm dev, default dev server address is localhost:4321
- 3
Build uses pnpm build, which performs type checking, builds the site, runs Pagefind indexing, and copies to public/pagefind/
- 4
Site information and Google site verification can be configured in astro-paper.config.ts
- 5
Third-party assets such as demo images, fonts, and icons need to be checked under their respective licenses, and cannot be judged solely by the code's MIT license
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under MIT license in the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- Allows free use, modification, commercial use, and distribution of this version's code.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- Code is provided as-is; warranties and liability limitations are governed by the original license and applicable law.
Additional costs & items to verify
- Code is released under MIT license, allowing free use, modification, commercial use, and distribution; however, when distributing copies or substantial portions of the software, the above copyright notice and full MIT license text must be retained.
- The author only tested accessibility with VoiceOver on Mac and TalkBack on Android, and did not individually verify other screen readers; accessibility on other screen readers is not guaranteed.
- Google site verification is an optional feature, requiring you to provide verification values and relying on external services like Google Search Console, which may involve third-party accounts and terms.
- The README uses Cloudflare Pages as a deployment example; actual deployment requires using the corresponding hosting service and complying with its account and fee terms.
- Demo images, fonts, icons, and other third-party assets need to be checked under their respective licenses, and cannot be judged solely by the code's MIT license.
- External services such as domain, hosting, database, payment, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Licensed under the MIT License, Copyright © 2026
Original README
I've tested screen-reader accessibility of AstroPaper using **VoiceOver** on Mac and **TalkBack** on Android. I couldn't test all other screen-readers out there.
Original README
You can add your [Google Site Verification HTML tag]
Original README
https://github.com/satnaing/astro-paper/blob/main/LICENSEhttps://github.com/satnaing/astro-paper/blob/main/README.md**Deployment** - [Cloudflare Pages](https://pages.cloudflare.com/)
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-01. 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 · 100 / 100
- Technologies
- Astro
- Website type
- Blog · Tool Site
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-18
- Screenshot last checked
- 2026-10-01
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.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: 807e30c765a22a8529465821252d4723e4d76f30b42acfec930ffa3a4377bb1e
2026-10-01T14:28:54.902Z
Source file / repository# AstroPaper 📄

[](https://www.figma.com/community/file/1356898632249991861)


[](https://conventionalcommits.org)
[](http://commitizen.github.io/cz-cli/)
AstroPaper is a minimal, responsive, accessible and SEO-friendly Astro blog theme. This theme is designed and crafted based on [my personal blog](https://satnaing.dev/blog).
Read [the blog posts](https://astro-paper.pages.dev/posts/) or check [the README Documentation Section](#-documentation) for more info.
## 🔥 Features
- [x] type-safe markdown
- [x] super fast performance
- [x] accessible (Keyboard/VoiceOver)
- [x] responsive (mobile ~ desktops)
- [x] SEO-friendly
- [x] light & dark mode
- [x] static search ([Pagefind](https://pagefind.app/))
- [x] draft posts & pagination
- [x] sitemap & rss feed
- [x] MDX support
- [x] collapsible table of contents
- [x] followed best practices
- [x] highly customizable
- [x] dynamic OG image generation for blog posts ([Blog Post](https://astro-paper.pages.dev/posts/dynamic-og-image-generation-in-astropaper-blog-posts/))
- [x] i18n ready
_Note: I've tested screen-reader accessibility of AstroPaper using **VoiceOver** on Mac and **TalkBack** on Android. I couldn't test all other screen-readers out there. However, accessibility enhancements in AstroPaper should be working fine on others as well._
## ✅ Lighthouse Score
<p align="center">
<a href="https://pagespeed.web.dev/report?url=https%3A%2F%2Fastro-paper.pages.dev%2F&form_factor=desktop">
<img width="710" alt="AstroPaper Lighthouse Score" src="AstroPaper-lighthouse-score.svg">
</a>
</p>
## 🚀 Project Structure
Inside of AstroPaper, you'll see the following folders and files:
```bash
/
├── public/
│ ├── pagefind/ # auto-generated on build
│ ├── favicon.svg
│ └── default-og.jpg
├── src/
│ ├── assets/
│ │ ├── icons/
│ │ └── images/
│ ├── components/
│ ├── content/
│ │ ├── pages/
│ │ │ └── about.md
│ │ └── posts/
│ │ └── some-blog-posts.md
│ ├── i18n/
│ ├── layouts/
│ ├── pages/
│ ├── scripts/
│ ├── styles/
│ ├── types/
│ ├── utils/
│ ├── config.ts
│ └── content.config.ts
├── astro-paper.config.ts # user-defined configurations
└── astro.config.ts
```
All blog posts are stored in the `src/content/posts/` directory. You can organise posts into subdirectories — the subdirectory name becomes part of the post URL.
## 📖 Documentation
Documentation can be read in two formats\_ _markdown_ & _blog post_.
- Configuration - [markdown](src/content/posts/how-to-configure-astropaper-theme.md) | [blog post](https://astro-paper.pages.dev/posts/how-to-configure-astropaper-theme/)
- Add Posts - [markdown](src/content/posts/adding-new-post.md) | [blog post](https://astro-paper.pages.dev/posts/adding-new-posts-in-astropaper-theme/)
- Customize Color Schemes - [markdown](src/content/posts/customizing-astropaper-theme-color-schemes.md) | [blog post](https://astro-paper.pages.dev/posts/customizing-astropaper-theme-color-schemes/)
- Predefined Color Schemes - [markdown](src/content/posts/predefined-color-schemes.md) | [blog post](https://astro-paper.pages.dev/posts/predefined-color-schemes/)
## 💻 Tech Stack
**Main Framework** - [Astro](https://astro.build/)
**Type Checking** - [TypeScript](https://www.typescriptlang.org/)
**Styling** - [TailwindCSS](https://tailwindcss.com/)
**UI/UX** - [Figma Design File](https://www.figma.com/community/file/1356898632249991861)
**Static Search** - [Pagefind](https://pagefind.app/)
**Icons** - [Tablers](https://tabler-icons.io/)
**Code Formatting** - [Prettier](https://prettier.io/)
**Deployment** - [Cloudflare Pages](https://pages.cloudflare.com/)
**Linting** - [ESLint](https://eslint.org)
**Dynamic OG images** - [Satori](https://github.com/vercel/satori) + [Sharp](https://sharp.pixelplumbing.com/) + [Astro Fonts](https://docs.astro.build/en/guides/fonts/)
## 👨🏻💻 Running Locally
You can start using this project locally by running the following command in your desired directory:
```bash
# pnpm
pnpm create astro@latest --template satnaing/astro-paper
# npm
npm create astro@latest -- --template satnaing/astro-paper
# yarn
yarn create astro --template satnaing/astro-paper
# bun
bun create astro@latest -- --template satnaing/astro-paper
```
Then start the project by running the following commands:
```bash
# install dependencies if you haven't done so in the previous step.
pnpm install
# start running the project
pnpm dev
```
## Google Site Verification (optional)
You can add your [Google Site Verification HTML tag](https://support.google.com/webmasters/answer/9008080#meta_tag_verification&zippy=%2Chtml-tag) by setting `site.googleVerification` in `astro-paper.config.ts`:
```ts file="astro-paper.config.ts"
export default defineAstroPaperConfig({
site: {
// ...
googleVerification: "your-google-site-verification-value",
},
// ...
});
```
> See [this discussion](https://github.com/satnaing/astro-paper/discussions/334#discussioncomment-10139247) for adding AstroPaper to the Google Search Console.
## 🧞 Commands
All commands are run from the root of the project, from a terminal:
| Command | Action |
| :--------------- | :------------------------------------------------------------------------------------------------------------------------------- |
| `pnpm install` | Installs dependencies |
| `pnpm dev` | Starts local dev server at `localhost:4321` |
| `pnpm build` | Type-checks, builds the site, runs Pagefind indexing, and copies the index to `public/pagefind/` |
| `pnpm preview` | Preview your build locally, before deploying |
| `pnpm sync` | Generates TypeScript types for all Astro modules. [Learn more](https://docs.astro.build/en/reference/cli-reference/#astro-sync). |
| `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` |
## ✨ Feedback & Suggestions
If you have any suggestions/feedback, you can contact me via [my email](mailto:[email protected]). Alternatively, feel free to open an issue if you find bugs or want to request new features.
## 📜 License
Licensed under the MIT License, Copyright © 2026
---
Made with 🤍 by [Sat Naing](https://satnaing.dev) 👨🏻💻 and [contributors](https://github.com/satnaing/astro-paper/graphs/contributors).
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

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
accessible-astro-starter
An accessibility-focused Astro 6 starter template with WCAG 2.2 AA practices, Tailwind CSS 4, TypeScript, Prettier, ESLint, form validation, blog and portfolio examples, and preference toggles for dark mode, high contrast, and reduced motion.
Astro · Blog
