AstroPaper ๐
May 17, 2026 ยท View on GitHub
AstroPaper is a minimal, responsive, accessible and SEO-friendly Astro blog theme. This theme is designed and crafted based on my personal blog.
Read the blog posts or check the README Documentation Section for more info.
๐ฅ Features
- type-safe markdown
- super fast performance
- accessible (Keyboard/VoiceOver)
- responsive (mobile ~ desktops)
- SEO-friendly
- light & dark mode
- static search (Pagefind)
- draft posts & pagination
- sitemap & rss feed
- MDX support
- collapsible table of contents
- followed best practices
- highly customizable
- dynamic OG image generation for blog posts (Blog Post)
- 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
๐ Project Structure
Inside of AstroPaper, you'll see the following folders and files:
/
โโโ 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 | blog post
- Add Posts - markdown | blog post
- Customize Color Schemes - markdown | blog post
- Predefined Color Schemes - markdown | blog post
๐ป Tech Stack
Main Framework - Astro
Type Checking - TypeScript
Styling - TailwindCSS
UI/UX - Figma Design File
Static Search - Pagefind
Icons - Tablers
Code Formatting - Prettier
Deployment - Cloudflare Pages
Linting - ESLint
Dynamic OG images - Satori + Sharp + Astro Fonts
๐จ๐ปโ๐ป Running Locally
You can start using this project locally by running the following command in your desired directory:
# 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:
# 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 by setting site.googleVerification in astro-paper.config.ts:
export default defineAstroPaperConfig({
site: {
// ...
googleVerification: "your-google-site-verification-value",
},
// ...
});
See this discussion 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. |
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. 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 ๐จ๐ปโ๐ป and contributors.