An open API service indexing awesome lists of open source software.

https://github.com/michalbastrzyk/nextjs-starter-kit

A modern, production-ready Next.js starter kit featuring shadcn/ui components, Drizzle ORM, TypeScript, and Tailwind CSS. Built with best practices and developer experience in mind.
https://github.com/michalbastrzyk/nextjs-starter-kit

boilerplate drizzle-orm eslint nextjs nextjs-starter prettier react react-hook-form shadcn-ui starter-kit tailwindcss template typescript zod

Last synced: 10 months ago
JSON representation

A modern, production-ready Next.js starter kit featuring shadcn/ui components, Drizzle ORM, TypeScript, and Tailwind CSS. Built with best practices and developer experience in mind.

Awesome Lists containing this project

README

          

# Next.js Starter Kit

A modern, production-ready Next.js starter kit with everything you need to build fast, beautiful, and responsive web applications.

## ๐Ÿš€ Features

- โšก๏ธ **Next.js 15** with App Router
- ๐ŸŽจ **Tailwind CSS** for styling
- ๐Ÿ“ฆ **TypeScript** for type safety
- ๐ŸŽฏ **ESLint** & **Prettier** for code quality
- ๐Ÿ“ฑ **Responsive** design
- ๐ŸŽจ **shadcn/ui** components
- ๐Ÿ“Š **Drizzle ORM** for database
- ๐Ÿ” **Better-Auth** for authentication with **role-based permissions** with type-safe checks
- ๐Ÿ“ง **React Email** for email system with **Mailpit** for local email testing
- โ˜๏ธ **LocalStack** for local AWS service testing (e.g., S3)
- ๐Ÿ”’ **next-safe-action** for type-safe server actions
- ๐Ÿ“Š **shadcn-table** for data tables
- ๐Ÿ”„ **React Hook Form** for forms
- ๐Ÿ“ **Zod** for validation
- ๐ŸŽจ **Tailwind Animate** for animations
- ๐Ÿ“ฑ **Mobile First** approach
- ๐Ÿงช **Playwright** for E2E testing
- โšก๏ธ **Vitest** for unit testing

## ๐Ÿ“ Project Structure

```
src/
โ”œโ”€โ”€ app/ # Next.js app router pages and layouts
โ”œโ”€โ”€ components/ # Reusable UI components
โ”œโ”€โ”€ config/ # Configuration files
โ”œโ”€โ”€ emails/ # Email templates using React Email
โ”œโ”€โ”€ lib/ # Utility functions and shared logic
โ”œโ”€โ”€ server/ # Server-side code (DB, Auth, API logic)
โ””โ”€โ”€ env.js # Environment variables validation
e2e/ # End-to-end tests with Playwright
โ”œโ”€โ”€ auth/ # Authentication-related tests
โ”œโ”€โ”€ navigation/ # Navigation flow tests
โ”œโ”€โ”€ fixtures/ # Test fixtures and helpers
โ””โ”€โ”€ utils/ # Test utilities
temp/ # Temporary files and folder
โ”œโ”€โ”€ localstack/ # LocalStack configuration for AWS services
โ”œโ”€โ”€ mailpit/ # Mailpit configuration for local email testing
โ”œโ”€โ”€ playwright-report/ # Playwright test reports
โ””โ”€โ”€ playwright-results/ # Playwright test results
```

## ๐Ÿš€ Getting Started

1. **Clone the repository**

```bash
git clone https://github.com/yourusername/nextjs-starter-kit.git
cd nextjs-starter-kit
```

2. **Install dependencies**

```bash
pnpm install
```

3. **Set up environment variables**

Edit `.env` with your configuration.

4. **Start the development server and Docker services**

The `docker-compose.yml` includes services like Mailpit for email testing and LocalStack for emulating AWS services (like S3) locally.

```bash
docker-compose up -d # Start Mailpit, LocalStack, and other services
pnpm dev
```

5. **Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.**

6. **For email testing, access Mailpit at [http://localhost:8025](http://localhost:8025)**

## ๐Ÿ› ๏ธ Available Scripts

- `dev` - Start development server with Turbopack
- `build` - Build for production
- `start` - Start production server
- `lint` - Run ESLint
- `lint:fix` - Fix ESLint issues
- `typecheck` - Run TypeScript compiler check
- `format:write` - Format code with Prettier
- `format:check` - Check code formatting
- `db:push` - Push schema changes to the database (SQLite)
- `db:generate` - Generate DB migration files
- `db:migrate` - Apply DB migrations
- `db:studio` - Open Drizzle Studio GUI
- `email:dev` - Start React Email development server
- `test:unit` - Run unit tests with Vitest
- `test:e2e` - Run Playwright E2E tests
- `test:e2e:ui` - Run Playwright tests with UI mode

## ๐Ÿ“š Documentation

For more information about the technologies used in this starter kit:

- [Next.js Documentation](https://nextjs.org/docs)
- [Tailwind CSS Documentation](https://tailwindcss.com/docs)
- [shadcn/ui Documentation](https://ui.shadcn.com)
- [Drizzle ORM Documentation](https://orm.drizzle.team)
- [Better-Auth Documentation](https://www.better-auth.com/)
- [next-safe-action Documentation](https://next-safe-action.dev/docs/getting-started)
- [Mailpit Documentation](https://github.com/axllent/mailpit)
- [Vitest Documentation](https://vitest.dev/)
- [Playwright Documentation](https://playwright.dev/docs/intro)

## ๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## ๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.