A production-ready Nuxt 4 starter template with authentication, organizations, and more.
- Nuxt 4 with latest features and compatibility
- Nuxt UI v4 for beautiful, accessible components
- Better Auth for authentication (email/password, OAuth, magic links, 2FA)
- Organizations with RBAC (roles and permissions)
- Profile Management with avatar uploads
- Email System with beautiful HTML templates (password reset, verification, invitations)
- Security First
- Environment validation with Zod
- Security headers (CSP, HSTS, X-Frame-Options, etc.)
- CSRF protection
- Rate limiting (150 req/min)
- Password breach checking (Have I Been Pwned)
- Strong password requirements
- Theme Management (dark/light mode, custom colors)
- Cloudinary for image uploads
- PostgreSQL with Drizzle ORM
- Testing with Vitest + Playwright E2E
- Docker ready for deployment
- Turborepo monorepo structure
- Framework: Nuxt 4
- UI: Nuxt UI v4, Tailwind CSS v4
- Auth: Better Auth
- Database: PostgreSQL, Drizzle ORM
- Utilities: VueUse, Motion Vue
- Build: Turborepo, pnpm
- Node.js 20+
- pnpm 9+
- Docker (for database)
- Clone the repository:
git clone https://github.com/your-repo/unuxt.git
cd unuxt- Install dependencies:
pnpm install- Copy environment variables:
cp .env.example .env- Start the database:
docker-compose -f docker-compose.dev.yml up -d- Run database migrations:
pnpm db:push- Start the development server:
pnpm devVisit http://localhost:3000
unuxt/
βββ apps/
β βββ web/ # Main Nuxt 4 application
βββ packages/
β βββ ui/ # Shared UI components layer
β βββ db/ # Drizzle ORM schema
β βββ auth/ # Better Auth configuration
β βββ types/ # Shared TypeScript types
β βββ utils/ # Shared utilities
β βββ config/ # ESLint, TypeScript configs
βββ docker/ # Docker configuration
βββ docker-compose.yml # Production Docker setup
βββ docker-compose.dev.yml # Development Docker setup
βββ turbo.json # Turborepo configuration
# Development
pnpm dev # Start all apps in dev mode
pnpm dev:web # Start only the web app
# Build
pnpm build # Build all packages and apps
# Database
pnpm db:generate # Generate migrations
pnpm db:migrate # Run migrations
pnpm db:push # Push schema changes
pnpm db:studio # Open Drizzle Studio
# Quality
pnpm lint # Run ESLint
pnpm lint:fix # Fix ESLint issues
pnpm typecheck # Run TypeScript checksSee .env.example for all required environment variables.
Key variables:
DATABASE_URL- PostgreSQL connection stringBETTER_AUTH_SECRET- Auth secret (min 32 chars)GOOGLE_CLIENT_ID/SECRET- Google OAuthGITHUB_CLIENT_ID/SECRET- GitHub OAuthCLOUDINARY_*- Cloudinary credentials
# Build and start
docker-compose up -d
# View logs
docker-compose logs -f# Build
pnpm build
# Start
node apps/web/.output/server/index.mjsMIT