Database

This guide explains how to set up and use the database system in our application using Drizzle ORM with PostgreSQL.

This template uses Drizzle ORM with PostgreSQL. For more information, go to Drizzle ORM docs

Setup

Prerequisites

🐘

PostgreSQL

Database using Neon.tech (or any other)

⚙️

Node.js

JavaScript runtime environment

🔐

.env.local

Environment configuration file

Installation

Terminal

Environment Configuration

Terminal

Configuration Files

Drizzle Config

Create a drizzle.config.ts file to configure your database:

drizzle.config.ts
TYPESCRIPT

Database Client

Set up your database client in server/drizzle/db.ts:

server/db/config/database.ts
TYPESCRIPT

Schema Organization

Organize your schemas in the server/drizzle/schema/ directory:

lib/schemas.ts
TYPESCRIPT

Database Operations

Server Actions

Example of a server action with proper error handling and validation:

TYPESCRIPT

Frontend Integration

Use React Query mutations for database operations:

TYPESCRIPT

Best Practices

Error Handling

  • 1
    Wrap database operations in try-catch blocks
  • 2
    Use proper error types
  • 3
    Implement proper validation
  • 4
    Handle edge cases

Security

  • 1
    Implement rate limiting
  • 2
    Use transactions for related operations
  • 3
    Validate all inputs
  • 4
    Check permissions

Type Safety

  • 1
    Leverage TypeScript
  • 2
    Use Drizzle's type inference
  • 3
    Define proper schemas
  • 4
    Use Zod validation