--- name: nextjs-stack description: Next.js 16+ complete stack with App Router, Prisma 7, Better Auth, shadcn/ui, TanStack Form, Zustand. Use as the master reference combining all framework skills. versions: nextjs: 16 react: 19 prisma: 7 better-auth: 1.2 shadcn-ui: 3.8.0 tailwindcss: 4 user-invocable: true related-skills: nextjs-16, prisma-7, better-auth, nextjs-shadcn, nextjs-tanstack-form, nextjs-zustand, nextjs-i18n, solid-nextjs --- # Next.js Complete Stack Master skill combining all framework documentation for modern Next.js development. ## Agent Workflow (MANDATORY) Before ANY implementation, use `TeamCreate` to spawn 3 agents: 1. **fuse-ai-pilot:explore-codebase** - Analyze project structure and existing patterns 2. **fuse-ai-pilot:research-expert** - Verify latest docs for all stack technologies 3. **mcp__context7__query-docs** - Check integration compatibility After implementation, run **fuse-ai-pilot:sniper** for validation. --- ## Overview ### When to Use - Starting a new Next.js 16 project from scratch - Need the complete recommended technology stack - Building production applications with authentication - Implementing forms, state management, and UI components - Understanding how all parts fit together ### Technology Stack | Layer | Technology | Skill Reference | |-------|------------|-----------------| | Framework | Next.js 16 (App Router) | `nextjs-16` | | Database ORM | Prisma 7 | `prisma-7` | | Authentication | Better Auth 1.2 | `better-auth` | | UI Components | shadcn/ui 3.8.0 | `nextjs-shadcn` | | Forms | TanStack Form | `nextjs-tanstack-form` | | State | Zustand | `nextjs-zustand` | | Styling | Tailwind CSS 4 | `tailwindcss` | | i18n | next-intl 4.0 | `nextjs-i18n` | --- ## Stack Decisions ### Why These Technologies | Choice | Reason | |--------|--------| | **Better Auth** over NextAuth.js | TypeScript-first, plugin system, self-hosted | | **Prisma 7** over Drizzle | Mature ecosystem, migrations, studio | | **TanStack Form** over React Hook Form | Modern API, server actions, type safety | | **Zustand** over Redux/Context | Minimal boilerplate, SSR-friendly | | **shadcn/ui** over MUI/Chakra | Copy/paste ownership, Radix primitives | ### Forbidden Patterns - **NextAuth.js** - Use Better Auth instead - **Pages Router** - Use App Router for new projects - **React Hook Form** - Use TanStack Form - **Client Components by default** - Server Components first --- ## SOLID Architecture ### Project Structure ``` src/ ├── app/ # Route handlers only │ ├── [locale]/ # i18n routing │ ├── api/ # API routes │ └── layout.tsx # Root layout ├── modules/ │ ├── cores/ # Shared infrastructure │ │ ├── i18n/ # Internationalization │ │ ├── shadcn/ # UI components │ │ ├── lib/ # Utilities (cn, etc.) │ │ └── db/ # Prisma client │ ├── auth/ # Authentication module │ └── [feature]/ # Feature modules └── proxy.ts # Route protection ``` ### Module Pattern Each feature module contains: - **src/services/** - Business logic - **src/hooks/** - React hooks - **src/components/** - UI components - **src/interfaces/** - TypeScript types --- ## Integration Points ### Authentication + Database Better Auth integrates with Prisma adapter for user storage. Schema in `prisma/schema.prisma` includes User, Session, Account, Verification tables. ### Forms + UI + Validation TanStack Form with Zod validation using shadcn/ui Field components. Server Actions for form submission. ### State + Server Components Zustand stores for client state only. Server Components fetch data directly. No global state for server data. ### i18n + Routing next-intl with `[locale]` segment. proxy.ts handles locale detection and redirects. --- ## Quick Reference ### Next.js 16 | Feature | Reference | |---------|-----------| | App Router | `nextjs-16/app-router.md` | | Server Components | `nextjs-16/server-components.md` | | Caching | `nextjs-16/caching.md`, `cache-components.md` | | proxy.ts | `nextjs-16/proxy.md` | ### Prisma 7 | Feature | Reference | |---------|-----------| | Schema | `prisma-7/schema.md` | | Client | `prisma-7/client.md` | | Migrations | `prisma-7/migrations.md` | | TypedSQL | `prisma-7/typed-sql.md` | ### Better Auth | Feature | Reference | |---------|-----------| | Setup | `better-auth/installation.md` | | OAuth | `better-auth/providers/` | | Plugins | `better-auth/plugins/` | | Prisma adapter | `better-auth/adapters/prisma.md` | --- ## Best Practices 1. **Server Components default** - Add `'use client'` only when needed 2. **Colocate code** - Keep related code in feature modules 3. **Type everything** - Full TypeScript, no any 4. **Fetch where used** - No prop drilling for data 5. **Validate at boundary** - Zod schemas for all inputs 6. **Cache explicitly** - Use `use cache` directive --- ## Getting Started 1. Review `nextjs-16` for App Router fundamentals 2. Set up `prisma-7` for database 3. Add `better-auth` for authentication 4. Install `nextjs-shadcn` components 5. Configure `nextjs-i18n` if multilingual 6. Add `nextjs-zustand` for client state