NuxtVue博客目录站

Nuxt_Mkdirs — Nuxt 博客模板

作者 PBHAHAHA

基于 Nuxt 与 Sanity CMS 的开源目录站模板,提供三套首页布局、OAuth 登录、Stripe/Creem 支付、Resend 邮件与 AI 自动填充,采用 MIT 许可。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-09-30查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

内容由 Sanity 无头 CMS 管理,无需自建数据库

02

提供三套首页布局,内置深色模式与响应式适配

03

支持 Google 与 GitHub OAuth 登录

04

集成 Stripe 与 Creem 两种支付通道

05

可选 AI 自动填充,提交时提取网站信息并建议分类标签

06

使用 Resend 发送事务邮件并支持 Newsletter 订阅

模板详细介绍

Nuxt_Mkdirs 是一个用 Nuxt 构建的开源目录网站(directory website)模板,内容数据由 Sanity 无头 CMS 管理,无需自建数据库。模板提供三套首页布局,并内置 Google / GitHub OAuth 登录、Stripe 与 Creem 两种支付通道、Resend 事务邮件与 Newsletter 订阅,以及可选的 AI 自动填充功能(提交网站时自动提取名称、描述、生成介绍、下载并上传 logo 图片、建议分类与标签)。样式基于 TailwindCSS 与 Radix Vue,支持深色模式与响应式布局。部署方向为 NuxtHub 与 Cloudflare Workers,README 说明 NuxtHub Admin 部署方式已弃用,改用 Wrangler。

使用前需要自行准备多项外部服务:Sanity 项目 ID、数据集与 API Token,Resend API Key、发信域名与 Audience ID,Stripe 或 Creem 的密钥与 Webhook 密钥,Google / GitHub OAuth 凭据以及 Auth Secret;AI 自动填充为可选项,需配置 google、deepseek 或 openai 之一的 API Key。仓库以 MIT 许可发布,允许免费使用、修改、商用和分发代码,但演示图片、字体、图标等第三方素材需按各自许可核对,域名、托管、数据库、支付或 AI 等外部服务可能另行收费。

NuxtVue博客目录站

适合你的项目吗?

适用场景

  • 搭建收录网站、工具或服务的目录站
  • 为目录站增加付费提交或会员升级流程
  • 用 Sanity 作为内容后台运营目录条目与博客
  • 部署到 Cloudflare Workers 承载前端与接口

适合人群

  • 熟悉 Nuxt 与 Vue 的前端开发者
  • 愿意使用 Sanity 作为 CMS 的内容型项目
  • 需要 OAuth 登录与支付能力的目录类站点
  • 计划部署到 Cloudflare Workers 的团队

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要 Node.js 18+ 与 pnpm 8+,克隆仓库后执行 pnpm install 并复制 .env.example 为 .env

  2. 2

    在 Sanity 创建项目并获取 Project ID、数据集与 Editor 权限的 API Token,同时配置 CORS 来源

  3. 3

    按需配置 Resend、Stripe 或 Creem、Google / GitHub OAuth 及 Auth Secret 等环境变量

  4. 4

    AI 自动填充为可选功能,需在 google、deepseek、openai 中选择并填入对应 API Key

  5. 5

    部署使用 Wrangler:复制 wrangler.example.jsonc 为 wrangler.jsonc 并填写变量后执行 pnpm build 与 npx wrangler deploy

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 使用前必须注册 Sanity 账号并创建项目,获取 Project ID、数据集与 Editor 权限 API Token,否则内容管理功能无法运行。
  • 邮件与 Newsletter 功能依赖 Resend 账号,需验证发信域名并配置 API Key 与 Audience ID,属外部付费可能服务。
  • 支付功能需自行申请 Stripe 账号并配置密钥与 Webhook 密钥,Stripe 按交易收费。
  • Creem 支付通道需注册 Creem 账号并配置 API Key、Webhook 密钥与产品 ID,属外部服务。
  • OAuth 登录需在 Google Cloud Console 与 GitHub 分别创建应用并配置客户端 ID 与密钥。
  • AI 自动填充为可选功能,启用需自备 google、deepseek 或 openai 的 API Key,可能产生调用费用。
  • 部署需改用 Wrangler 并配置 Cloudflare Workers 环境变量,托管与域名可能产生费用。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

