// Prisma schema for Local Development (SQLite) datasource db { provider = "sqlite" url = env("DATABASE_URL") } generator client { provider = "prisma-client-js" } model Board { id String @id @default(uuid()) title String @default("Agile Kanban Board") adminKeyHash String memberKeyHash String memberKey String? @default("") autoMoveStale Boolean @default(false) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt columns Column[] activityLogs ActivityLog[] } model Column { id String @id @default(uuid()) boardId String board Board @relation(fields: [boardId], references: [id], onDelete: Cascade) title String order Int @default(0) maxWipLimit Int @default(0) autoStaleHours Int @default(0) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt tickets Ticket[] } model Ticket { id String @id @default(uuid()) columnId String column Column @relation(fields: [columnId], references: [id], onDelete: Cascade) title String description String @default("") order Int @default(0) priority String @default("MEDIUM") tags String @default("[]") subtasks String @default("[]") dueDate String? @default("") isBlocked Boolean @default(false) blockedReason String? @default("") assignee String? @default("") movedAt DateTime @default(now()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt activityLogs ActivityLog[] } model ActivityLog { id String @id @default(uuid()) boardId String board Board @relation(fields: [boardId], references: [id], onDelete: Cascade) ticketId String? ticket Ticket? @relation(fields: [ticketId], references: [id], onDelete: Cascade) ticketTitle String @default("") action String @default("MOVED") // MOVED, CREATED, BLOCKED, UNBLOCKED, DELETED fromColumnTitle String? @default("") toColumnTitle String? @default("") userName String @default("User") details String? @default("") createdAt DateTime @default(now()) }