NuxtAstroVueBlog

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.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-01View source

What stands out

A quick read of the recorded project description.

01

AstroPaper v6 theme ported to Nuxt 4 + Nuxt Content v3, retaining the original theme's typography and interactions

02

Content stored as Markdown in content/posts/, with frontmatter structure defined in content.config.ts

03

Search replaced from Pagefind to MiniSearch + queryCollectionSearchSections, and RSS and sitemap output via Nitro routes

04

Supports drafts and scheduled publishing (15-minute margin), automatically hidden in production

05

Includes paginated post lists, pagination by tag, archives, about page, fuzzy search, and homepage featured/recent sections

06

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.

NuxtAstroBlog

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. 1

    Install dependencies with pnpm install, start local development with pnpm dev (default http://localhost:3000)

  2. 2

    Generate a static site with pnpm generate, output located in .output/public

  3. 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. 4

    Posts are Markdown files under content/posts/, drafts are marked with draft: true, and the frontmatter structure is in content.config.ts

  5. 5

    The repository provides scripts/migrate-content.mjs to convert original AstroPaper posts from MDX to MDC and rewrite image paths

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This 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

View-transition names on post titles/tags (document-level transitions are enabled via `experimental.viewTransition`)

Original README
https://github.com/alexanderop/nuxt-paper/blob/main/LICENSEhttps://github.com/alexanderop/nuxt-paper/blob/main/README.md

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`)
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.