Private
Public Access
1
0

Add Gantt chart view with card dependencies and start dates

Adds a new Gantt chart board view with custom SVG timeline rendering,
card-to-card dependency tracking with cycle detection, and a startDate
field on cards. Includes zoom controls (day/week/month), dependency
arrows, column-grouped task list, today marker, and real-time updates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Catherine Renelle
2026-02-28 10:03:11 -05:00
parent 85bda718cc
commit 2fbd3bc93d
13 changed files with 1239 additions and 0 deletions
+18
View File
@@ -165,6 +165,7 @@ model Card {
description String?
position String // Fractional index (lexicographic)
dueDate DateTime? @map("due_date")
startDate DateTime? @map("start_date")
archived Boolean @default(false)
dueReminderSent Boolean @default(false) @map("due_reminder_sent")
cardNumber Int? @map("card_number")
@@ -180,6 +181,8 @@ model Card {
activities Activity[]
watchers CardWatcher[]
customFieldValues CustomFieldValue[]
blocks CardDependency[] @relation("CardBlocks")
blockedBy CardDependency[] @relation("CardBlockedBy")
@@map("cards")
}
@@ -458,6 +461,21 @@ model AutomationRule {
@@map("automation_rules")
}
// ─── Card Dependencies ──────────────────────────────────────
model CardDependency {
id String @id @default(uuid()) @db.Uuid
blockingCardId String @map("blocking_card_id") @db.Uuid
blockedCardId String @map("blocked_card_id") @db.Uuid
createdAt DateTime @default(now()) @map("created_at")
blockingCard Card @relation("CardBlocks", fields: [blockingCardId], references: [id], onDelete: Cascade)
blockedCard Card @relation("CardBlockedBy", fields: [blockedCardId], references: [id], onDelete: Cascade)
@@unique([blockingCardId, blockedCardId])
@@map("card_dependencies")
}
// ─── Tenant Branding & Theming ───────────────────────────────
model TenantTheme {