create-nuxt-base

February 10, 2026 ยท View on GitHub

A CLI tool to scaffold a production-ready Nuxt 4 application with TypeScript, Tailwind CSS v4, NuxtUI v4, and modern tooling.

Quick Start

npx create-nuxt-base my-awesome-project
cd my-awesome-project
pnpm run dev

The development server starts at http://localhost:3001

What's Included

Core Framework

TechnologyVersionDescription
Nuxt4.xVue 3 meta-framework with SSR support
TypeScript5.9.xStrict type checking enabled
Tailwind CSS4.xUtility-first CSS with Vite plugin
NuxtUI4.xComponent library with dark mode

Authentication (Better Auth)

Complete authentication system using Better Auth:

FeatureDescription
Email/PasswordStandard auth with client-side SHA256 hashing
Two-Factor (2FA)TOTP-based 2FA with backup codes
Passkey/WebAuthnPasswordless authentication (Touch ID, Face ID, etc.)
Password ResetEmail-based password reset flow
Session ManagementSSR-compatible cookie-based sessions

Pre-built auth pages: login, register, forgot-password, reset-password, 2fa

๐Ÿ“– See AUTH.md for detailed documentation

State & Data

PackagePurpose
PiniaState management
VueUseVue composition utilities
@hey-api/client-fetchType-safe API client
ValibotSchema validation for forms

SEO & Analytics

  • @nuxtjs/seo - Sitemap, robots.txt, OG images
  • @nuxtjs/plausible - Privacy-friendly analytics
  • @nuxt/image - Image optimization with IPX

Developer Experience

ToolPurpose
OxLintFast linting
OxFmtCode formatting
PlaywrightE2E testing
@lenne.tech/bug.ltBug reporting to Linear (dev only)
dayjs-nuxtDate/time handling

File Upload

  • TUS resumable upload support (tus-js-client)
  • Pre-built TusFileUpload.vue component

Docker Support

  • Dockerfile.dev for containerized development
  • Hot reload enabled

Project Structure

my-project/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ assets/css/       # Tailwind CSS
โ”‚   โ”œโ”€โ”€ components/       # Vue components (auto-imported)
โ”‚   โ”‚   โ”œโ”€โ”€ Modal/        # Modal components
โ”‚   โ”‚   โ”œโ”€โ”€ Transition/   # Transition components
โ”‚   โ”‚   โ””โ”€โ”€ Upload/       # File upload components
โ”‚   โ”œโ”€โ”€ composables/      # Composables (auto-imported)
โ”‚   โ”œโ”€โ”€ interfaces/       # TypeScript interfaces
โ”‚   โ”œโ”€โ”€ layouts/          # Nuxt layouts
โ”‚   โ”œโ”€โ”€ lib/              # Auth client configuration
โ”‚   โ”œโ”€โ”€ middleware/       # Route middleware (auth, admin, guest)
โ”‚   โ”œโ”€โ”€ pages/            # File-based routing
โ”‚   โ”‚   โ”œโ”€โ”€ auth/         # Authentication pages
โ”‚   โ”‚   โ””โ”€โ”€ app/          # Protected app pages
โ”‚   โ”œโ”€โ”€ utils/            # Utility functions
โ”‚   โ””โ”€โ”€ app.config.ts     # NuxtUI configuration
โ”œโ”€โ”€ docs/                 # Dev-only documentation layer
โ”œโ”€โ”€ tests/                # Playwright E2E tests
โ”œโ”€โ”€ nuxt.config.ts        # Nuxt configuration
โ”œโ”€โ”€ openapi-ts.config.ts  # API type generation config
โ””โ”€โ”€ playwright.config.ts  # E2E test configuration

Available Scripts

ScriptDescription
pnpm run devStart development server
pnpm run buildBuild for production
pnpm run previewPreview production build
pnpm run generate-typesGenerate TypeScript types from OpenAPI
pnpm run testRun Playwright E2E tests
pnpm run lintRun OxLint
pnpm run formatRun OxFmt
pnpm run checkRun lint + format check
pnpm run fixAuto-fix lint + format issues

Environment Variables

Create a .env file based on .env.example:

# Required
SITE_URL=http://localhost:3001
API_URL=http://localhost:3000
APP_ENV=development
NODE_ENV=development

# Optional
WEB_PUSH_KEY=                # Web push notifications
LINEAR_API_KEY=              # Bug reporting
LINEAR_TEAM_NAME=            # Bug reporting
LINEAR_PROJECT_NAME=         # Bug reporting
STORAGE_PREFIX=base-dev      # Local storage prefix

Requirements

  • Node.js >= 22
  • pnpm >= 9

License

MIT