In your backend project (e.g., /packages/backend or root if monorepo):
pnpm install prisma @prisma/client
Then initialize Prisma:
npx prisma init
change Prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
.env to point to Docker PostgresIf your Docker Compose uses service name postgres and credentials like:
POSTGRES_USER=devarena
POSTGRES_PASSWORD=supersecretpassword
POSTGRES_DB=devarenadb
POSTGRES_PORT=5432
Then set Prisma’s env as:
DATABASE_URL="postgresql://devarena:supersecretpassword@localhost:5432/devarenadb?schema=public"
✅ If you run the backend inside Docker, use host postgres instead of localhost:
DATABASE_URL="postgresql://devsync:supersecretpassword@postgres:5432/devsyncdb?schema=public"
Example minimal Prisma schema (inside prisma/schema.prisma):
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Users {
id String @id @default(uuid())
username String @unique
email String
sessions Sessions[]
created_at DateTime @default(now())
updated_at DateTime @updatedAt
@@index([email])
@@index([username])
}
model Sessions {
id String @id @default(uuid())
userId String
user Users @relation(fields: [userId], references: [id], onDelete: Cascade)
refreshToken String @unique
userAgent String?
ip String?
createdAt DateTime @default(now())
expiresAt DateTime
@@index([userId])
@@index([refreshToken])
@@index([expiresAt])
}