Feature packed Next.js boilerplate. Zero setup. Edge ready.
Some features depend on environment variables (indicated in features list with 💡) and so require enabling. They are disabled by default so that the app runs without any setup. They can be enabled by uncommenting all lines under where @enable {feature}
appears.
View the repository branches for other feature sets (e.g. Bun)
- 🏗️ TypeScript - Configured to maximize type safety
- ⚙️ T3 Env - Environment variable validation
- 🌐 tRPC - Create end-to-end type-safe APIs that work in both client and server components
- ⚡💡 WebSockets - Real-time communication (using Pusher, but can be swapped out for alternatives)
- 🔗 integrates with tRPC for end-to-end type-safe events
- 💽💡 Drizzle - ORM with maximal type safety
- 🔒💡 Lucia Auth - Flexible and secure authentication
- 🔗💡 integrates with Drizzle to store auth data
- 📏 ESLint - Consistent code standards
- ✨ Prettier - Consistent code styling
- 🎨 Tailwind CSS - Utility-first CSS framework
- 🧩 shadcn/ui - Components built with Radix UI and Tailwind CSS
- 📝 MDX - Use markdown with components
- 📁 Absolute imports - Easier and cleaner module imports
- 💻 VS Code configurations - Configurations for easy debugging
- 🧪 Vitest - Flexible testing framework
- 🐙 React Testing Library - Maintainable component testing
- 🔗 integrates with Vitest as your testing framework
- 🎭 Playwright - End-to-end testing against multiple environments
- 📊 Bundle analyzer - Analyze bundle sizes in each environment with
pnpm run build:analyze
- 📦💡 next-pwa - Make your website as a progressive web app (PWA)
- 🐳 Docker - (local and production) Docker-compose and Dockerfiles for running anywhere
- 🔄 GitHub Actions - Robust CI/CD
🚀 Option 1: Clone and deploy with Vercel
📋 Option 2: Clone and run locally
- Fork this repository (uncheck 'Copy the
main
branch only` if you are interested in other branches / feature sets) - Clone your new repository
- Install dependencies and run the development server
-
with pnpm
pnpm install pnpm run dev
-
or with Docker
docker-compose --file docker/dev/docker-compose.yml up
.dockerignore
docker/
- Dockerfile and docker-compose.yml for development and production
💡 (requires enabling)
.github/workflows/ci.yml
- type-checking and linting (hence these errors are ignored innext.config.mjs
)
💡 (requires enabling)
src/app/api/auth
src/app/auth
src/components/auth.tsx
src/db/schemas/auth.ts)
store auth data in databasesrc/lib/auth.ts
types/lucia.d.ts
src/components/providers/theme-provider.tsx
src/components/ui/
src/components/theme-toggle.tsx
components.json
src/env.mjs
- configure environment variablesnext.config.mjs
- environment variables are validated at build-time
src/app/examples/client-component/page.tsx
- use in a client componentsrc/app/examples/server-component/page.tsx
- use in a server component
tsconfig.json
- all modifications from create-next-app are explained with commentstypes/reset.d.ts
- using ts-reset to increase type-safety
.vscode/extensions.json
- recommended workspace extensions.vscode/launch.json
- debug configurations.vscode/settings.json
- use project TypeScript version
💡 (requires enabling)