NuxtVueBlogDirectory site

Nuxt_Mkdirs — Nuxt Blog Template

By PBHAHAHA

An open-source directory site template built on Nuxt and Sanity CMS, offering three homepage layouts, OAuth login, Stripe/Creem payments, Resend email, and AI auto-fill, under the MIT license.

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-09-30View source

What stands out

A quick read of the recorded project description.

01

Content is managed by the Sanity headless CMS, with no self-hosted database required

02

Offers three homepage layouts, with built-in dark mode and responsive adaptation

03

Supports Google and GitHub OAuth login

04

Integrates two payment channels: Stripe and Creem

05

Optional AI auto-fill extracts website information and suggests categories and tags on submission

06

Uses Resend to send transactional emails and supports newsletter subscriptions

Template Details

Nuxt_Mkdirs is an open-source directory website template built with Nuxt, with content data managed by the Sanity headless CMS and no self-hosted database required. The template provides three homepage layouts and includes Google / GitHub OAuth login, two payment channels (Stripe and Creem), Resend transactional email and newsletter subscriptions, plus an optional AI auto-fill feature (when submitting a site, it automatically extracts the name and description, generates an introduction, downloads and uploads the logo image, and suggests categories and tags). Styling is based on TailwindCSS and Radix Vue, with dark mode and responsive layout support. Deployment targets NuxtHub and Cloudflare Workers; the README states that the NuxtHub Admin deployment method is deprecated and Wrangler should be used instead.

Before use, you need to prepare several external services yourself: a Sanity project ID, dataset, and API token; a Resend API key, sending domain, and Audience ID; Stripe or Creem keys and webhook secrets; Google / GitHub OAuth credentials and an Auth Secret. AI auto-fill is optional and requires configuring an API key for one of google, deepseek, or openai. The repository is released under the MIT license, allowing free use, modification, commercial use, and distribution of the code, but third-party assets such as demo images, fonts, and icons must be checked against their respective licenses, and external services such as domain, hosting, database, payment, or AI may incur separate charges.

NuxtVueBlogDirectory site

Is it right for your project?

Use Cases

  • Building a directory site that lists websites, tools, or services
  • Adding a paid submission or membership upgrade flow to a directory site
  • Using Sanity as a content backend to operate directory entries and a blog
  • Deploying to Cloudflare Workers to host the frontend and APIs

Suitable For

  • Frontend developers familiar with Nuxt and Vue
  • Content-oriented projects willing to use Sanity as a CMS
  • Directory-type sites that need OAuth login and payment capabilities
  • Teams planning to deploy to Cloudflare Workers

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Requires Node.js 18+ and pnpm 8+; after cloning the repository, run pnpm install and copy .env.example to .env

  2. 2

    Create a project in Sanity and obtain the Project ID, dataset, and an API Token with Editor permissions, and configure CORS origins

  3. 3

    Configure environment variables such as Resend, Stripe or Creem, Google / GitHub OAuth, and Auth Secret as needed

  4. 4

    AI auto-fill is optional; choose among google, deepseek, or openai and enter the corresponding API key

  5. 5

    Deploy with Wrangler: copy wrangler.example.jsonc to wrangler.jsonc, fill in the variables, then run pnpm build and npx wrangler deploy

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version in the public repository under the MIT license; the free scope is the code of that version and does not mean external services or third-party assets are free.

Must comply with when using

  • The code of this version may be used, modified, used commercially, and distributed free of charge.
  • 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

  • Before use, you must register a Sanity account and create a project to obtain a Project ID, dataset, and an API Token with Editor permissions; otherwise, content management features will not run.
  • Email and newsletter features depend on a Resend account; you need to verify the sending domain and configure the API key and Audience ID, which is an external service that may charge fees.
  • Payment features require applying for a Stripe account yourself and configuring keys and webhook secrets; Stripe charges per transaction.
  • The Creem payment channel requires registering a Creem account and configuring the API key, webhook secret, and product ID, and is an external service.
  • OAuth login requires creating applications in Google Cloud Console and GitHub respectively and configuring client IDs and secrets.
  • AI auto-fill is optional; enabling it requires your own API key for google, deepseek, or openai, and may incur usage fees.
  • Deployment requires switching to Wrangler and configuring Cloudflare Workers environment variables; hosting and domains may incur fees.
  • Demo images, fonts, icons, and other third-party assets must be checked against 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 separate charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

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

Original README

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

Original README

NUXT_STRIPE_SECRET_KEY=sk_xxxxx

Original README

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

Original README

NUXT_AUTH_GOOGLE_CLIENT_ID=xxxxx

Original README

# Choose AI provider: google, deepseek, openai

Original README

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

Original README
https://github.com/PBHAHAHA/Nuxt_Mkdirs/blob/main/LICENSEhttps://github.com/PBHAHAHA/Nuxt_Mkdirs/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 · 92 / 100
Technologies
Nuxt · Vue
Website type
Blog · Directory 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
2025-12-20
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: 4b29509b67be469b6179975000c82eaa5373bdc330b910612b2a28c33bf1b414

2026-10-01T14:37:20.562Z

Source file / repository
<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>
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.