Modern, Production-ready template powered by Next.js 15 and React 19
- Framework: Next.js 15 with React 19
- Database ORM: Drizzle ORM with PostgreSQL
- Styling: Tailwind CSS + Shadcn/ui
- Theme: Dark/Light mode using next-themes
- Type Safety: TypeScript + Zod schema validation
- Development Tools: ESLint, Prettier, Husky, Lint-staged
This template uses type-safe environment variables with Zod validation.
# .env.local
NODE_ENV=development
DB_HOST=localhost
DB_USER=your_db_user
DB_PASSWORD=your_password
DB_NAME=your_db_name
DB_PORT=5432
DATABASE_URL=postgresql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}
export const envSchema = z.object({
NODE_ENV: z.enum(['development', 'production']),
DB_HOST: z.string(),
DB_USER: z.string(),
DB_PASSWORD: z.string(),
DB_NAME: z.string(),
DB_PORT: z.coerce.number(),
DATABASE_URL: z.string().url(),
DB_MIGRATING: z
.string()
.refine((s) => s === 'true' || s === 'false')
.transform((s) => s === 'true')
.optional(),
});
- Clone & create your project:
git clone https://github.com/frshaad/next-starter.git my-project
cd my-project
pnpm install
- Set up environment variables:
cp .env.example .env.local
- Initialize database:
pnpm db:generate # Generate migrations
pnpm db:push # Push schema to database
pnpm db:studio # (Optional) Open Drizzle Studio
- Start development server:
pnpm dev
pnpm dev # Start development server
pnpm build # Build production application
pnpm start # Start production server
pnpm lint # Lint code with ESLint
pnpm format # Format code with Prettier
pnpm db:generate # Generate Drizzle migrations
pnpm db:push # Push migrations to database
pnpm db:studio # Open Drizzle Studio
.
βββ src/
β βββ app/ # Next.js app router pages
β βββ components/ # React components
β β βββ ui/ # Shadcn UI components
β β βββ shared/ # Shared components
β βββ lib/ # Utility functions
β βββ db/ # Database configuration
β βββ env/ # Environment validation
β βββ utils/ # Helper functions
βββ drizzle/ # Database migrations
βββ public/ # Static assets
βββ types/ # TypeScript types
- Push your code to GitHub
- Import to Vercel
- Set environment variables
- Deploy!
MIT License - See LICENSE.md