AstroPaper v6 theme ported to Nuxt 4 + Nuxt Content v3, retaining the original theme's typography and interactions
nuxt-paper — Nuxt Blog Template
By alexanderop
An open-source template that ports the AstroPaper blog theme to Nuxt 4 and Nuxt Content v3, retaining the original theme's typography and features while providing static generation.
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.
Content stored as Markdown in content/posts/, with frontmatter structure defined in content.config.ts
Search replaced from Pagefind to MiniSearch + queryCollectionSearchSections, and RSS and sitemap output via Nitro routes
Supports drafts and scheduled publishing (15-minute margin), automatically hidden in production
Includes paginated post lists, pagination by tag, archives, about page, fuzzy search, and homepage featured/recent sections
Static site generation via nuxt generate, deployable to any static host
Template Details
NuxtPaper is a port of the AstroPaper v6 blog theme to the Nuxt ecosystem, built with Nuxt 4 (Vue 3) and @nuxt/content v3 for the content layer. Styling follows Tailwind CSS v4 and @tailwindcss/typography, fonts are loaded via @nuxt/fonts using Google Sans Code, code highlighting is handled by Shiki built into Nuxt Content, and the original theme's min-light / night-owl themes are retained. Search is switched from Pagefind to MiniSearch with queryCollectionSearchSections, and RSS and sitemap are output via Nitro server routes (/rss.xml, /sitemap.xml). Content is stored as Markdown files under content/posts/, the frontmatter structure is defined in content.config.ts, and drafts are marked with draft: true; the repository includes scripts/migrate-content.mjs to convert original AstroPaper posts from MDX to MDC and rewrite image paths. Site metadata, feature toggles, social and share links are centralized in shared/utils/site.ts, and UI text is in shared/utils/i18n.ts.
Features include light/dark mode (inline script to avoid flicker and follow system preference), paginated post lists and pagination by tag, tag pages, archive pages grouped by year/month, an about page, fuzzy search, featured and recent post sections on the homepage, drafts and scheduled publishing (15-minute margin, hidden in production), reading progress bar, copy code button, back to top, previous/next navigation, share links, edit page link, breadcrumbs, skip to content, RSS and sitemap, and static site output via nuxt generate deployable to any static host.
Regarding limitations, the README explicitly lists what has not been ported: view-transition names on post titles and tags are not migrated, and only document-level transitions are enabled via experimental.viewTransition. The demo blog posts reuse AstroPaper's original content and were not written for NuxtPaper. The template itself is MIT licensed, but third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses.
Is it right for your project?
Use Cases
- Building a personal tech blog with Nuxt 4 while wanting to keep AstroPaper's typography style
- A static blog site needing Markdown content, tags, archives, RSS, and sitemap
- Migrating from AstroPaper to Nuxt while reusing existing post content and theme appearance
- A blog needing reading experience features such as light/dark mode, reading progress bar, and copy code button
Suitable For
- Developers familiar with Nuxt and Vue 3 who are willing to maintain the template code themselves
- Bloggers who write in Markdown and prefer static generation deployment
- Sites needing basic blog capabilities such as tags, archives, search, and RSS
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Install dependencies with pnpm install, start local development with pnpm dev (default http://localhost:3000)
- 2
Generate a static site with pnpm generate, output located in .output/public
- 3
Site metadata, feature toggles, social and share links are configured in shared/utils/site.ts, and UI text is in shared/utils/i18n.ts
- 4
Posts are Markdown files under content/posts/, drafts are marked with draft: true, and the frontmatter structure is in content.config.ts
- 5
The repository provides scripts/migrate-content.mjs to convert original AstroPaper posts from MDX to MDC and rewrite image paths
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- The demo blog posts reuse AstroPaper's original content and were not written for NuxtPaper; if used for a formal site, you must replace them or confirm the usability of these sample post contents yourself.
- View-transition names on post titles and tags are not ported, and only document-level transitions are enabled via experimental.viewTransition, so the fine-grained view transition effects for titles/tags in the original theme are not available.
- Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
The demo blog posts are AstroPaper's original content.
Original README
https://github.com/alexanderop/nuxt-paper/blob/main/LICENSEhttps://github.com/alexanderop/nuxt-paper/blob/main/README.mdView-transition names on post titles/tags (document-level transitions are enabled via `experimental.viewTransition`)
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 · 85 / 100
- Technologies
- Nuxt · Astro · Vue
- Website type
- Blog
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-06-14
- 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 Nuxt 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: 918f0c964df41c82785bc92d253dedcb5970b0a6dba201c48c81609dcc5793e5
2026-10-01T00:23:34.416Z
Source file / repository# NuxtPaper A port of [AstroPaper](https://github.com/satnaing/astro-paper) (v6) — a minimal, responsive, accessible and SEO-friendly blog theme — to **Nuxt 4** and **Nuxt Content v3**. ## Stack | Concern | AstroPaper | NuxtPaper | | -------------- | --------------------------- | ---------------------------------------- | | Framework | Astro 6 | Nuxt 4 (Vue 3) | | Content | Astro content collections | @nuxt/content v3 (`content.config.ts`) | | Styling | Tailwind CSS v4 | Tailwind CSS v4 (`@tailwindcss/vite`) | | Typography | @tailwindcss/typography | @tailwindcss/typography | | Fonts | Astro fonts (Google) | @nuxt/fonts (Google Sans Code) | | Search | Pagefind | MiniSearch + `queryCollectionSearchSections` | | Code highlight | Shiki (min-light/night-owl) | Shiki via Nuxt Content (same themes) | | Callouts | rehype-callouts | rehype-callouts (obsidian theme) | | TOC | remark-toc | remark-toc | | RSS / Sitemap | @astrojs/rss + sitemap | Nitro server routes (`/rss.xml`, `/sitemap.xml`) | ## Features - Light/dark mode with FOUC-free inline theme script and OS-preference sync - Paginated post list (`/posts`, `/posts/2`, …) and per-tag pagination - Tags, archives (grouped by year/month), about page, fuzzy search - Featured/recent sections on the home page - Draft posts and scheduled publishing (15-min margin), hidden in production - Reading progress bar, copy-code buttons, back-to-top, prev/next post nav - Share links, edit-page link, breadcrumbs, skip-to-content, RSS + sitemap - Full SSG via `nuxt generate` (deployable to any static host) ## Setup ```bash pnpm install pnpm dev # http://localhost:3000 pnpm generate # static build in .output/public ``` ## Configuration Site metadata, feature flags, socials and share links live in `shared/utils/site.ts` (the equivalent of `astro-paper.config.ts`). UI strings live in `shared/utils/i18n.ts`. ## Content Posts are markdown files in `content/posts/` (drafts: `draft: true`). Frontmatter schema is defined in `content.config.ts`. The original AstroPaper posts were migrated with `scripts/migrate-content.mjs` (MDX → MDC conversion, slug-based file names, image path rewrites). ## License & credits MIT — this is a port of [AstroPaper](https://github.com/satnaing/astro-paper) by [Sat Naing](https://satna.ing), whose original MIT copyright notice is retained in [LICENSE](./LICENSE). The demo blog posts are AstroPaper's original content. ## Not ported - View-transition names on post titles/tags (document-level transitions are enabled via `experimental.viewTransition`)
Explore similar templates
Compare previews and descriptions within the same stack and category.

alpine-theme
Alpine is a minimalist blog theme built on Nuxt and Nuxt Content, supporting Markdown and MDC syntax with over 30 components from Nuxt Elements.
Nuxt · Blog

bael-template
Bael is a brutalist-style blog template built with Nuxt.js and Vue.js, using Netlify CMS for content management and deploying to Netlify. Content is stored as files in a Git repository and edited through the /admin path.
Nuxt · Blog

bloggrify
Bloggrify is a Nuxt layer that turns Markdown files into a blog site, built on Nuxt Content with preconfigured analytics, newsletter, comments, SEO, RSS, and content components.
Nuxt · Blog

Nuxt_Mkdirs
An open-source directory site template built with Nuxt and Sanity CMS, with three homepage layouts, Google/GitHub OAuth login, Stripe and Creem payment channels, Resend transactional email and newsletter subscriptions, and optional AI auto-fill for submissions.
Nuxt · Blog

BlogiNote
BlogiNote is a Nuxt Content theme that generates a static blog and notes site from Markdown, JSON, CSV, and other files.
Nuxt · Blog

nuxt-content-template
An opinionated Nuxt Content template for Markdown blogs, with i18n, dark mode, TailwindCSS, LaTeX formulas, and static generation.
Nuxt · Blog
