Environment Setup
In this section, we'll set up everything you need to start working with databases in Next.js. We'll use Prisma as our ORM (Object-Relational Mapping) tool and SQLite as our database for simplicity.
Why These Technologies?
- Prisma: Type-safe database client with excellent TypeScript support
- SQLite: Lightweight, file-based database perfect for development and small applications
- Next.js: Full-stack React framework with built-in API routes
Prerequisites
Node.js 18+
JavaScript runtime environment
Code Editor
VS Code recommended
Basic SQL
Understanding of database concepts
Step 1: Create a New Next.js Project
First, let's create a new Next.js project with TypeScript and Tailwind CSS:
npx create-next-app@latest my-database-app --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"
cd my-database-app
Step 2: Install Prisma
Install Prisma CLI and the Prisma Client:
npm install prisma @prisma/client
npm install -D prisma
Step 3: Initialize Prisma
Initialize Prisma in your project with SQLite as the database provider:
npx prisma init --datasource-provider sqlite
This command creates:
prisma/schema.prisma
- Your database schema file.env
- Environment variables file
Step 4: Configure Environment Variables
Your .env
file should contain:
# Database
DATABASE_URL="file:./dev.db"
Step 5: Set Up Prisma Client
Create a database utility file to manage your Prisma client connection:
import { PrismaClient } from '@prisma/client'
const globalForPrisma = globalThis as unknown as {
prisma: PrismaClient | undefined
}
export const prisma = globalForPrisma.prisma ?? new PrismaClient()
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma
Why This Pattern?
This pattern prevents multiple Prisma Client instances in development due to Next.js hot reloading. In production, a new instance is created normally.
Step 6: Install Additional Dependencies
For this tutorial, we'll also use Lucide React for icons:
npm install lucide-react
Verification
Let's verify everything is set up correctly. Your project structure should look like this:
my-database-app/
├── prisma/
│ └── schema.prisma
├── src/
│ ├── app/
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ └── page.tsx
│ └── lib/
│ └── db.ts
├── .env
├── package.json
└── ...other files
Setup Complete!
You now have a Next.js project with Prisma configured and ready to use. In the next section, we'll design our database schema.