Create a [Sanity account](https://www.sanity.io/signup)

README 原文

Create a [Resend account](https://resend.com/)

README 原文

NUXT_STRIPE_SECRET_KEY=sk_xxxxx

README 原文

[Creem](https://creem.io/) supports registration with Chinese ID

README 原文

NUXT_AUTH_GOOGLE_CLIENT_ID=xxxxx

README 原文

# Choose AI provider: google, deepseek, openai

README 原文

NuxtHub Admin deployment will be deprecated on December 31, 2024. Please use Wrangler for deployment.

README 原文
https://github.com/PBHAHAHA/Nuxt_Mkdirs/blob/main/LICENSEhttps://github.com/PBHAHAHA/Nuxt_Mkdirs/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-01。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 92 / 100
技术栈
Nuxt · Vue
网站类型
博客 · 目录站
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2025-12-20
截图检查日期
2026-10-01

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Nuxt。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。

查看当时使用的来源资料

SHA-256: 4b29509b67be469b6179975000c82eaa5373bdc330b910612b2a28c33bf1b414

2026-10-01T14:37:20.562Z

来源文件 / 仓库
<div align="center">

<img src="./public/logo.png" alt="Nuxt Mkdirs" width="120" />

# Nuxt Mkdirs

**Open-source directory website template built with Nuxt 4**

[![Nuxt](https://img.shields.io/badge/Nuxt-4.x-00DC82?style=flat-square&logo=nuxt.js)](https://nuxt.com)
[![Vue](https://img.shields.io/badge/Vue-3.x-4FC08D?style=flat-square&logo=vue.js)](https://vuejs.org)
[![TailwindCSS](https://img.shields.io/badge/TailwindCSS-4.x-06B6D4?style=flat-square&logo=tailwindcss)](https://tailwindcss.com)
[![License](https://img.shields.io/badge/License-MIT-yellow?style=flat-square)](LICENSE)

[English](./README.md) | [简体中文](./README.zh-CN.md)

[Live Demo](https://demo.nuxt-mkdirs.com) · [Documentation](#-configuration-guide) · [Report Bug](https://github.com/PBHAHAHA/Nuxt_Mkdirs/issues)

</div>

---

## ✨ Features

- 🎨 **3 Homepage Layouts** - Multiple styles, ready to use out of the box
- 📦 **Sanity CMS** - Headless CMS, no database configuration needed
- 🔐 **Multiple Auth Methods** - Google / GitHub OAuth login
- 💳 **Payment Integration** - Supports Stripe and Creem
- 📧 **Email Service** - Resend for transactional emails + Newsletter
- 🤖 **AI Auto-fill** - Automatically extract website info with AI
- 🌙 **Dark Mode** - Auto-follows system theme
- 📱 **Responsive Design** - Perfect mobile adaptation
- ⚡ **NuxtHub Deploy** - One-click deploy to Cloudflare

## 📸 Screenshot

![Homepage](./public/docsimg/home.png)

## 🛠️ Tech Stack

| Category | Technology |
|----------|------------|
| Framework | Nuxt 4, Vue 3 |
| Styling | TailwindCSS 4, Radix Vue |
| CMS | Sanity |
| Auth | Auth.js |
| Payment | Stripe, Creem |
| Email | Resend |
| Deploy | NuxtHub (Cloudflare) |

## 🚀 Quick Start

### Prerequisites

- Node.js 18+
- pnpm 8+

### Installation

```bash
# Clone the repository
git clone https://github.com/PBHAHAHA/Nuxt_Mkdirs.git
cd Nuxt_Mkdirs

# Install dependencies
pnpm install

# Copy environment variables
cp .env.example .env

# Start development server
pnpm dev
```

Visit http://localhost:3000 to see the result.

### Build & Deploy

```bash
# Build for production
pnpm build

# Preview locally
pnpm preview
```

## 🚀 Deployment

This project uses NuxtHub v0.10+ with Cloudflare Workers.

> ⚠️ **Note**: NuxtHub Admin deployment will be deprecated on December 31, 2024. Please use Wrangler for deployment.

### Deploy with Wrangler

1. Copy the wrangler configuration:

```bash
cp wrangler.example.jsonc wrangler.jsonc
```

2. Edit `wrangler.jsonc` and fill in your environment variables.

3. Build and deploy:

```bash
pnpm build
npx wrangler deploy
```

Your site will be deployed to `https://nuxt-mkdirs.<your-account>.workers.dev`.

To use a custom domain, configure it in [Cloudflare Dashboard](https://dash.cloudflare.com/) > Workers & Pages > your project > Settings > Domains & Routes.

## ⚙️ Configuration Guide

### 1. Sanity CMS Setup

Nuxt Mkdirs uses [Sanity](https://www.sanity.io/) as a headless CMS to manage all content data.

1. Create a [Sanity account](https://www.sanity.io/signup)
2. Create a new project and get the Project ID
3. Create an API Token (select Editor permission)
4. Configure CORS origins

![Sanity CORS Configuration](./public/docsimg/sanity%20cors.PNG)

```bash
# .env configuration
NUXT_PUBLIC_SANITY_PROJECT_ID=your_project_id
NUXT_PUBLIC_SANITY_DATASET=production
NUXT_SANITY_API_TOKEN=your_api_token
```

5. Deploy Sanity Studio

```bash
pnpm dlx sanity deploy
```

![Sanity Studio](./public/docsimg/sanity%20studio.png)

### 2. Email Setup (Resend)

1. Create a [Resend account](https://resend.com/)
2. Add and verify your domain
3. Create an API Key

![Resend API Key](./public/docsimg/resend.png)

4. Configure Audience ID (for Newsletter)

![Resend Audience](./public/docsimg/resend%202.png)
![Resend Audience ID](./public/docsimg/resend%203.png)

```bash
# .env configuration
NUXT_RESEND_API_KEY=re_xxxxx
[email protected]
NUXT_RESEND_AUDIENCE_ID=xxxxx
```

### 3. Payment Setup

#### Stripe (International)

```bash
NUXT_STRIPE_SECRET_KEY=sk_xxxxx
NUXT_STRIPE_WEBHOOK_SECRET=whsec_xxxxx
NUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_xxxxx
```

#### Creem (China-friendly)

[Creem](https://creem.io/) supports registration with Chinese ID, more friendly for Chinese developers.

```bash
NUXT_CREEM_API_KEY=xxxxx
NUXT_CREEM_WEBHOOK_SECRET=xxxxx
NUXT_CREEM_TEST_MODE=true
NUXT_PUBLIC_CREEM_PRO_PRODUCT_ID=xxxxx
```

### 4. OAuth Authentication Setup

#### Google OAuth

1. Visit [Google Cloud Console](https://console.cloud.google.com/apis/credentials)
2. Create an OAuth Client ID

![Google Credentials](./public/docsimg/google%201.png)
![Google OAuth Create](./public/docsimg/google2.png)
![Google OAuth Config](./public/docsimg/google3.png)

```bash
# .env configuration
NUXT_AUTH_GOOGLE_CLIENT_ID=xxxxx
NUXT_AUTH_GOOGLE_CLIENT_SECRET=xxxxx
```

#### GitHub OAuth

1. Visit [GitHub Developer Settings](https://github.com/settings/developers)
2. Create an OAuth App

```bash
NUXT_AUTH_GITHUB_CLIENT_ID=xxxxx
NUXT_AUTH_GITHUB_CLIENT_SECRET=xxxxx
```

#### Auth Secret

```bash
# Generate secret
openssl rand -base64 32

# .env configuration
NUXT_AUTH_SECRET=your_generated_secret
```

### 5. AI Configuration (Optional)

Enable AI-powered auto-fill feature for website submissions.

```bash
# Choose AI provider: google, deepseek, openai
NUXT_AI_PROVIDER=google

# Google Generative AI (https://aistudio.google.com/apikey)
NUXT_GOOGLE_AI_API_KEY=xxxxx

# DeepSeek (https://platform.deepseek.com/api_keys)
NUXT_DEEPSEEK_API_KEY=xxxxx

# OpenAI (https://platform.openai.com/settings/organization/api-keys)
NUXT_OPENAI_API_KEY=xxxxx
```

When configured, users can click the "AI Auto-fill" button to automatically:
- Extract website name and description
- Generate detailed introduction
- Download and upload logo/images
- Suggest categories and tags

## 📁 Project Structure

```
nuxt-mkdirs/
├── app/
│   ├── components/     # Vue components
│   ├── composables/    # Composables
│   ├── layouts/        # Layout components
│   ├── pages/          # Page routes
│   └── utils/          # Utility functions
├── server/
│   ├── api/            # API routes
│   └── utils/          # Server utilities
├── sanity/
│   └── schemas/        # Sanity schemas
└── public/             # Static assets
```

## 🤝 Contributing

Contributions are welcome! Please read the [Contributing Guide](CONTRIBUTING.md).

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## 📄 License

This project is licensed under the [MIT](LICENSE) License.

## 💖 Support

If this project helps you, please consider:

- ⭐ Give it a Star
- 🐛 Submit Issues
- 📢 Share with others
- <a href="https://www.buymeacoffee.com/pubing967" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;" ></a>


## 📮 Contact

<!-- - WeChat: w314709923x -->
- GitHub: [@PBHAHAHA](https://github.com/PBHAHAHA)


---

<div align="center">
  Made with ❤️ by <a href="https://github.com/PBHAHAHA">PBHAHAHA</a>
</div>
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。