Overview
The application uses PostgreSQL as its database with Prisma as the ORM. The schema is minimal and focused on project management.Database Configuration
Prisma Schema
Connection Configuration
The database URL is read from theDATABASE_URL environment variable:
postgresql://[user]:[password]@[host]:[port]/[database]?schema=[schema]
Models
Project Model
Prisma Client Usage
Initialization
- Single client instance per application
- Automatically manages connection pool
- Gracefully handles disconnection
Common Queries
- Find All
- Find One
- Create
- Update
- Delete
Migrations
Migration Files
Migrations are stored inbackend/prisma/migrations/:
Initial Migration
The init migration creates the Project table:SERIAL- Auto-incrementing integerTEXT[]- PostgreSQL native arrayJSONB- Binary JSON (faster than JSON)TIMESTAMP(3)- Millisecond precision
Running Migrations
Creating New Migrations
- Modify
backend/prisma/schema.prisma - Run migration command:
- Prisma generates migration SQL automatically
- Review generated SQL in
migrations/directory - Commit migration files to version control
Database Seeding
Seed script located atbackend/scripts/seed.ts:
Prisma Client Generation
The Prisma Client must be regenerated after schema changes:- After modifying
schema.prisma - After pulling schema changes from git
- After running migrations
node_modules/@prisma/client/
Type Safety
Auto-Generated Types
Prisma generates TypeScript types from the schema:JSON Field Types
JSON fields are typed asPrisma.JsonValue by default:
Prisma Studio
Visual database browser:- Browse all tables
- Edit records inline
- Run queries
- View relationships
- Opens at
http://localhost:5555
Database Constraints
Current schema has minimal constraints:- Primary Key:
id(auto-increment) - No foreign keys: Single-table design
- No unique constraints: Multiple projects can have same title
- No check constraints: Validation handled in application layer
Adding Constraints Example
To add unique constraint on title:prisma migrate dev --name add_unique_title
Performance Considerations
Indexing
Consider adding indexes for frequently queried fields:Connection Pooling
Prisma manages connection pool automatically:Backup and Restore
Backup
Restore
Next Steps
API Reference
Learn how to interact with projects via API
Backend Architecture
Understand how Prisma integrates with Express
