diff --git a/NAMING.md b/NAMING.md deleted file mode 100644 index 991f8dd..0000000 --- a/NAMING.md +++ /dev/null @@ -1,75 +0,0 @@ -We need to update how shotcodes are generated and stored. - -to do this: - -projects need a new field called -- showId (1–10 chars, `[A-Z0-9_]`, uppercase) -- projectType (`STANDARD` or `EPISODIC`) - -# Shot Naming Conventions - -## Shot Code Format - -Shot codes are auto-generated on creation - -### Standard Project - -``` -{SHOW_ID}_{SCENE}_{SHOT_NUMBER} -``` - -Example: `PRJX_10_0010` - -### Episodic Project - -``` -{SHOW_ID}_{EPISODE}_{SCENE}_{SHOT_NUMBER} -``` - -Example: `PRJX_101_10_0010` - ---- - -## Segments - -| Segment | Source | Notes | -|---|---|---| -| `SHOW_ID` | `Project.showId` | 1–10 chars, letters/numbers/underscores, stored uppercase. Set once on the project. | -| `EPISODE` | `Shot.episode` | Only present on `EPISODIC` projects. Free-text, stored uppercase (e.g. `EP01`). | -| `SCENE` | `Shot.scene` | Required on every shot. Stored uppercase (e.g. `SC010`). | -| `SHOT_NUMBER` | Auto-incremented | 4-digit zero-padded integer, increments by 10 (e.g. `0010`, `0020`). | - ---- - -## Auto-Incrementing Shot Numbers - -The shot number is scoped to the **scene within a project** (and additionally to the **episode** for episodic projects): - -- On create, the system queries `MAX(shotNumber)` for all shots sharing the same `projectId + scene` (+ `episode` for episodic). -- The new shot number = `MAX + 10`, starting at `0010` when no prior shots exist in that scene. -- The number is zero-padded to 4 digits. - -This means shot numbers are **non-contiguous by design** — gaps allow shots to be inserted between existing ones without renumbering. - -When a shot is **duplicated**, it inherits the scene/episode of the original and receives the next available shot number in that scope. Only the trailing 4-digit segment in the code is replaced; the rest of the code is preserved. - ---- - -## Where Fields Come From - -| Field | Model | Required? | -|---|---|---| -| `showId` | `Project` | Yes — validated 1–10 chars, `[A-Z0-9_]` | -| `projectCode` | `Project` | Yes — unique across all projects, used for billing/reference (not in shot code) | -| `projectType` | `Project` | Yes — `STANDARD` or `EPISODIC`; controls whether episode segment is included | -| `scene` | `Shot` | Yes — required by `shotSchema` | -| `episode` | `Shot` | Optional — only meaningful (and included in code) when `projectType === EPISODIC` | -| `shotGroup` | `Shot` | Optional — organisational grouping only, not part of the shot code | - ---- - -## Notes - -- `projectCode` is a separate billing/admin identifier on the Project and does **not** appear in shot codes. Shot codes use `showId` instead. -- Shot codes are not regenerated on edit — if scene or episode values change after creation, the stored `shotCode` will not reflect those changes. -- All string segments are uppercased before being written into the code. diff --git a/OVERVIEW.md b/OVERVIEW.md deleted file mode 100644 index ac88fd6..0000000 --- a/OVERVIEW.md +++ /dev/null @@ -1,300 +0,0 @@ -# FeedBack — App Overview & Status - -> Last updated: May 2026 - ---- - -## What It Is - -FeedBack is a self-hosted VFX review and approval platform for boutique studios. Internal teams (admins, producers, supervisors, artists) manage projects and shots, upload versioned video files, draw frame-accurate annotations, and leave timestamped comments. External clients receive token-gated review links and can approve, reject, or request changes — no login required. - ---- - -## Current Status - -All core features are built and functional: - -| Area | Status | -|------|--------| -| Auth (login, roles, sessions) | ✅ Complete | -| Projects & shots (CRUD) | ✅ Complete | -| Version upload (local storage) | ✅ Complete | -| Review player + frame timeline | ✅ Complete | -| Annotation drawing (canvas) | ✅ Complete — persists across frame navigation | -| Frame-anchored comments + replies | ✅ Complete | -| Approval workflow | ✅ Complete | -| Client management (internal) | ✅ Complete | -| Client portal (external, token-gated) | ✅ Complete | -| Tokenized review links | ✅ Complete | -| Slack notifications | ✅ Complete (optional webhook) | -| In-app notifications | ✅ Complete | -| Email (nodemailer) | ⚙️ Wired, requires SMTP env vars | -| S3 / R2 / MinIO / B2 storage | ⚙️ Wired, requires env vars | -| Docker Compose deployment | ✅ Complete | - ---- - -## Route Map - -### Public / Unauthenticated - -| Route | Description | -|-------|-------------| -| `/login` | Credentials sign-in page | -| `/client/[token]` | External client project overview — lists shots visible to client | -| `/client/[token]/review/[versionId]` | External client review page — video player, comments, approve/reject | - -### Dashboard (requires login) - -| Route | Description | -|-------|-------------| -| `/dashboard` | Home — stats cards, shot queue, recent activity | -| `/projects` | Project list | -| `/projects/[id]` | Project detail — shot grid, stats | -| `/projects/[id]/shots/[shotId]` | Shot detail — version list, approval history | -| `/review/[versionId]` | Full-screen review player (internal) | -| `/clients` | Client list — ADMIN/PRODUCER only | -| `/clients/[clientId]` | Client detail — linked projects, active review sessions | -| `/settings` | User profile settings | - ---- - -## API Routes - -### Internal (authenticated) - -| Method | Route | Purpose | -|--------|-------|---------| -| GET/POST | `/api/projects` | List / create projects | -| GET/POST/DELETE | `/api/shots` | Shot CRUD | -| GET | `/api/versions/[versionId]/comments` | Fetch comments for a version | -| GET | `/api/versions/[versionId]/annotations` | Fetch annotations for a version | -| GET/POST | `/api/clients` | List / create clients | -| GET/POST/DELETE | `/api/review-sessions` | Manage tokenized review links | -| GET/POST | `/api/notifications` | In-app notification CRUD | -| GET | `/api/files/[...key]` | Serve locally-stored files (no auth) | -| POST | `/api/upload/local` | Local file upload handler | - -### Client portal (no auth — token-gated) - -| Method | Route | Purpose | -|--------|-------|---------| -| GET | `/api/client/[token]/project` | Project + shots (CLIENT_REVIEW / REVISIONS / APPROVED / FINAL only) | -| GET | `/api/client/[token]/versions/[versionId]` | Version detail + comments | -| POST | `/api/client/[token]/approve` | Submit approval decision | -| POST | `/api/client/[token]/comment` | Post a comment | - ---- - -## Server Actions (`/actions`) - -| File | Exports | -|------|---------| -| `projects.ts` | `createProject`, `updateProject` | -| `shots.ts` | `createShot`, `updateShotStatus`, `getShotById` | -| `versions.ts` | `createVersion`, `setLatestVersion` | -| `comments.ts` | `addComment`, `addReply`, `resolveComment` | -| `annotations.ts` | `saveAnnotation`, `getAnnotationsForVersion`, `getAnnotationsForFrame` | -| `approvals.ts` | `submitApproval` | - ---- - -## Database Schema - -### Enums - -| Enum | Values | -|------|--------| -| `Role` | `ADMIN` · `PRODUCER` · `SUPERVISOR` · `ARTIST` · `CLIENT` | -| `ProjectStatus` | `ACTIVE` · `ON_HOLD` · `COMPLETED` · `ARCHIVED` | -| `ShotStatus` | `WAITING` · `IN_PROGRESS` · `INTERNAL_REVIEW` · `CLIENT_REVIEW` · `REVISIONS` · `APPROVED` · `FINAL` | -| `ShotPriority` | `LOW` · `NORMAL` · `HIGH` · `URGENT` | -| `ApprovalStatus` | `PENDING_REVIEW` · `APPROVED` · `REJECTED` · `NEEDS_CHANGES` | -| `NotificationType` | `VERSION_UPLOADED` · `FEEDBACK_ADDED` · `SHOT_APPROVED` · `SHOT_REJECTED` · `COMMENT_REPLY` · `MENTION` · `REVISION_REQUESTED` | - -### Models - -#### `User` -Core identity. Has a `role` (see enum). `passwordHash` used for credentials login. NextAuth `Account` and `Session` models hang off this. - -| Key field | Type | Notes | -|-----------|------|-------| -| `id` | cuid | PK | -| `email` | String | unique | -| `role` | Role | default `ARTIST` | -| `passwordHash` | String? | bcrypt hash | -| `isActive` | Boolean | soft-disable | - -#### `Client` -Represents an external studio or client company. - -| Key field | Type | Notes | -|-----------|------|-------| -| `company` | String | | -| `contactPerson` | String | | -| `email` | String | unique | -| `phone`, `notes`, `logoUrl` | optional | | - -#### `ClientAccess` -Junction between a `User` (with `CLIENT` role) and a `Client` record. Allows a portal user account to be linked to a specific client company. - -#### `Project` -Top-level container. Linked to an optional `Client`, `producer` (User), and `supervisor` (User). - -| Key field | Type | Notes | -|-----------|------|-------| -| `code` | String | unique, used as short label | -| `status` | ProjectStatus | default `ACTIVE` | -| `clientId` | String? | nullable | -| `slackWebhook` | String? | per-project Slack alerts | - -#### `Shot` -Belongs to a `Project`. Tracks pipeline status and priority. - -| Key field | Type | Notes | -|-----------|------|-------| -| `shotCode` | String | unique per project | -| `sequence` | String? | grouping label | -| `status` | ShotStatus | default `WAITING` | -| `priority` | ShotPriority | default `NORMAL` | -| `fps` | Float | default 24 | -| `frameStart`, `frameEnd` | Int? | optional frame range | - -> **Client visibility rule**: only shots with status `CLIENT_REVIEW`, `REVISIONS`, `APPROVED`, or `FINAL` are returned by the client portal API. - -#### `Version` -A specific upload for a shot. Multiple versions per shot; only one has `isLatest = true`. - -| Key field | Type | Notes | -|-----------|------|-------| -| `versionNumber` | Int | unique per shot | -| `fileUrl` | String | path/URL to video | -| `fileSize` | BigInt? | serialized to string in API responses | -| `fps` | Float | | -| `approvalStatus` | ApprovalStatus | default `PENDING_REVIEW` | -| `isLatest` | Boolean | | - -#### `Comment` -Frame-anchored comment on a version. Supports replies via `CommentReply`. - -| Key field | Type | Notes | -|-----------|------|-------| -| `frameNumber` | Int | exact frame | -| `timestamp` | Float | seconds | -| `text` | Text | | -| `isResolved` | Boolean | | - -#### `CommentReply` -Flat child of `Comment`. No threading beyond one level. - -#### `Annotation` -Canvas drawing saved against a version + frame. `drawingData` is JSON containing an array of `AnnotationShape` objects with normalized (0–1) coordinates. - -| Key field | Type | Notes | -|-----------|------|-------| -| `frameNumber` | Int | | -| `drawingData` | Json | `{ shapes, canvasWidth, canvasHeight, version }` | -| `color` | String | hex, default `#ef4444` | -| `isVisible` | Boolean | soft-hide | -| `commentId` | String? | optional companion comment link | - -#### `Approval` -Immutable approval record created each time a user submits a decision. The version's `approvalStatus` is updated separately. - -| Key field | Type | Notes | -|-----------|------|-------| -| `status` | ApprovalStatus | | -| `notes` | Text? | | - -#### `Notification` -In-app notification for a user. - -| Key field | Type | Notes | -|-----------|------|-------| -| `type` | NotificationType | | -| `data` | Json? | extra context (versionId, shotCode, etc.) | -| `isRead` | Boolean | | - -#### `ReviewSession` -A tokenized, time-limited review link for external clients. Tied to a `Project`. - -| Key field | Type | Notes | -|-----------|------|-------| -| `token` | String | unique cuid, used in client portal URLs | -| `label` | String? | friendly name shown to client | -| `email` | String? | recipient email | -| `expiresAt` | DateTime | | -| `isActive` | Boolean | can be deactivated manually | -| `accessCount` | Int | incremented on each portal visit | - ---- - -## Key Component Map - -``` -components/ - player/ - ReviewPlayer.tsx — Forwardref player, keyboard shortcuts, fullscreen - FrameTimeline.tsx — Canvas ruler with comment/annotation markers - PlaybackControls.tsx — Transport bar, speed selector, annotation toggle - annotations/ - AnnotationCanvas.tsx — Canvas overlay; per-frame shape map persists navigation - AnnotationTools.tsx — Tool/colour/stroke picker (shown when annotating) - comments/ - CommentPanel.tsx — Comment list, filter, reply, resolve; seekToFrame on click - versions/ - VersionUpload.tsx — Drag-and-drop uploader - VersionList.tsx — Version history with approval badges - shots/ - ShotCard.tsx — Shot grid card with status dropdown - NewShotDialog.tsx — Create shot form - projects/ - ProjectCard.tsx — Project list card - NewProjectDialog.tsx — Create project form - clients/ - NewClientDialog.tsx — Create client form - ShareReviewDialog.tsx — Generate tokenized review link - ReviewSessionList.tsx — Active sessions with copy/deactivate actions - dashboard/ - StatsCards.tsx — Top-level counts - ShotQueue.tsx — Shots needing attention - RecentActivity.tsx — Latest version/comment events - layout/ - Sidebar.tsx — Nav + role-based link visibility - Header.tsx — Breadcrumb + notification bell - NotificationBell.tsx — Dropdown of unread notifications -``` - ---- - -## Auth & Roles - -Authentication uses **NextAuth v5** with a Credentials provider (email + bcrypt password). Sessions are JWT-based. - -| Role | Access | -|------|--------| -| `ADMIN` | Full access including user management, client management | -| `PRODUCER` | Full project/shot/version access, client management | -| `SUPERVISOR` | Full project/shot/version access, no client management | -| `ARTIST` | Own shots and versions; can comment | -| `CLIENT` | Dashboard login only (legacy); primary access via portal token links | - -The **client portal** routes (`/client/[token]/*` and `/api/client/[token]/*`) bypass auth entirely — access is controlled by token validity, `isActive`, and `expiresAt`. - ---- - -## Storage - -Controlled by `STORAGE_PROVIDER` env var. Currently defaults to `local` (files saved in `/public/uploads/`, served via `/api/files/[...key]`). Switching to S3/R2/B2/MinIO/UploadThing requires only env var changes. - ---- - -## Environment Variables (minimum for local dev) - -```env -DATABASE_URL="postgresql://user:pass@localhost:5432/feedback" -AUTH_SECRET="<32-char random string>" -NEXTAUTH_URL="http://localhost:3000" -NEXT_PUBLIC_APP_URL="http://localhost:3000" -STORAGE_PROVIDER="local" -``` diff --git a/PROMPT.md b/PROMPT.md deleted file mode 100644 index 4acedb5..0000000 --- a/PROMPT.md +++ /dev/null @@ -1,400 +0,0 @@ -Build a modern web-based VFX review and approval platform prototype focused on simplicity, speed, and reliability for boutique VFX/animation studios. - -The goal is NOT to compete with enterprise systems immediately. - -The goal is: - -* dead simple uploads -* fast review cycles -* frame-accurate feedback -* artist/client collaboration -* approval tracking -* production-ready architecture - -The UX should feel modern, cinematic, lightweight, and extremely responsive. - -Tech stack requirements: - -* Next.js latest App Router -* TypeScript -* TailwindCSS -* shadcn/ui -* PostgreSQL -* Prisma ORM -* React Query / TanStack Query -* UploadThing or S3-compatible uploads -* Server Actions where appropriate -* Docker support -* Self-hostable architecture -* Dark mode first - -The system should support: - -* clients -* projects -* shots -* versions -* comments -* annotations -* approvals - -# CORE GOAL - -Artists upload shot versions. - -Clients and supervisors can: - -* watch versions -* pause on frames -* leave timestamped comments -* draw annotations directly on frames -* approve/reject versions - -Everything should feel frictionless. - -# DATA MODEL - -## CLIENTS - -* company -* contact person -* email - -## PROJECTS - -* project name -* code -* linked client -* status -* due dates - -## SHOTS - -* shot code -* sequence -* description -* status -* assigned artist -* priority - -Statuses: - -* Waiting -* In Progress -* Internal Review -* Client Review -* Revisions -* Approved -* Final - -## VERSIONS - -Each shot can have many versions. - -Fields: - -* version number -* upload file -* thumbnail -* artist -* upload date -* notes -* fps -* duration -* frame count -* approval status - -Approval statuses: - -* Pending Review -* Approved -* Rejected -* Needs Changes - -Support: - -* mp4 -* mov -* jpg sequences -* png sequences - -# VIDEO REVIEW PLAYER - -Build a custom review player optimized for frame review. - -Features: - -* frame stepping -* JKL playback -* timeline scrubbing -* timestamp display -* frame number display -* fullscreen -* playback speed controls - -VERY IMPORTANT: -Comments must attach to: - -* exact frame number -* timestamp -* version - -Example: -Frame 115: -"Tracking slips here." - -# FRAME-ACCURATE COMMENTS - -Users can: - -* pause playback -* click "Add Comment" -* comment attaches to exact frame - -Comment structure: - -* author -* frame number -* timestamp -* text -* resolved/unresolved -* replies -* created date - -Allow threaded replies. - -# DRAW-OVER ANNOTATIONS - -Users should be able to: - -* draw directly on paused frame -* arrows -* circles -* freehand lines -* rectangles - -Annotations must save: - -* frame number -* vector drawing data -* author -* linked comment - -Allow: - -* toggling annotations -* multiple annotations per frame - -Use HTML canvas or Konva.js. - -# REVIEW WORKFLOW - -Implement a lightweight approval pipeline. - -Review statuses: - -* Pending -* Internal Approved -* Client Approved -* Needs Changes -* Final Approved - -Clients should be able to: - -* approve version -* reject version -* request revisions - -Artists should: - -* receive notifications -* upload new versions -* compare against previous versions - -# SIDE-BY-SIDE VERSION COMPARISON - -Allow: - -* A/B version comparison -* wipe comparison slider -* previous version overlay - -Useful for: - -* comp revisions -* cleanup changes -* color tweaks - -# NOTIFICATIONS - -Add notification system. - -Examples: - -* New version uploaded -* New feedback added -* Shot approved -* Shot rejected -* Comment reply added - -Support: - -* in-app notifications -* email notifications -* Slack integration - -# SLACK INTEGRATION - -Integrate with Slack webhooks. - -Examples: - -```plaintext id="6j6t2g" -SH020 v004 approved by client -``` - -```plaintext id="p5v8rz" -New feedback added on SH035 frame 122 -``` - -Allow configurable channels per project. - -# FILE STORAGE - -Use S3-compatible architecture. - -Support: - -* local storage -* Backblaze B2 -* AWS S3 -* Cloudflare R2 -* self-hosted MinIO - -Generate: - -* thumbnails -* proxies -* poster frames - -# SECURITY - -Implement: - -* signed upload URLs -* secure client review links -* expiring review sessions -* role permissions - -Roles: - -* Admin -* Producer -* Supervisor -* Artist -* Client - -Clients should ONLY see: - -* assigned projects -* approved review material - -# CLIENT REVIEW PORTAL - -Clients should have a very simple portal: - -* open project -* review shots -* leave notes -* approve/reject - -No production complexity exposed. - -Keep it clean and minimal. - -# DASHBOARD - -Internal dashboard should show: - -* shots awaiting review -* shots needing revisions -* approved shots -* overdue shots -* recent comments -* artist assignments - -# UI REQUIREMENTS - -The UI should feel: - -* modern -* film-industry oriented -* dark themed -* fast -* minimal clutter - -Inspiration: - -* Frame.io -* SyncSketch -* ShotGrid Review -* Vimeo Review - -But simpler and cleaner. - -# IMPORTANT PERFORMANCE REQUIREMENTS - -Optimize for: - -* fast scrubbing -* lightweight annotation rendering -* low-latency comments -* proxy playback - -Avoid bloated enterprise complexity. - -# BONUS FEATURES - -If possible implement: - -* LUT viewing -* EXR sequence support -* burn-ins -* watermarking -* presentation playlists -* review sessions -* audio comments -* webhook API -* task linking -* AI feedback summaries - -# ARCHITECTURE - -Design the system so it can later integrate into a larger VFX pipeline platform including: - -* bidding -* production tracking -* artist scheduling -* invoicing -* asset management -* render tracking - -Avoid hardcoding review-specific assumptions. - -# MVP PRIORITY - -Prioritize these features FIRST: - -1. Upload video -2. Scrub by frame -3. Add timestamp comments -4. Draw annotations -5. Approve/reject versions -6. View feedback history - -Those six features are the core product. - -Everything else is secondary. - -The app should feel like: -“A modern lightweight review system that actually respects artists’ time.” diff --git a/PROMPT2.md b/PROMPT2.md deleted file mode 100644 index 7c2de81..0000000 --- a/PROMPT2.md +++ /dev/null @@ -1,916 +0,0 @@ -Update the existing FeedBack platform to add a lightweight production tracking system directly into the current architecture. - -IMPORTANT: -Do NOT redesign the app from scratch. -Do NOT build enterprise production management. -Do NOT attempt full ShotGrid/ftrack complexity. - -The goal is: - -* simple -* fast -* usable -* production-focused -* minimal friction - -FeedBack already has: - -* projects -* shots -* versions -* reviews -* comments -* approvals -* client portal - -We are now extending it into a lightweight VFX production tracker. - -The philosophy should be: -“A clean operational layer for boutique VFX studios.” - ---- - -# HIGH LEVEL GOAL - -Add: - -* production tracking -* tasks -* artist assignment -* deadlines -* kanban boards -* simple scheduling -* upload/review workflow integration - -The existing review/version system should become directly attached to production tasks. - -IMPORTANT: -The TASK should become the core production object. - -Architecture should evolve toward: - -```plaintext id="c2o8kh" -Project - ├── Shots - │ ├── Tasks - │ │ ├── Versions - │ │ ├── Comments - │ │ └── Approvals - │ - ├── Assets - │ ├── Tasks - │ │ ├── Versions - │ │ ├── Comments - │ │ └── Approvals -``` - ---- - -# NEW CORE CONCEPTS - -Add: - -* Assets -* Tasks -* Artist Assignment -* Kanban Views -* Deadlines -* Task Statuses - -DO NOT add: - -* timesheets -* complex dependencies -* render management -* resource planning -* advanced scheduling -* Gantt charts - -Keep the system intentionally lightweight. - ---- - -# DATABASE CHANGES - -## NEW ENUM: `TaskStatus` - -Add: - -```ts -TODO -IN_PROGRESS -REVIEW -CHANGES -DONE -``` - ---- - -## NEW ENUM: `TaskType` - -Add: - -```ts -TRACK -ROTO -KEY -COMP -FX -LIGHTING -RENDER -ANIMATION -MODEL -TEXTURE -RIG -LOOKDEV -GENERAL -``` - -Allow custom values later. - ---- - -# NEW MODEL: `Asset` - -Assets should behave similarly to shots. - -Fields: - -* id -* projectId -* assetCode -* name -* description -* status -* priority -* assignedLeadId -* dueDate -* createdAt -* updatedAt - -Assets belong to: - -* Project - -Assets contain: - -* Tasks - ---- - -# NEW MODEL: `Task` - -This becomes the core operational object. - -Fields: - -* id -* title -* description -* type -* status -* priority -* dueDate -* estimatedHours -* sortOrder -* shotId (nullable) -* assetId (nullable) -* assignedArtistId (nullable) -* createdById -* createdAt -* updatedAt - -Rules: - -* task belongs to either: - - * a Shot - * or an Asset -* never both - -Tasks can contain: - -* Versions -* Comments -* Approvals - -IMPORTANT: -Refactor existing Version model: - -* versions should optionally belong to a Task -* NOT only a Shot - -This is critical. - ---- - -# VERSION REFACTOR - -Currently: - -```plaintext id="vw7z0h" -Shot -> Versions -``` - -Refactor to: - -```plaintext id="7wfp9e" -Task -> Versions -``` - -Reason: -The review process is task-specific. - -Example: - -```plaintext id="x4fq6o" -SH010 - ├── Track Task - │ └── Versions - │ - ├── Roto Task - │ └── Versions - │ - └── Comp Task - └── Versions -``` - -This massively improves production clarity. - -Still allow: - -* shot-level overview -* latest task version summary - ---- - -# TASK WORKFLOW - -Tasks should support: - -* assignment -* deadlines -* uploads -* review -* approvals - -Simple lifecycle: - -```plaintext id="y8y95u" -TODO -→ IN_PROGRESS -→ REVIEW -→ CHANGES -→ DONE -``` - ---- - -# KANBAN BOARD - -Implement lightweight kanban production views. - -Views: - -* By Project -* By Shot -* By Asset -* By Artist - -Columns: - -* Todo -* In Progress -* Review -* Changes -* Done - -Cards should display: - -* task title -* shot/asset code -* assigned artist -* due date -* latest version -* comment count -* approval state - -Support: - -* drag and drop -* optimistic updates -* instant status changes - -Use: - -* dnd-kit - -NOT: - -* giant enterprise scheduling systems - ---- - -# NEW ROUTES - -## Dashboard - -Add: - -```plaintext id="pwttmf" -/tasks -/tasks/[taskId] -``` - ---- - -## Project Views - -Extend: - -```plaintext id="6yq0o5" -/projects/[id] -``` - -Add tabs: - -* Shots -* Assets -* Tasks -* Kanban -* Activity - ---- - -## Asset Views - -Add: - -```plaintext id="y5xj4q" -/projects/[id]/assets/[assetId] -``` - ---- - -## Task Views - -Add: - -```plaintext id="g3fcdj" -/tasks/[taskId] -``` - -Task page should contain: - -* task details -* status -* assignment -* uploads -* comments -* review player -* annotations -* approval history - -Essentially: -task page = review page + production metadata - ---- - -# REVIEW SYSTEM INTEGRATION - -DO NOT duplicate review systems. - -Existing: - -* review player -* comments -* annotations -* approvals - -should now attach to: - -* Task Versions - -The review player remains mostly unchanged. - ---- - -# VERSION UPLOAD FLOW - -New upload flow: - -```plaintext id="v3r0xy" -Project - → Shot / Asset - → Task - → Upload Version -``` - -Version uploads should: - -* automatically increment version number -* optionally notify assigned reviewers -* optionally move task to REVIEW - ---- - -# TASK CREATION UX - -Allow: - -* manual task creation -* templates -* quick-add buttons - -Example: -For shots: - -* Add Track -* Add Roto -* Add Comp - -For assets: - -* Add Model -* Add Texture -* Add Rig - ---- - -# ARTIST ASSIGNMENTS - -Tasks should support: - -* assigned artist -* assigned supervisor -* watcher/follower users - -Add lightweight workload views: - -* my tasks -* due this week -* overdue -* awaiting review - ---- - -# DASHBOARD IMPROVEMENTS - -Add widgets: - -* Tasks Due Today -* Tasks In Review -* Overdue Tasks -* Latest Uploads -* Recent Feedback -* Artist Workload - ---- - -# NOTIFICATIONS - -Extend notification system. - -New notification types: - -```ts -TASK_ASSIGNED -TASK_OVERDUE -TASK_APPROVED -TASK_CHANGES_REQUESTED -TASK_READY_FOR_REVIEW -``` - -Slack examples: - -```plaintext id="hjlwmz" -SH010 COMP task ready for review -``` - -```plaintext id="64q9vx" -ASSET_CAR01 MODEL task approved -``` - ---- - -# PERMISSIONS - -Maintain current auth architecture. - -Permissions: - -* ADMIN/PRODUCER/SUPERVISOR: - full task control -* ARTIST: - view assigned tasks - upload versions - comment -* CLIENT: - review approved review sessions only - -Clients should NEVER see: - -* kanban -* production internals -* task assignments - ---- - -# UI REQUIREMENTS - -The UI should feel: - -* modern -* dark-mode first -* fast -* clean -* film-production oriented - -Inspiration: - -* Linear -* Trello -* Frame.io -* ShotGrid (but MUCH simpler) - ---- - -# IMPORTANT PRODUCT DIRECTION - -This should feel like: -“Trello + Frame.io specifically for boutique VFX studios.” - -NOT: -“Enterprise production software.” - -Keep: - -* interactions fast -* layouts uncluttered -* onboarding minimal - ---- ---- - -# CLIENT REVIEW SHARING FLOW - -Add a lightweight “Share With Client” workflow directly into the production/review system. - -The goal is: - -* one-click client sharing -* minimal friction -* no complicated publishing workflows -* tightly integrated into task review - -This should feel extremely simple for producers/supervisors. - ---- - -# CORE CONCEPT - -A task version can move through two review stages: - -```plaintext id="y5ibk0" -Internal Review -→ Client Review -→ Approved / Changes -``` - -When a user clicks: - -```plaintext id="l5l90p" -Share With Client -``` - -the system should: - -* mark the task/version as ready for client review -* expose the version in the client portal -* optionally notify the client -* generate/share a review link if needed - -IMPORTANT: -Do NOT require duplicate uploads or separate publish steps. - -The uploaded task version itself becomes the client review version. - ---- - -# NEW TASK STATUS - -Extend `TaskStatus` enum: - -```ts id="z1vc6r" -TODO -IN_PROGRESS -INTERNAL_REVIEW -CLIENT_REVIEW -CHANGES -DONE -``` - -This mirrors actual VFX review flow more accurately. - ---- - -# SHARE WITH CLIENT BUTTON - -Add a prominent: - -```plaintext id="mqkn6v" -Share With Client -``` - -button in multiple locations. - -## PRIMARY LOCATION - -Inside the internal review player page: - -```plaintext id="m1sjc9" -/review/[versionId] -``` - -This is the most important placement. - -Supervisors reviewing a version internally should be able to immediately push it to client review. - ---- - -## ADDITIONAL LOCATIONS - -Add button/action in: - -* task detail page -* version list rows -* kanban task cards -* project shot overview -* latest version cards - -Use: - -* dropdown action menu -* quick action button -* contextual right-click menu where appropriate - ---- - -# SHARE FLOW - -When clicked: - -## IF NO ACTIVE CLIENT REVIEW SESSION EXISTS - -Prompt: - -```plaintext id="4v0j9h" -Create review link for client? -``` - -Allow: - -* create new tokenized review session -* select existing review session -* choose expiry date -* optional password later -* optional email send - ---- - -## IF REVIEW SESSION EXISTS - -Immediately: - -* mark version as client-visible -* move task to CLIENT_REVIEW -* notify client if enabled - ---- - -# VERSION VISIBILITY - -Add fields to `Version`: - -```ts id="e88z4o" -isClientVisible Boolean @default(false) -sharedAt DateTime? -sharedById String? -``` - -Only versions with: - -```plaintext id="vlfvhy" -isClientVisible = true -``` - -appear in client portal APIs. - -This is MUCH cleaner than relying only on shot status. - ---- - -# CLIENT REVIEW RULES - -Clients should ONLY see: - -* explicitly shared versions -* latest shared version by default - -Clients should NEVER see: - -* internal versions -* WIP uploads -* rejected internal passes -* production notes -* kanban/task internals - ---- - -# CLIENT REVIEW UX - -When shared: - -* client sees version immediately in portal -* can comment -* approve -* request changes - -Client actions should: - -* update task status automatically -* create notifications -* appear in activity feed - -Example: - -```plaintext id="yv2hfe" -Client approved SH010 COMP v004 -``` - -Or: - -```plaintext id="z61rq5" -Client requested changes on SH020 TRACK v002 -``` - ---- - -# OPTIONAL EMAIL FLOW - -Allow optional: - -```plaintext id="jk3o5i" -Send Review Email -``` - -Email contains: - -* project name -* shot/task name -* review link -* optional message - ---- - -# SMART STATUS AUTOMATION - -Recommended automatic transitions: - -```plaintext id="mxti1g" -Upload Version -→ INTERNAL_REVIEW - -Click "Share With Client" -→ CLIENT_REVIEW - -Client Approves -→ DONE - -Client Requests Changes -→ CHANGES -``` - -This keeps production flow extremely simple. - ---- - -# UI REQUIREMENTS - -The "Share With Client" action should feel: - -* fast -* obvious -* production-friendly - -Suggested styling: - -* accent button -* paper-plane/share icon -* visible near approval controls - -Avoid: - -* buried menus -* multi-step publish systems -* complicated permission dialogs - ---- - -# IMPORTANT PRODUCT DIRECTION - -This feature is one of the biggest differentiators of the platform. - -The ideal workflow should feel like: - -```plaintext id="v5z9eo" -Artist uploads → -Supervisor reviews → -Clicks "Share With Client" → -Client reviews instantly -``` - -No exporting. -No re-uploading. -No external tools. -No confusion. - -That simplicity is the product advantage. - ---- - -# IMPLEMENTATION PLAN - -Implement in phases. - -## PHASE 1 — DATABASE & CORE MODELS - -1. Add Asset model -2. Add Task model -3. Add Task enums -4. Refactor Version relationships -5. Add Prisma migrations -6. Seed example tasks/assets - ---- - -## PHASE 2 — TASK CRUD - -1. Task creation dialogs -2. Task detail page -3. Task assignment -4. Status updates -5. Due dates -6. Quick-add task templates - ---- - -## PHASE 3 — VERSION INTEGRATION - -1. Attach uploads to tasks -2. Refactor review routes -3. Task-based version history -4. Latest version indicators - ---- - -## PHASE 4 — KANBAN - -1. Build kanban board -2. Drag/drop task movement -3. Real-time updates -4. Artist filtering -5. Project filtering - ---- - -## PHASE 5 — DASHBOARD & NOTIFICATIONS - -1. Task widgets -2. Workload summaries -3. Slack updates -4. In-app notifications -5. Overdue indicators -6. Client Review button implementation - ---- - -# IMPORTANT TECHNICAL REQUIREMENTS - -Maintain: - -* current auth system -* current storage abstraction -* current review functionality -* current client portal - -Avoid: - -* breaking existing APIs -* rewriting review logic -* giant refactors - -This should be an additive evolution of the existing FeedBack architecture. - ---- - diff --git a/PROMPT3.md b/PROMPT3.md deleted file mode 100644 index e762a82..0000000 --- a/PROMPT3.md +++ /dev/null @@ -1,523 +0,0 @@ -The current architecture has a conceptual problem around: - -* shots -* tasks -* versions -* approvals -* client review visibility - -We need to refactor the production/review workflow so that TASKS become the true operational and review unit. - -IMPORTANT: -Do NOT redesign the whole app. -This is a workflow/data relationship correction and cleanup. - -The goal is: - -* clearer production flow -* correct review behavior -* correct client review visibility -* correct kanban behavior -* proper task-based versioning - ---- - -# CORE ARCHITECTURAL DECISION - -A SHOT is: - -* a container/grouping -* a production entity -* NOT directly reviewable - -A TASK is: - -* the actual work unit -* the review unit -* the approval unit -* the kanban unit -* the upload/version unit - -This means: - -```plaintext id="b89ah6" -Shot - ├── Track Task - │ └── Versions - │ - ├── Roto Task - │ └── Versions - │ - └── Comp Task - └── Versions -``` - -NOT: - -```plaintext id="6fjlwm" -Shot - └── Versions -``` - -That old structure is incorrect. - ---- - -# REQUIRED REFACTOR - -## 1. VERSIONS MUST BELONG TO TASKS - -Currently: - -```plaintext id="y7txg8" -Shot -> Versions -``` - -Refactor to: - -```plaintext id="dh4mf6" -Task -> Versions -``` - -A version upload must ALWAYS belong to: - -* exactly one task - -Remove the concept of: - -* "shot latest version" - -Instead: - -* each task has its own latest version - -Examples: - -```plaintext id="hskx5e" -SH010 - ├── Track Task - │ └── latest: v003 - │ - ├── Roto Task - │ └── latest: v005 - │ - └── Comp Task - └── latest: v008 -``` - -This is the correct production model. - ---- - -# 2. SHOTS SHOULD NOT DIRECTLY DRIVE CLIENT REVIEW - -Currently: - -* shot status = CLIENT_REVIEW -* portal shows latest uploaded version -* task context lost - -This is incorrect. - -Client review should be TASK-BASED. - ---- - -# NEW CLIENT REVIEW RULE - -The client portal should display: - -```plaintext id="rlazoz" -Tasks - where latest version is marked: - isClientVisible = true -``` - -NOT: - -```plaintext id="cr7j27" -Shots where shot.status = CLIENT_REVIEW -``` - -This fixes: - -* incorrect versions -* missing task context -* review ambiguity - ---- - -# CLIENT PORTAL SHOULD SHOW - -Instead of: - -```plaintext id="l3l0xr" -SH010 -``` - -Show: - -```plaintext id="1e2dn4" -SH010 — COMP -v008 -``` - -Or: - -```plaintext id="nyc0h4" -SH010 — ROTO -v005 -``` - -Clients review TASK DELIVERABLES. - -Not abstract shots. - ---- - -# 3. SHOT STATUS SHOULD BE DERIVED, NOT MANUALLY DRIVEN - -Current shot statuses: - -```plaintext id="5f9n1d" -WAITING -IN_PROGRESS -INTERNAL_REVIEW -CLIENT_REVIEW -REVISIONS -APPROVED -FINAL -``` - -This is creating confusion because: - -* shots are containers -* tasks are actual workflow units - -Refactor shot statuses to be: - -* simplified -* mostly derived automatically from task states - ---- - -# NEW SHOT STATUS MODEL - -Reduce shot statuses to: - -```ts id="8km4hh" -WAITING -IN_PROGRESS -IN_REVIEW -REVISIONS -COMPLETE -``` - -Definitions: - -## WAITING - -No active tasks started. - -## IN_PROGRESS - -At least one task is: - -* TODO -* IN_PROGRESS - -## IN_REVIEW - -At least one task is: - -* INTERNAL_REVIEW -* CLIENT_REVIEW - -## REVISIONS - -At least one task is: - -* CHANGES - -## COMPLETE - -All tasks are: - -* DONE - -IMPORTANT: -Shot status should mostly be AUTO-CALCULATED from tasks. - -NOT manually set constantly. - ---- - -# 4. REMOVE "FINAL" - -The current: - -```plaintext id="qmv5ps" -APPROVED -FINAL -``` - -is redundant/confusing. - -Recommendation: -REMOVE `FINAL`. - -Use: - -```plaintext id="tyf56q" -DONE -``` - -at task level. - -And: - -```plaintext id="7u6wvp" -COMPLETE -``` - -at shot level. - -Cleaner. -Much easier mentally. - ---- - -# 5. TASK STATUS IS THE TRUE KANBAN STATUS - -Task statuses should drive: - -* kanban columns -* review state -* client review state - -Task statuses: - -```ts id="l0m39n" -TODO -IN_PROGRESS -INTERNAL_REVIEW -CLIENT_REVIEW -CHANGES -DONE -``` - -These statuses represent: - -* actual workflow state -* actual review state - ---- - -# 6. REVIEW FLOW RULES - -## Upload Version - -When artist uploads new version: - -```plaintext id="0q6qzx" -Task → INTERNAL_REVIEW -``` - -Kanban card moves automatically: - -```plaintext id="ym9x1s" -IN_PROGRESS -→ INTERNAL_REVIEW -``` - ---- - -## Supervisor Shares With Client - -When clicking: - -```plaintext id="rxry5f" -Share With Client -``` - -System should: - -* mark latest version: - isClientVisible = true -* set task status: - CLIENT_REVIEW - -Kanban updates automatically: - -```plaintext id="7j69vz" -INTERNAL_REVIEW -→ CLIENT_REVIEW -``` - ---- - -## Client Approves - -Client approval should: - -* approve ONLY the task -* NOT the entire shot - -System: - -```plaintext id="xcl9sy" -Task.status = DONE -Version.approvalStatus = APPROVED -``` - -Kanban: - -```plaintext id="p1m31i" -CLIENT_REVIEW -→ DONE -``` - ---- - -## Client Requests Changes - -System: - -```plaintext id="z5fprm" -Task.status = CHANGES -Version.approvalStatus = NEEDS_CHANGES -``` - -Kanban: - -```plaintext id="r6phfx" -CLIENT_REVIEW -→ CHANGES -``` - ---- - -# 7. SHOT COMPLETION RULE - -A shot becomes: - -```plaintext id="l16lq6" -COMPLETE -``` - -ONLY when: - -```plaintext id="t62l6n" -ALL TASKS == DONE -``` - -Example: - -```plaintext id="0b2b7h" -SH010 - ├── Track → DONE - ├── Roto → DONE - └── Comp → DONE - -=> Shot COMPLETE -``` - ---- - -# 8. CLIENT PORTAL STRUCTURE - -Refactor client portal to show: - -```plaintext id="t1qn79" -Project - ├── Shot - │ ├── Task - │ │ └── Latest Shared Version -``` - -Example UI: - -```plaintext id="mjgr1k" -SH010 - COMP — v008 - ROTO — v005 - -SH020 - COMP — v003 -``` - -This is MUCH clearer. - ---- - -# 9. TASK DETAIL PAGE SHOULD BECOME PRIMARY REVIEW HUB - -Task page should become: - -* upload page -* review page -* approval page -* history page - -Structure: - -```plaintext id="e2bd4f" -/tasks/[taskId] -``` - -Contains: - -* task info -* latest version -* version history -* comments -* annotations -* approvals -* review actions - ---- - -# 10. IMPORTANT IMPLEMENTATION NOTES - -DO NOT: - -* rewrite comment system -* rewrite annotation system -* rewrite player - -JUST: - -* move relationships from Shot → Task -* update logic -* update queries -* update review flow - -This is mostly: - -* schema cleanup -* workflow cleanup -* state cleanup - ---- - -# IMPORTANT PRODUCT PRINCIPLE - -The production hierarchy should now be: - -```plaintext id="crkxfm" -Project - → Shot - → Task - → Version - → Comments / Annotations / Approvals -``` - -NOT: - -```plaintext id="zebvlz" -Project - → Shot - → Version -``` - -That distinction fixes nearly all current workflow inconsistencies. diff --git a/PROMPT4.md b/PROMPT4.md deleted file mode 100644 index ff5198a..0000000 --- a/PROMPT4.md +++ /dev/null @@ -1,413 +0,0 @@ -Add a lightweight scheduling system to the existing FeedBack production tracking platform. - -IMPORTANT: -This is NOT enterprise scheduling. -Do NOT build Microsoft Project. -Do NOT build ShotGrid resource planning. - -The goal is: - -* simple visual scheduling -* artist workload visibility -* drag-and-drop planning -* lightweight production coordination - -Think: -“Trello timeline view for VFX tasks.” - -The complexity level should match the existing kanban implementation. - ---- - -# CORE GOAL - -Allow producers/supervisors to: - -* assign tasks to artists -* schedule when tasks should be worked on -* visualize artist workload -* see upcoming deadlines -* drag tasks around visually - -The scheduling system should integrate directly with: - -* existing Tasks -* existing Artists/Users -* existing Due Dates -* existing Kanban workflow - ---- - -# IMPORTANT PRODUCT PRINCIPLE - -Scheduling is: - -* lightweight planning -* not time tracking -* not timesheets -* not attendance management - -We are ONLY planning: - -* who works on what -* when -* for roughly how long - ---- - -# NEW PAGE - -Add: - -```plaintext id="9m0ynj" -/schedule -``` - -Add navigation item: - -```plaintext id="9cxij0" -Schedule -``` - ---- - -# SCHEDULING MODEL - -Each task already has: - -* assignedArtistId -* estimatedHours -* dueDate - -Add: - -* scheduledStartDate -* scheduledEndDate - -Optional: - -* scheduleNotes - ---- - -# ARTIST WORKLOAD ASSUMPTION - -Assume: - -```plaintext id="sls7sz" -8 working hours per day -``` - -Use estimatedHours to determine task duration visually. - -Example: - -```plaintext id="1o9r76" -16 estimated hours -= 2 scheduled work days -``` - -Keep calculations simple. - ---- - -# MAIN UI - -The scheduling page should be a hybrid: - -* kanban -* timeline/calendar - -Layout: - -```plaintext id="8fys2r" -Artists vertically -Dates horizontally -``` - -Example: - -```plaintext id="ltm7d0" - Mon Tue Wed Thu Fri - -Chris [SH010 Comp------] - -Sarah [SH020 Roto--] - -Mike [Asset Car Model----] -``` - -This should feel: - -* visual -* fast -* draggable -* uncluttered - ---- - -# TASK CARDS - -Each scheduled task block should show: - -* shot/asset code -* task type -* task status -* due date -* estimated hours - -Optional: - -* latest version indicator -* review status badge - -Color coding: - -* TODO -* IN_PROGRESS -* INTERNAL_REVIEW -* CLIENT_REVIEW -* CHANGES -* DONE - ---- - -# DRAG AND DROP - -Use: - -* dnd-kit - -Allow: - -* drag tasks between artists -* resize tasks across days -* move tasks along timeline - -When dragged: - -* update scheduledStartDate -* update scheduledEndDate -* update assignedArtistId if moved to another artist row - -Use optimistic updates. - ---- - -# SCHEDULING RULES - -Simple rules only. - -## WARNING STATES - -Highlight: - -* overdue tasks -* tasks ending after due date -* artist overload - -Example overload: - -```plaintext id="qff2t0" -Artist scheduled > 8h/day -``` - -Use visual indicators only. -DO NOT block scheduling. - ---- - -# FILTERS - -Add: - -* project filter -* artist filter -* task status filter - -Optional: - -* department filter - ---- - -# TASK SOURCE - -The schedule should ONLY display: - -* tasks with assigned artists - OR -* tasks with scheduled dates - -Unscheduled tasks remain in kanban/backlog. - ---- - -# BACKLOG PANEL - -Add optional side panel: - -```plaintext id="o0lm45" -Unscheduled Tasks -``` - -Allow dragging tasks: - -* from backlog -* onto artist schedule - -This is VERY useful. - ---- - -# REVIEW INTEGRATION - -Scheduling should integrate with review flow. - -Example: - -```plaintext id="hr4lxg" -Task enters CLIENT_REVIEW -→ visually marked on schedule -``` - -Example: - -```plaintext id="4f8pl5" -Task enters CHANGES -→ warning badge appears -``` - -This creates production awareness. - ---- - -# KANBAN INTEGRATION - -The schedule and kanban should share: - -* same task objects -* same statuses -* same assignments - -Changing status in: - -* kanban -* task page -* review flow - -should instantly reflect in schedule. - -Example: - -```plaintext id="rmy3ud" -CLIENT_REVIEW -→ DONE -``` - -Task visually updates in schedule immediately. - ---- - -# DASHBOARD WIDGETS - -Add: - -* Artist Utilization -* Tasks Due This Week -* Overloaded Artists -* Upcoming Reviews - -Simple summaries only. - ---- - -# UI REQUIREMENTS - -The scheduler should feel: - -* modern -* clean -* cinematic -* dark mode first - -Inspiration: - -* Linear roadmap -* Trello timeline -* Notion timeline -* Monday.com timeline - -BUT: -simpler and faster. - -Avoid: - -* giant grids -* enterprise clutter -* complex dependencies -* gantt-chart nightmares - ---- - -# IMPLEMENTATION PLAN - -## PHASE 1 — DATABASE - -1. Add scheduling fields to Task -2. Add indexes for schedule queries -3. Add task duration helpers - ---- - -## PHASE 2 — BASIC TIMELINE - -1. Build schedule page -2. Artist rows -3. Date columns -4. Render scheduled tasks - ---- - -## PHASE 3 — DRAG/DROP - -1. Move tasks -2. Resize durations -3. Reassign artists -4. Optimistic updates - ---- - -## PHASE 4 — BACKLOG - -1. Unscheduled task panel -2. Drag from backlog to schedule -3. Quick scheduling - ---- - -## PHASE 5 — POLISH - -1. Filters -2. Overload indicators -3. Review status badges -4. Utilization summaries - ---- - -# IMPORTANT - -Keep this system intentionally lightweight. - -The ideal workflow should feel like: - -```plaintext id="xmv8lx" -Create task -→ Assign artist -→ Drag onto schedule -→ Artist uploads version -→ Review -→ Approve -``` - -That simplicity is the product advantage. diff --git a/vfxreview.sql b/vfxreview.sql deleted file mode 100644 index b58dcaf..0000000 --- a/vfxreview.sql +++ /dev/null @@ -1,1239 +0,0 @@ --- --- PostgreSQL database dump --- - -\restrict 1whWgtdsF6xBXiPHGFiuC9Ygoef9RJWmzx1RVEWvPdonWRifHup6QOcEmo1uBHI - --- Dumped from database version 16.11 (Debian 16.11-1.pgdg13+1) --- Dumped by pg_dump version 16.11 (Debian 16.11-1.pgdg13+1) - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - --- --- Name: public; Type: SCHEMA; Schema: -; Owner: postgres --- - --- *not* creating schema, since initdb creates it - - -ALTER SCHEMA public OWNER TO postgres; - --- --- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres --- - -COMMENT ON SCHEMA public IS ''; - - --- --- Name: ApprovalStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ApprovalStatus" AS ENUM ( - 'PENDING_REVIEW', - 'APPROVED', - 'REJECTED', - 'NEEDS_CHANGES' -); - - -ALTER TYPE public."ApprovalStatus" OWNER TO postgres; - --- --- Name: NotificationType; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."NotificationType" AS ENUM ( - 'VERSION_UPLOADED', - 'FEEDBACK_ADDED', - 'SHOT_APPROVED', - 'SHOT_REJECTED', - 'COMMENT_REPLY', - 'MENTION', - 'REVISION_REQUESTED', - 'TASK_ASSIGNED', - 'TASK_OVERDUE', - 'TASK_APPROVED', - 'TASK_CHANGES_REQUESTED', - 'TASK_READY_FOR_REVIEW' -); - - -ALTER TYPE public."NotificationType" OWNER TO postgres; - --- --- Name: ProjectStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ProjectStatus" AS ENUM ( - 'ACTIVE', - 'ON_HOLD', - 'COMPLETED', - 'ARCHIVED' -); - - -ALTER TYPE public."ProjectStatus" OWNER TO postgres; - --- --- Name: ProjectType; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ProjectType" AS ENUM ( - 'STANDARD', - 'EPISODIC' -); - - -ALTER TYPE public."ProjectType" OWNER TO postgres; - --- --- Name: ReviewStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ReviewStatus" AS ENUM ( - 'PENDING', - 'INTERNAL_APPROVED', - 'CLIENT_APPROVED', - 'NEEDS_CHANGES', - 'FINAL_APPROVED' -); - - -ALTER TYPE public."ReviewStatus" OWNER TO postgres; - --- --- Name: Role; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."Role" AS ENUM ( - 'ADMIN', - 'PRODUCER', - 'SUPERVISOR', - 'ARTIST', - 'CLIENT' -); - - -ALTER TYPE public."Role" OWNER TO postgres; - --- --- Name: ShotPriority; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ShotPriority" AS ENUM ( - 'LOW', - 'NORMAL', - 'HIGH', - 'URGENT' -); - - -ALTER TYPE public."ShotPriority" OWNER TO postgres; - --- --- Name: ShotStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ShotStatus" AS ENUM ( - 'WAITING', - 'IN_PROGRESS', - 'IN_REVIEW', - 'REVISIONS', - 'COMPLETE' -); - - -ALTER TYPE public."ShotStatus" OWNER TO postgres; - --- --- Name: TaskStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."TaskStatus" AS ENUM ( - 'TODO', - 'IN_PROGRESS', - 'INTERNAL_REVIEW', - 'CLIENT_REVIEW', - 'CHANGES', - 'DONE' -); - - -ALTER TYPE public."TaskStatus" OWNER TO postgres; - --- --- Name: TaskType; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."TaskType" AS ENUM ( - 'TRACK', - 'ROTO', - 'KEY', - 'COMP', - 'FX', - 'LIGHTING', - 'RENDER', - 'ANIMATION', - 'MODEL', - 'TEXTURE', - 'RIG', - 'LOOKDEV', - 'GENERAL' -); - - -ALTER TYPE public."TaskType" OWNER TO postgres; - -SET default_tablespace = ''; - -SET default_table_access_method = heap; - --- --- Name: _prisma_migrations; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public._prisma_migrations ( - id character varying(36) NOT NULL, - checksum character varying(64) NOT NULL, - finished_at timestamp with time zone, - migration_name character varying(255) NOT NULL, - logs text, - rolled_back_at timestamp with time zone, - started_at timestamp with time zone DEFAULT now() NOT NULL, - applied_steps_count integer DEFAULT 0 NOT NULL -); - - -ALTER TABLE public._prisma_migrations OWNER TO postgres; - --- --- Name: accounts; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.accounts ( - id text NOT NULL, - "userId" text NOT NULL, - type text NOT NULL, - provider text NOT NULL, - "providerAccountId" text NOT NULL, - refresh_token text, - access_token text, - expires_at integer, - token_type text, - scope text, - id_token text, - session_state text -); - - -ALTER TABLE public.accounts OWNER TO postgres; - --- --- Name: annotations; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.annotations ( - id text NOT NULL, - "versionId" text NOT NULL, - "commentId" text, - "authorId" text, - "frameNumber" integer NOT NULL, - "drawingData" jsonb NOT NULL, - color text DEFAULT '#ef4444'::text NOT NULL, - "isVisible" boolean DEFAULT true NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.annotations OWNER TO postgres; - --- --- Name: approvals; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.approvals ( - id text NOT NULL, - "versionId" text NOT NULL, - "userId" text, - status public."ApprovalStatus" NOT NULL, - notes text, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.approvals OWNER TO postgres; - --- --- Name: assets; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.assets ( - id text NOT NULL, - "projectId" text NOT NULL, - "assetCode" text NOT NULL, - name text NOT NULL, - description text, - status public."ShotStatus" DEFAULT 'WAITING'::public."ShotStatus" NOT NULL, - priority public."ShotPriority" DEFAULT 'NORMAL'::public."ShotPriority" NOT NULL, - "leadId" text, - "dueDate" timestamp(3) without time zone, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.assets OWNER TO postgres; - --- --- Name: client_access; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.client_access ( - id text NOT NULL, - "userId" text NOT NULL, - "clientId" text NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.client_access OWNER TO postgres; - --- --- Name: clients; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.clients ( - id text NOT NULL, - company text NOT NULL, - "contactPerson" text NOT NULL, - email text NOT NULL, - phone text, - notes text, - "logoUrl" text, - "isActive" boolean DEFAULT true NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.clients OWNER TO postgres; - --- --- Name: comment_replies; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.comment_replies ( - id text NOT NULL, - "commentId" text NOT NULL, - "authorId" text, - text text NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.comment_replies OWNER TO postgres; - --- --- Name: comments; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.comments ( - id text NOT NULL, - "versionId" text NOT NULL, - "authorId" text, - "frameNumber" integer NOT NULL, - "timestamp" double precision NOT NULL, - text text NOT NULL, - "isResolved" boolean DEFAULT false NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.comments OWNER TO postgres; - --- --- Name: notifications; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.notifications ( - id text NOT NULL, - "userId" text NOT NULL, - type public."NotificationType" NOT NULL, - title text NOT NULL, - message text NOT NULL, - data jsonb, - "isRead" boolean DEFAULT false NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.notifications OWNER TO postgres; - --- --- Name: projects; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.projects ( - id text NOT NULL, - name text NOT NULL, - code text NOT NULL, - description text, - status public."ProjectStatus" DEFAULT 'ACTIVE'::public."ProjectStatus" NOT NULL, - "dueDate" timestamp(3) without time zone, - "startDate" timestamp(3) without time zone, - "clientId" text, - "producerId" text, - "supervisorId" text, - "slackWebhook" text, - "slackChannel" text, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - "showId" text DEFAULT ''::text NOT NULL, - "projectType" public."ProjectType" DEFAULT 'STANDARD'::public."ProjectType" NOT NULL -); - - -ALTER TABLE public.projects OWNER TO postgres; - --- --- Name: review_sessions; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.review_sessions ( - id text NOT NULL, - "projectId" text NOT NULL, - token text NOT NULL, - label text, - email text, - "expiresAt" timestamp(3) without time zone NOT NULL, - "isActive" boolean DEFAULT true NOT NULL, - "accessCount" integer DEFAULT 0 NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.review_sessions OWNER TO postgres; - --- --- Name: sessions; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.sessions ( - id text NOT NULL, - "sessionToken" text NOT NULL, - "userId" text NOT NULL, - expires timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.sessions OWNER TO postgres; - --- --- Name: shots; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.shots ( - id text NOT NULL, - "shotCode" text NOT NULL, - sequence text, - description text, - status public."ShotStatus" DEFAULT 'WAITING'::public."ShotStatus" NOT NULL, - priority public."ShotPriority" DEFAULT 'NORMAL'::public."ShotPriority" NOT NULL, - "artistId" text, - "projectId" text NOT NULL, - "frameStart" integer, - "frameEnd" integer, - fps double precision DEFAULT 24 NOT NULL, - "dueDate" timestamp(3) without time zone, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - scene text DEFAULT ''::text NOT NULL, - episode text, - "shotNumber" integer DEFAULT 0 NOT NULL, - "thumbnailUrl" text -); - - -ALTER TABLE public.shots OWNER TO postgres; - --- --- Name: tasks; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.tasks ( - id text NOT NULL, - title text NOT NULL, - description text, - type public."TaskType" DEFAULT 'GENERAL'::public."TaskType" NOT NULL, - status public."TaskStatus" DEFAULT 'TODO'::public."TaskStatus" NOT NULL, - priority public."ShotPriority" DEFAULT 'NORMAL'::public."ShotPriority" NOT NULL, - "dueDate" timestamp(3) without time zone, - "estimatedHours" double precision, - "sortOrder" integer DEFAULT 0 NOT NULL, - "shotId" text, - "assetId" text, - "assignedArtistId" text, - "createdById" text, - "projectId" text NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.tasks OWNER TO postgres; - --- --- Name: users; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.users ( - id text NOT NULL, - name text, - email text NOT NULL, - "emailVerified" timestamp(3) without time zone, - image text, - "passwordHash" text, - role public."Role" DEFAULT 'ARTIST'::public."Role" NOT NULL, - "isActive" boolean DEFAULT true NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - "mustChangePassword" boolean DEFAULT false NOT NULL -); - - -ALTER TABLE public.users OWNER TO postgres; - --- --- Name: verification_tokens; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.verification_tokens ( - identifier text NOT NULL, - token text NOT NULL, - expires timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.verification_tokens OWNER TO postgres; - --- --- Name: versions; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.versions ( - id text NOT NULL, - "versionNumber" integer NOT NULL, - "shotId" text, - "artistId" text, - "fileUrl" text NOT NULL, - "fileName" text NOT NULL, - "fileSize" bigint, - "mimeType" text, - "thumbnailUrl" text, - "posterUrl" text, - "proxyUrl" text, - fps double precision DEFAULT 24 NOT NULL, - duration double precision, - "frameCount" integer, - width integer, - height integer, - notes text, - "approvalStatus" public."ApprovalStatus" DEFAULT 'PENDING_REVIEW'::public."ApprovalStatus" NOT NULL, - "reviewStatus" public."ReviewStatus" DEFAULT 'PENDING'::public."ReviewStatus" NOT NULL, - "isLatest" boolean DEFAULT true NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - "isClientVisible" boolean DEFAULT false NOT NULL, - "sharedAt" timestamp(3) without time zone, - "sharedById" text, - "taskId" text -); - - -ALTER TABLE public.versions OWNER TO postgres; - --- --- Data for Name: _prisma_migrations; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public._prisma_migrations (id, checksum, finished_at, migration_name, logs, rolled_back_at, started_at, applied_steps_count) FROM stdin; -e1e67776-5fbb-4639-98c5-028a2891bab9 ba0a3793ab2cee7f72249246db5e1fdbf12170981e24aeaeedf02adefbeace1a 2026-05-15 07:12:53.510646+00 20260514062418_01_initial_migration \N \N 2026-05-15 07:12:52.845407+00 1 -b805947c-ab7d-4a86-82f6-0929c7007869 4c08fb5ebd7e3892395404a146553456182fb5922baf892ed550493ac041ce07 2026-05-15 07:12:53.682166+00 20260514105432_add_tasks_assets_client_visibility \N \N 2026-05-15 07:12:53.523009+00 1 -a54ab11f-9d6a-4884-8521-953cd2f1796e 10cce7cbaf37bcd8825e883755f4fe147d6e3cf6311d77f8a56038f2d7709045 2026-05-15 07:12:53.967865+00 20260514120000_task_first_workflow \N \N 2026-05-15 07:12:53.692238+00 1 -7a6ca15a-d86b-4838-bfe2-c1760ffe3780 babb30e6fd032a3ba74f73c738b2a432fe88a0926dd4fea1d12257284cc7d1aa 2026-05-15 07:12:54.018215+00 20260514130000_shot_naming_conventions \N \N 2026-05-15 07:12:53.976314+00 1 -f2c31504-2756-4621-aa24-059aba13f088 5d175c77a7dc60a219608898fb8a3eb06c74640c19f5359473700b51cfa865d0 2026-05-15 07:12:54.05694+00 20260515070205_add_shot_thumbnail \N \N 2026-05-15 07:12:54.026791+00 1 -4af4adb1-cc6b-4dc7-a7a2-7ffc15a0813c b5c045382fa853fcd915a4a05b127e116e87611e445e1d7dd51c2b8f07e7f864 2026-05-15 09:08:49.790348+00 20260515090849_add_must_change_password \N \N 2026-05-15 09:08:49.722293+00 1 -6668f4e3-ec46-4c8e-9fad-767a86abc051 f0118cfdcbf87576ba3e2ee217945825a8db0ee9397e452535ed11e10c675e17 2026-05-15 09:40:28.976683+00 20260515094028_nullable_user_fks_for_delete \N \N 2026-05-15 09:40:28.870877+00 1 -\. - - --- --- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.accounts (id, "userId", type, provider, "providerAccountId", refresh_token, access_token, expires_at, token_type, scope, id_token, session_state) FROM stdin; -\. - - --- --- Data for Name: annotations; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.annotations (id, "versionId", "commentId", "authorId", "frameNumber", "drawingData", color, "isVisible", "createdAt") FROM stdin; -cmp6mgr38000vua0gil3ztyft cmp6m2h1l000oua0gk6kp9kyv \N \N 102 {"shapes": [{"id": "13579e0c-0678-4d28-ae1d-a8f1d4c5fe4c", "tool": "freehand", "color": "#ef4444", "points": [{"x": 0.6622242647058824, "y": 0.3543465734557578}, {"x": 0.6617647058823529, "y": 0.3543465734557578}, {"x": 0.6613051470588235, "y": 0.3526194577390048}, {"x": 0.6599264705882353, "y": 0.3517558998806283}, {"x": 0.6553308823529411, "y": 0.3517558998806283}, {"x": 0.6484375, "y": 0.3517558998806283}, {"x": 0.6452205882352942, "y": 0.3517558998806283}, {"x": 0.6401654411764706, "y": 0.3517558998806283}, {"x": 0.6337316176470589, "y": 0.3517558998806283}, {"x": 0.6286764705882353, "y": 0.3517558998806283}, {"x": 0.6240808823529411, "y": 0.3517558998806283}, {"x": 0.6167279411764706, "y": 0.3517558998806283}, {"x": 0.6139705882352942, "y": 0.3517558998806283}, {"x": 0.6066176470588235, "y": 0.3517558998806283}, {"x": 0.5978860294117647, "y": 0.3517558998806283}, {"x": 0.5896139705882353, "y": 0.3526194577390048}, {"x": 0.5827205882352942, "y": 0.3543465734557578}, {"x": 0.5762867647058824, "y": 0.3603914784643934}, {"x": 0.5707720588235294, "y": 0.3690270570481585}, {"x": 0.5657169117647058, "y": 0.3767990777735472}, {"x": 0.5615808823529411, "y": 0.3862982142156888}, {"x": 0.5583639705882353, "y": 0.3949337927994538}, {"x": 0.5574448529411765, "y": 0.3992515820913364}, {"x": 0.5546875, "y": 0.4061600449583485}, {"x": 0.5523897058823529, "y": 0.4147956235421136}, {"x": 0.5519301470588235, "y": 0.4191134128339962}, {"x": 0.5500919117647058, "y": 0.4337938964263969}, {"x": 0.5487132352941176, "y": 0.444156590726915}, {"x": 0.5477941176470589, "y": 0.4553828428858097}, {"x": 0.5477941176470589, "y": 0.4691997686198338}, {"x": 0.5477941176470589, "y": 0.484743810070611}, {"x": 0.5487132352941176, "y": 0.5011514093797648}, {"x": 0.5496323529411765, "y": 0.5054691986716473}, {"x": 0.5533088235294118, "y": 0.5158318929721655}, {"x": 0.5560661764705882, "y": 0.5261945872726835}, {"x": 0.5597426470588235, "y": 0.5356937237148252}, {"x": 0.5647977941176471, "y": 0.5460564180153433}, {"x": 0.5707720588235294, "y": 0.559009785890991}, {"x": 0.578125, "y": 0.5676453644747561}, {"x": 0.5863970588235294, "y": 0.5754173852001447}, {"x": 0.5955882352941176, "y": 0.5814622902087803}, {"x": 0.6038602941176471, "y": 0.5866436373590393}, {"x": 0.6144301470588235, "y": 0.5892343109341689}, {"x": 0.6204044117647058, "y": 0.5909614266509219}, {"x": 0.6314338235294118, "y": 0.5918249845092984}, {"x": 0.6415441176470589, "y": 0.5918249845092984}, {"x": 0.6507352941176471, "y": 0.5909614266509219}, {"x": 0.6599264705882353, "y": 0.5849165216422864}, {"x": 0.6681985294117647, "y": 0.5754173852001447}, {"x": 0.6755514705882353, "y": 0.5650546908996266}, {"x": 0.6819852941176471, "y": 0.5546919965991084}, {"x": 0.6875, "y": 0.5417386287234608}, {"x": 0.6920955882352942, "y": 0.5261945872726835}, {"x": 0.6948529411764706, "y": 0.5115141036802828}, {"x": 0.6957720588235294, "y": 0.5046056408132708}, {"x": 0.6980698529411765, "y": 0.4907887150792466}, {"x": 0.6994485294117647, "y": 0.4778353472035989}, {"x": 0.6999080882352942, "y": 0.4648819793279513}, {"x": 0.6999080882352942, "y": 0.4545192850274332}, {"x": 0.6999080882352942, "y": 0.444156590726915}, {"x": 0.6994485294117647, "y": 0.4355210121431499}, {"x": 0.6971507352941176, "y": 0.4242947599842553}, {"x": 0.6934742647058824, "y": 0.4156591814004901}, {"x": 0.6893382352941176, "y": 0.4044329292415955}, {"x": 0.6856617647058824, "y": 0.3992515820913364}, {"x": 0.6810661764705882, "y": 0.3914795613659478}, {"x": 0.6769301470588235, "y": 0.3854346563573122}, {"x": 0.6737132352941176, "y": 0.3811168670654297}, {"x": 0.6709558823529411, "y": 0.3776626356319236}, {"x": 0.6659007352941176, "y": 0.3724812884816646}, {"x": 0.6622242647058824, "y": 0.368163499189782}, {"x": 0.6576286764705882, "y": 0.3629821520395229}, {"x": 0.6516544117647058, "y": 0.3595279206060169}, {"x": 0.6461397058823529, "y": 0.3543465734557578}, {"x": 0.6420036764705882, "y": 0.3526194577390048}, {"x": 0.640625, "y": 0.3517558998806283}, {"x": 0.6369485294117647, "y": 0.3508923420222518}, {"x": 0.6337316176470589, "y": 0.3508923420222518}, {"x": 0.6323529411764706, "y": 0.3500287841638753}, {"x": 0.6323529411764706, "y": 0.3500287841638753}], "frameNumber": 102, "strokeWidth": 2}], "version": "1.0", "canvasWidth": 2176, "canvasHeight": 1158} #ef4444 t 2026-05-15 07:54:58.724 -cmp6mhveu0011ua0g65rmd433 cmp6m2h1l000oua0gk6kp9kyv \N \N 93 {"shapes": [{"id": "4061ab2a-1375-4bd6-80d3-d1b736485801", "tool": "freehand", "color": "#ef4444", "points": [{"x": 0.5709821428571429, "y": 0.4498550713580587}, {"x": 0.5700892857142857, "y": 0.4481159409232762}, {"x": 0.565625, "y": 0.442028984401537}, {"x": 0.5633928571428571, "y": 0.442028984401537}, {"x": 0.5584821428571428, "y": 0.4385507235319718}, {"x": 0.5526785714285715, "y": 0.4359420278797979}, {"x": 0.5464285714285714, "y": 0.4350724626624066}, {"x": 0.540625, "y": 0.4350724626624066}, {"x": 0.5379464285714286, "y": 0.4350724626624066}, {"x": 0.5330357142857143, "y": 0.4411594191841457}, {"x": 0.5272321428571428, "y": 0.4542028974450153}, {"x": 0.5209821428571428, "y": 0.473333332227624}, {"x": 0.5160714285714286, "y": 0.4985507235319718}, {"x": 0.5142857142857142, "y": 0.5107246365754501}, {"x": 0.5138392857142857, "y": 0.5385507235319718}, {"x": 0.5165178571428571, "y": 0.5689855061406675}, {"x": 0.5223214285714286, "y": 0.5942028974450153}, {"x": 0.53125, "y": 0.6168115930971892}, {"x": 0.5410714285714285, "y": 0.6394202887493631}, {"x": 0.5517857142857143, "y": 0.653333332227624}, {"x": 0.5611607142857142, "y": 0.6585507235319719}, {"x": 0.56875, "y": 0.6594202887493631}, {"x": 0.5767857142857142, "y": 0.6594202887493631}, {"x": 0.5830357142857143, "y": 0.6515942017928413}, {"x": 0.5866071428571429, "y": 0.6437681148363197}, {"x": 0.590625, "y": 0.6281159409232762}, {"x": 0.5933035714285714, "y": 0.6081159409232761}, {"x": 0.5946428571428571, "y": 0.5872463757058849}, {"x": 0.5955357142857143, "y": 0.5655072452711022}, {"x": 0.5955357142857143, "y": 0.5446376800537109}, {"x": 0.5941964285714286, "y": 0.5255072452711023}, {"x": 0.5892857142857143, "y": 0.5063768104884936}, {"x": 0.5848214285714286, "y": 0.4907246365754501}, {"x": 0.5776785714285714, "y": 0.4785507235319718}, {"x": 0.5741071428571428, "y": 0.4715942017928414}, {"x": 0.5678571428571428, "y": 0.4646376800537109}, {"x": 0.5625, "y": 0.4594202887493631}, {"x": 0.5589285714285714, "y": 0.4568115930971892}, {"x": 0.5566964285714285, "y": 0.4559420278797979}, {"x": 0.5526785714285715, "y": 0.4542028974450153}, {"x": 0.5486607142857143, "y": 0.4542028974450153}, {"x": 0.5455357142857142, "y": 0.4542028974450153}, {"x": 0.5446428571428571, "y": 0.4542028974450153}], "frameNumber": 93, "strokeWidth": 2}], "version": "1.0", "canvasWidth": 2240, "canvasHeight": 1150} #ef4444 t 2026-05-15 07:55:50.982 -cmp6mi1ql0015ua0gg6046gwx cmp6m2h1l000oua0gk6kp9kyv \N \N 123 {"shapes": [{"id": "8c074df8-1e9e-4edc-b8c3-c720a7fc8741", "tool": "freehand", "color": "#ef4444", "points": [{"x": 0.5401785714285714, "y": 0.3976811583145805}, {"x": 0.5375, "y": 0.3968115930971892}, {"x": 0.53125, "y": 0.3968115930971892}, {"x": 0.5290178571428571, "y": 0.3968115930971892}, {"x": 0.5196428571428572, "y": 0.3968115930971892}, {"x": 0.5053571428571428, "y": 0.393333332227624}, {"x": 0.4875, "y": 0.3924637670102327}, {"x": 0.4705357142857143, "y": 0.3924637670102327}, {"x": 0.4642857142857143, "y": 0.3924637670102327}, {"x": 0.4535714285714286, "y": 0.3924637670102327}, {"x": 0.4375, "y": 0.393333332227624}, {"x": 0.4272321428571428, "y": 0.4002898539667544}, {"x": 0.415625, "y": 0.4107246365754501}, {"x": 0.4075892857142857, "y": 0.4228985496189283}, {"x": 0.4053571428571429, "y": 0.4272463757058849}, {"x": 0.4017857142857143, "y": 0.4368115930971892}, {"x": 0.4008928571428572, "y": 0.4463768104884935}, {"x": 0.4008928571428572, "y": 0.4576811583145805}, {"x": 0.4058035714285714, "y": 0.4742028974450153}, {"x": 0.4183035714285714, "y": 0.4959420278797979}, {"x": 0.4330357142857143, "y": 0.513333332227624}, {"x": 0.4575892857142857, "y": 0.5237681148363197}, {"x": 0.4821428571428572, "y": 0.5255072452711023}, {"x": 0.5013392857142858, "y": 0.5255072452711023}, {"x": 0.5111607142857143, "y": 0.5237681148363197}, {"x": 0.5258928571428572, "y": 0.5159420278797979}, {"x": 0.5366071428571428, "y": 0.5028985496189283}, {"x": 0.5455357142857142, "y": 0.4855072452711022}, {"x": 0.5508928571428572, "y": 0.4715942017928414}, {"x": 0.5526785714285715, "y": 0.4559420278797979}, {"x": 0.5526785714285715, "y": 0.442028984401537}, {"x": 0.5504464285714286, "y": 0.4272463757058849}, {"x": 0.54375, "y": 0.4107246365754501}, {"x": 0.5330357142857143, "y": 0.3968115930971892}, {"x": 0.5205357142857143, "y": 0.3828985496189283}, {"x": 0.5142857142857142, "y": 0.3794202887493631}, {"x": 0.5008928571428571, "y": 0.3689855061406674}, {"x": 0.4875, "y": 0.3646376800537109}, {"x": 0.4723214285714286, "y": 0.362028984401537}, {"x": 0.4642857142857143, "y": 0.362028984401537}, {"x": 0.4410714285714286, "y": 0.362028984401537}, {"x": 0.4245535714285714, "y": 0.362028984401537}, {"x": 0.4107142857142857, "y": 0.3689855061406674}, {"x": 0.3991071428571429, "y": 0.3794202887493631}, {"x": 0.3919642857142857, "y": 0.3924637670102327}, {"x": 0.3897321428571429, "y": 0.402028984401537}, {"x": 0.3875, "y": 0.4202898539667544}, {"x": 0.3875, "y": 0.4428985496189283}, {"x": 0.3919642857142857, "y": 0.4646376800537109}, {"x": 0.3995535714285715, "y": 0.4846376800537109}, {"x": 0.4120535714285714, "y": 0.5046376800537109}, {"x": 0.4303571428571429, "y": 0.522028984401537}, {"x": 0.4491071428571429, "y": 0.5342028974450153}, {"x": 0.4674107142857143, "y": 0.5411594191841457}, {"x": 0.484375, "y": 0.5428985496189284}, {"x": 0.4928571428571429, "y": 0.5428985496189284}, {"x": 0.509375, "y": 0.5359420278797979}, {"x": 0.5223214285714286, "y": 0.522028984401537}, {"x": 0.5325892857142858, "y": 0.5046376800537109}, {"x": 0.5419642857142857, "y": 0.4855072452711022}, {"x": 0.5482142857142858, "y": 0.4663768104884936}, {"x": 0.5508928571428572, "y": 0.4515942017928414}, {"x": 0.5513392857142857, "y": 0.442028984401537}, {"x": 0.5504464285714286, "y": 0.4307246365754501}, {"x": 0.5450892857142857, "y": 0.4176811583145805}, {"x": 0.5361607142857143, "y": 0.4046376800537109}, {"x": 0.53125, "y": 0.3994202887493631}, {"x": 0.5214285714285715, "y": 0.3898550713580587}, {"x": 0.5098214285714285, "y": 0.3811594191841457}, {"x": 0.5017857142857143, "y": 0.3776811583145805}, {"x": 0.4991071428571429, "y": 0.3768115930971892}, {"x": 0.4986607142857143, "y": 0.3768115930971892}], "frameNumber": 123, "strokeWidth": 2}], "version": "1.0", "canvasWidth": 2240, "canvasHeight": 1150} #ef4444 t 2026-05-15 07:55:59.181 -\. - - --- --- Data for Name: approvals; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.approvals (id, "versionId", "userId", status, notes, "createdAt") FROM stdin; -cmp6m4exd000tua0g9ze76dua cmp6lpfmx000dua0gr256g7bd \N APPROVED 2026-05-15 07:45:23.089 -cmp6ms0n0001bua0gem455iqz cmp6m2h1l000oua0gk6kp9kyv \N APPROVED 2026-05-15 08:03:44.316 -cmp6mtzxh001fua0gb3x83byq cmp6m2h1l000oua0gk6kp9kyv \N NEEDS_CHANGES not great\n 2026-05-15 08:05:16.71 -cmp6mw17e001mua0g0wv6g2yc cmp6muvky001hua0gtvk9sx7j \N APPROVED 2026-05-15 08:06:51.675 -cmp6n93sf0029ua0go7z1o88m cmp6n30cr001yua0gijmi6ab8 \N APPROVED 2026-05-15 08:17:01.552 -cmp6ndq2r002hua0g9olq4s8b cmp6muvky001hua0gtvk9sx7j \N NEEDS_CHANGES Didnt work! 2026-05-15 08:20:37.059 -\. - - --- --- Data for Name: assets; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.assets (id, "projectId", "assetCode", name, description, status, priority, "leadId", "dueDate", "createdAt", "updatedAt") FROM stdin; -\. - - --- --- Data for Name: client_access; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.client_access (id, "userId", "clientId", "createdAt") FROM stdin; -\. - - --- --- Data for Name: clients; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.clients (id, company, "contactPerson", email, phone, notes, "logoUrl", "isActive", "createdAt", "updatedAt") FROM stdin; -cmp6pm6bg0004uaecev06fsly YellowBone Entertainment Dries Scholtz driesscholtz@gmail.com \N t 2026-05-15 09:23:10.588 2026-05-15 09:23:10.588 -cmp6pqo2l0005uaecmp57rjpt Ungovernable Cartel (Pty) Ltd Nono Mofokeng nmofokeng@netflixpartner.com +27 83 207 3993 VFX Coordinator at Ungovernable Cartel (Pty) Ltd \N t 2026-05-15 09:26:40.221 2026-05-15 09:26:40.221 -cmp6pt47s0006uaechzp496j4 Red Letter Day Pictures Rene van Rooyen rene@redletterdaypictures.com \N t 2026-05-15 09:28:34.455 2026-05-15 09:28:34.455 -cmp6pvnin0009uaece99q52q7 Ebony Life Media Heidi Uys heidi@ebonylifemedia.com \N t 2026-05-15 09:30:32.782 2026-05-15 09:30:32.782 -\. - - --- --- Data for Name: comment_replies; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.comment_replies (id, "commentId", "authorId", text, "createdAt", "updatedAt") FROM stdin; -\. - - --- --- Data for Name: comments; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.comments (id, "versionId", "authorId", "frameNumber", "timestamp", text, "isResolved", "createdAt", "updatedAt") FROM stdin; -cmp6mst1b001dua0gynmpdyay cmp6m2h1l000oua0gk6kp9kyv \N 61 2.541666666666667 what is this? f 2026-05-15 08:04:21.119 2026-05-15 08:04:21.119 -cmp6mya3t001oua0gtmoq1kbz cmp6muvky001hua0gtvk9sx7j \N 63 2.625 Check this please f 2026-05-15 08:08:36.522 2026-05-15 08:08:36.522 -cmp6n48nx0025ua0g9roxnf76 cmp6n30cr001yua0gijmi6ab8 \N 111 4.625 test2 f 2026-05-15 08:13:14.589 2026-05-15 08:13:14.589 -cmp6n8iot0027ua0g9bvrlc33 cmp6n30cr001yua0gijmi6ab8 \N 0 0 test3 f 2026-05-15 08:16:34.205 2026-05-15 08:16:34.205 -cmp6nfa81002nua0gpdvj9j52 cmp6n30cr001yua0gijmi6ab8 \N 127 5.291666666666667 this is cool f 2026-05-15 08:21:49.826 2026-05-15 08:21:49.826 -cmp6nh75o002rua0gkoive3ph cmp6n30cr001yua0gijmi6ab8 \N 81 3.375 test f 2026-05-15 08:23:19.164 2026-05-15 08:23:19.164 -cmp6mgr6y000xua0goma5pwmr cmp6m2h1l000oua0gk6kp9kyv \N 102 4.25 ✏️ Annotation at frame 102 f 2026-05-15 07:54:58.858 2026-05-15 07:54:58.858 -cmp6mgxgf000zua0gl10gb67b cmp6m2h1l000oua0gk6kp9kyv \N 102 4.25 Out of focus f 2026-05-15 07:55:06.976 2026-05-15 07:55:06.976 -cmp6mhvhr0013ua0giy5xzd5s cmp6m2h1l000oua0gk6kp9kyv \N 93 3.875 ✏️ Annotation at frame 93 f 2026-05-15 07:55:51.087 2026-05-15 07:55:51.087 -cmp6mi1th0017ua0gbgh5hh4q cmp6m2h1l000oua0gk6kp9kyv \N 123 5.125 ✏️ Annotation at frame 123 f 2026-05-15 07:55:59.285 2026-05-15 07:55:59.285 -cmp6mobc00019ua0gb049awv0 cmp6m2h1l000oua0gk6kp9kyv \N 115 4.791666666666667 looks a little wonky f 2026-05-15 08:00:51.551 2026-05-15 08:00:51.551 -cmp6mzdh2001qua0gnhf2c6ag cmp6muvky001hua0gtvk9sx7j \N 130 5.416666666666667 this is the internal review comment f 2026-05-15 08:09:27.541 2026-05-15 08:09:27.541 -cmp6n1hcg001sua0gmsn82v7j cmp6muvky001hua0gtvk9sx7j \N 108 4.5 test f 2026-05-15 08:11:05.873 2026-05-15 08:11:05.873 -cmp6n3joh0023ua0g9ai3yhrh cmp6n30cr001yua0gijmi6ab8 \N 108 4.5 test f 2026-05-15 08:12:42.209 2026-05-15 08:12:42.209 -cmp6ndfko002fua0gm5e9w1sk cmp6muvky001hua0gtvk9sx7j \N 87 3.625 TESTINT f 2026-05-15 08:20:23.448 2026-05-15 08:20:23.448 -cmp6nesy8002lua0gwsndjgoh cmp6muvky001hua0gtvk9sx7j \N 87 3.625 check f 2026-05-15 08:21:27.44 2026-05-15 08:21:27.44 -cmp6ngvvl002pua0gtcultp1r cmp6muvky001hua0gtvk9sx7j \N 55 2.291666666666667 Whatabout here? f 2026-05-15 08:23:04.544 2026-05-15 08:23:04.544 -\. - - --- --- Data for Name: notifications; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.notifications (id, "userId", type, title, message, data, "isRead", "createdAt") FROM stdin; -cmp6qz5om0001ua0srnfika29 cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (UNG_101_01_0010) {"taskId": "cmp6lonel0009ua0gsfb8meil"} f 2026-05-15 10:01:15.91 -\. - - --- --- Data for Name: projects; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.projects (id, name, code, description, status, "dueDate", "startDate", "clientId", "producerId", "supervisorId", "slackWebhook", "slackChannel", "createdAt", "updatedAt", "showId", "projectType") FROM stdin; -cmp6pjs5c0003uaecugx03rsv Queenstown Kings: Back 2 Goal QTK-26 Netflix sequel to Queenstown Kings, a soccer film set in rural South Africa. ACTIVE 2026-12-31 00:00:00 2026-05-18 00:00:00 cmp6pm6bg0004uaecev06fsly cmp6p76do0000uaec12miwml1 cmp6p84ln0001uaec9xgguyqg https://hooks.slack.com/services/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 \N 2026-05-15 09:21:18.912 2026-05-15 09:23:23.769 QTK STANDARD -cmp6l5mzq0001ua0gz07bk72f Ungovernable UNG_S1 Netflix tellanovella crime thirller set in South Africa ACTIVE 2026-11-30 00:00:00 \N cmp6pqo2l0005uaecmp57rjpt cmp6p76do0000uaec12miwml1 cmp6p84ln0001uaec9xgguyqg https://hooks.slack.com/services/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 \t#ungovernable 2026-05-15 07:18:20.582 2026-05-15 09:32:41.717 UNG EPISODIC -cmp6px3ak000buaec7dks2bi1 The Secret Lives of Baba Segi's Wives BAB-26 Nigerian Netfilx Film. ACTIVE 2026-05-30 00:00:00 \N cmp6pvnin0009uaece99q52q7 cmp6p76do0000uaec12miwml1 cmp6p84ln0001uaec9xgguyqg https://hooks.slack.com/services/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 \N 2026-05-15 09:31:39.884 2026-05-15 09:33:59.63 BAB STANDARD -cmp6pu8h20008uaecsh1y7egv Better As Gister BAG_S1 Kyknet/Mnet drama series set in Cape Town. ACTIVE 2026-08-31 00:00:00 \N cmp6pt47s0006uaechzp496j4 cmp6p84ln0001uaec9xgguyqg \N https://hooks.slack.com/services/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 \N 2026-05-15 09:29:26.63 2026-05-15 09:34:19.067 BAG EPISODIC -\. - - --- --- Data for Name: review_sessions; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.review_sessions (id, "projectId", token, label, email, "expiresAt", "isActive", "accessCount", "createdAt") FROM stdin; -cmp6lbitx0006ua0gjn87gy7c cmp6l5mzq0001ua0gz07bk72f cmp6lbitx0007ua0gg3r6fb1l Review Round 1 client@studio.com 2026-06-14 07:22:55.125 t 34 2026-05-15 07:22:55.126 -\. - - --- --- Data for Name: sessions; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.sessions (id, "sessionToken", "userId", expires) FROM stdin; -\. - - --- --- Data for Name: shots; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.shots (id, "shotCode", sequence, description, status, priority, "artistId", "projectId", "frameStart", "frameEnd", fps, "dueDate", "createdAt", "updatedAt", scene, episode, "shotNumber", "thumbnailUrl") FROM stdin; -cmp6lab2c0003ua0gqfuqv2zi UNG_101_01_0010 \N Add Lighting behind the building COMPLETE NORMAL \N cmp6l5mzq0001ua0gz07bk72f \N \N 24 \N 2026-05-15 07:21:58.404 2026-05-15 07:45:23.131 01 101 10 /api/files/image%2Fa2065027-698b-40eb-85d4-e8aba9737068-Screenshot%202026-05-15%20092103.png -cmp6ly5w9000iua0gd4p83r25 UNG_102_35_0010 \N Add blood to Mondi's shirt REVISIONS NORMAL \N cmp6l5mzq0001ua0gz07bk72f \N \N 24 \N 2026-05-15 07:40:31.449 2026-05-15 08:20:37.121 35 102 10 /api/files/image%2F776ff254-f529-462a-9547-56af08e81f36-Screenshot%202026-05-15%20093934.png -\. - - --- --- Data for Name: tasks; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.tasks (id, title, description, type, status, priority, "dueDate", "estimatedHours", "sortOrder", "shotId", "assetId", "assignedArtistId", "createdById", "projectId", "createdAt", "updatedAt") FROM stdin; -cmp6nb5re002bua0gpj1b0r5m Key KEY TODO NORMAL \N 6 2 cmp6ly5w9000iua0gd4p83r25 \N \N \N cmp6l5mzq0001ua0gz07bk72f 2026-05-15 08:18:37.418 2026-05-15 08:18:37.418 -cmp6n2ndd001uua0gyrhinj0b Roto FX DONE NORMAL \N 6 1 cmp6ly5w9000iua0gd4p83r25 \N \N \N cmp6l5mzq0001ua0gz07bk72f 2026-05-15 08:12:00.338 2026-05-15 08:17:01.583 -cmp6m1tkq000kua0gazp1izqc Comp COMP CHANGES NORMAL 2026-05-29 00:00:00 2 0 cmp6ly5w9000iua0gd4p83r25 \N \N \N cmp6l5mzq0001ua0gz07bk72f 2026-05-15 07:43:22.107 2026-05-15 08:20:37.103 -cmp6lonel0009ua0gsfb8meil Comp COMP DONE NORMAL 2026-05-16 00:00:00 5 0 cmp6lab2c0003ua0gqfuqv2zi \N cmp6p84ln0001uaec9xgguyqg \N cmp6l5mzq0001ua0gz07bk72f 2026-05-15 07:33:07.582 2026-05-15 10:01:15.874 -\. - - --- --- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.users (id, name, email, "emailVerified", image, "passwordHash", role, "isActive", "createdAt", "updatedAt", "mustChangePassword") FROM stdin; -cmp6p76do0000uaec12miwml1 Michelle Pinto michelle@twotalesanimation.com \N \N $2a$12$74w6W8UCBfoNHTZDEfIiDullrhpDwxdntHchJ3osnw3jeQCFmee5q PRODUCER t 2026-05-15 09:11:30.828 2026-05-15 09:11:30.828 t -cmp6p84ln0001uaec9xgguyqg Chris Pinto chris@twotalesanimation.com \N \N $2a$12$5ufWMRE8PvIIJkVTtMHK8eGh.5A4RWAm/QZloyWyKRLRZkYAWzl9C ADMIN t 2026-05-15 09:12:15.179 2026-05-15 09:12:59.339 f -\. - - --- --- Data for Name: verification_tokens; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.verification_tokens (identifier, token, expires) FROM stdin; -\. - - --- --- Data for Name: versions; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.versions (id, "versionNumber", "shotId", "artistId", "fileUrl", "fileName", "fileSize", "mimeType", "thumbnailUrl", "posterUrl", "proxyUrl", fps, duration, "frameCount", width, height, notes, "approvalStatus", "reviewStatus", "isLatest", "createdAt", "updatedAt", "isClientVisible", "sharedAt", "sharedById", "taskId") FROM stdin; -cmp6lpfmx000dua0gr256g7bd 1 \N \N /api/files/videos%2Fdfb19d65-30b1-4fec-b518-b013f8063b4a-UNG_102_01_0035_MINICUT.mp4 UNG_102_01_0035_MINICUT.mp4 13295042 video/mp4 \N \N \N 24 \N \N \N \N \N APPROVED PENDING t 2026-05-15 07:33:44.169 2026-05-15 07:45:23.112 t 2026-05-15 07:33:56.405 \N cmp6lonel0009ua0gsfb8meil -cmp6m2h1l000oua0gk6kp9kyv 1 \N \N /api/files/videos%2F92aa6ef6-600c-4676-985b-480ebaff6dc1-UNG_102_01_0035_MINICUT.mp4 UNG_102_01_0035_MINICUT.mp4 13295042 video/mp4 \N \N \N 24 \N \N \N \N \N NEEDS_CHANGES PENDING f 2026-05-15 07:43:52.521 2026-05-15 08:05:57.693 t 2026-05-15 07:43:58.453 \N cmp6m1tkq000kua0gazp1izqc -cmp6n30cr001yua0gijmi6ab8 1 \N \N /api/files/videos%2F5fc64845-6a95-42af-94cc-1fc647dfd712-UNG_102_01_0035_MINICUT.mp4 UNG_102_01_0035_MINICUT.mp4 13295042 video/mp4 \N \N \N 24 \N \N \N \N \N APPROVED PENDING t 2026-05-15 08:12:17.163 2026-05-15 08:17:01.574 t 2026-05-15 08:12:23.616 \N cmp6n2ndd001uua0gyrhinj0b -cmp6muvky001hua0gtvk9sx7j 2 \N \N /api/files/videos%2F9efc898f-c1fe-48ff-b300-8cdf2e0b86ee-UNG_102_01_0035_MINICUT.mp4 UNG_102_01_0035_MINICUT.mp4 13295042 video/mp4 \N \N \N 24 \N \N \N \N \N NEEDS_CHANGES PENDING t 2026-05-15 08:05:57.73 2026-05-15 08:20:37.084 t 2026-05-15 08:06:37.578 \N cmp6m1tkq000kua0gazp1izqc -\. - - --- --- Name: _prisma_migrations _prisma_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public._prisma_migrations - ADD CONSTRAINT _prisma_migrations_pkey PRIMARY KEY (id); - - --- --- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.accounts - ADD CONSTRAINT accounts_pkey PRIMARY KEY (id); - - --- --- Name: annotations annotations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT annotations_pkey PRIMARY KEY (id); - - --- --- Name: approvals approvals_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.approvals - ADD CONSTRAINT approvals_pkey PRIMARY KEY (id); - - --- --- Name: assets assets_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.assets - ADD CONSTRAINT assets_pkey PRIMARY KEY (id); - - --- --- Name: client_access client_access_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.client_access - ADD CONSTRAINT client_access_pkey PRIMARY KEY (id); - - --- --- Name: clients clients_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.clients - ADD CONSTRAINT clients_pkey PRIMARY KEY (id); - - --- --- Name: comment_replies comment_replies_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comment_replies - ADD CONSTRAINT comment_replies_pkey PRIMARY KEY (id); - - --- --- Name: comments comments_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comments - ADD CONSTRAINT comments_pkey PRIMARY KEY (id); - - --- --- Name: notifications notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.notifications - ADD CONSTRAINT notifications_pkey PRIMARY KEY (id); - - --- --- Name: projects projects_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.projects - ADD CONSTRAINT projects_pkey PRIMARY KEY (id); - - --- --- Name: review_sessions review_sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.review_sessions - ADD CONSTRAINT review_sessions_pkey PRIMARY KEY (id); - - --- --- Name: sessions sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.sessions - ADD CONSTRAINT sessions_pkey PRIMARY KEY (id); - - --- --- Name: shots shots_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.shots - ADD CONSTRAINT shots_pkey PRIMARY KEY (id); - - --- --- Name: tasks tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT tasks_pkey PRIMARY KEY (id); - - --- --- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.users - ADD CONSTRAINT users_pkey PRIMARY KEY (id); - - --- --- Name: versions versions_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT versions_pkey PRIMARY KEY (id); - - --- --- Name: accounts_provider_providerAccountId_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "accounts_provider_providerAccountId_key" ON public.accounts USING btree (provider, "providerAccountId"); - - --- --- Name: assets_projectId_assetCode_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "assets_projectId_assetCode_key" ON public.assets USING btree ("projectId", "assetCode"); - - --- --- Name: client_access_userId_clientId_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "client_access_userId_clientId_key" ON public.client_access USING btree ("userId", "clientId"); - - --- --- Name: clients_email_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX clients_email_key ON public.clients USING btree (email); - - --- --- Name: projects_code_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX projects_code_key ON public.projects USING btree (code); - - --- --- Name: review_sessions_token_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX review_sessions_token_key ON public.review_sessions USING btree (token); - - --- --- Name: sessions_sessionToken_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "sessions_sessionToken_key" ON public.sessions USING btree ("sessionToken"); - - --- --- Name: shots_projectId_shotCode_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "shots_projectId_shotCode_key" ON public.shots USING btree ("projectId", "shotCode"); - - --- --- Name: users_email_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX users_email_key ON public.users USING btree (email); - - --- --- Name: verification_tokens_identifier_token_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX verification_tokens_identifier_token_key ON public.verification_tokens USING btree (identifier, token); - - --- --- Name: verification_tokens_token_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX verification_tokens_token_key ON public.verification_tokens USING btree (token); - - --- --- Name: accounts accounts_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.accounts - ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: annotations annotations_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT "annotations_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: annotations annotations_commentId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT "annotations_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES public.comments(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: annotations annotations_versionId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT "annotations_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES public.versions(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: approvals approvals_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.approvals - ADD CONSTRAINT "approvals_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: approvals approvals_versionId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.approvals - ADD CONSTRAINT "approvals_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES public.versions(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: assets assets_leadId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.assets - ADD CONSTRAINT "assets_leadId_fkey" FOREIGN KEY ("leadId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: assets assets_projectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.assets - ADD CONSTRAINT "assets_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES public.projects(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: client_access client_access_clientId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.client_access - ADD CONSTRAINT "client_access_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES public.clients(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: client_access client_access_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.client_access - ADD CONSTRAINT "client_access_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: comment_replies comment_replies_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comment_replies - ADD CONSTRAINT "comment_replies_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: comment_replies comment_replies_commentId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comment_replies - ADD CONSTRAINT "comment_replies_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES public.comments(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: comments comments_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comments - ADD CONSTRAINT "comments_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: comments comments_versionId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comments - ADD CONSTRAINT "comments_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES public.versions(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: notifications notifications_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.notifications - ADD CONSTRAINT "notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: projects projects_clientId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.projects - ADD CONSTRAINT "projects_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES public.clients(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: projects projects_producerId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.projects - ADD CONSTRAINT "projects_producerId_fkey" FOREIGN KEY ("producerId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: projects projects_supervisorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.projects - ADD CONSTRAINT "projects_supervisorId_fkey" FOREIGN KEY ("supervisorId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: review_sessions review_sessions_projectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.review_sessions - ADD CONSTRAINT "review_sessions_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES public.projects(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: sessions sessions_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.sessions - ADD CONSTRAINT "sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: shots shots_artistId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.shots - ADD CONSTRAINT "shots_artistId_fkey" FOREIGN KEY ("artistId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: shots shots_projectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.shots - ADD CONSTRAINT "shots_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES public.projects(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: tasks tasks_assetId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_assetId_fkey" FOREIGN KEY ("assetId") REFERENCES public.assets(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: tasks tasks_assignedArtistId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_assignedArtistId_fkey" FOREIGN KEY ("assignedArtistId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: tasks tasks_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: tasks tasks_projectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES public.projects(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: tasks tasks_shotId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_shotId_fkey" FOREIGN KEY ("shotId") REFERENCES public.shots(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: versions versions_artistId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT "versions_artistId_fkey" FOREIGN KEY ("artistId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: versions versions_sharedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT "versions_sharedById_fkey" FOREIGN KEY ("sharedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: versions versions_shotId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT "versions_shotId_fkey" FOREIGN KEY ("shotId") REFERENCES public.shots(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: versions versions_taskId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT "versions_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES public.tasks(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: SCHEMA public; Type: ACL; Schema: -; Owner: postgres --- - -REVOKE USAGE ON SCHEMA public FROM PUBLIC; - - --- --- PostgreSQL database dump complete --- - -\unrestrict 1whWgtdsF6xBXiPHGFiuC9Ygoef9RJWmzx1RVEWvPdonWRifHup6QOcEmo1uBHI - diff --git a/vfxreview.tar b/vfxreview.tar deleted file mode 100644 index 0f2b7b9..0000000 Binary files a/vfxreview.tar and /dev/null differ diff --git a/vfxreview_arm64.tar b/vfxreview_arm64.tar deleted file mode 100644 index 41a2f41..0000000 Binary files a/vfxreview_arm64.tar and /dev/null differ diff --git a/vfxreview_arm64_v2.tar b/vfxreview_arm64_v2.tar deleted file mode 100644 index 10220e7..0000000 Binary files a/vfxreview_arm64_v2.tar and /dev/null differ diff --git a/vfxreview_arm64_v3.tar b/vfxreview_arm64_v3.tar deleted file mode 100644 index 10220e7..0000000 Binary files a/vfxreview_arm64_v3.tar and /dev/null differ diff --git a/vfxreview_arm64_v4.tar b/vfxreview_arm64_v4.tar deleted file mode 100644 index 5b515fb..0000000 Binary files a/vfxreview_arm64_v4.tar and /dev/null differ diff --git a/vfxreview_v2.sql b/vfxreview_v2.sql deleted file mode 100644 index 7c9ea79..0000000 --- a/vfxreview_v2.sql +++ /dev/null @@ -1,1355 +0,0 @@ --- --- PostgreSQL database dump --- - -\restrict uqcWeyWTxuI1xGqaLXl55pZERFnuCrL5uaQwEfCNGzJgCPIAyVD8Ux5s8T9tCjf - --- Dumped from database version 16.11 (Debian 16.11-1.pgdg13+1) --- Dumped by pg_dump version 16.11 (Debian 16.11-1.pgdg13+1) - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - --- --- Name: public; Type: SCHEMA; Schema: -; Owner: postgres --- - --- *not* creating schema, since initdb creates it - - -ALTER SCHEMA public OWNER TO postgres; - --- --- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres --- - -COMMENT ON SCHEMA public IS ''; - - --- --- Name: ApprovalStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ApprovalStatus" AS ENUM ( - 'PENDING_REVIEW', - 'APPROVED', - 'REJECTED', - 'NEEDS_CHANGES' -); - - -ALTER TYPE public."ApprovalStatus" OWNER TO postgres; - --- --- Name: NotificationType; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."NotificationType" AS ENUM ( - 'VERSION_UPLOADED', - 'FEEDBACK_ADDED', - 'SHOT_APPROVED', - 'SHOT_REJECTED', - 'COMMENT_REPLY', - 'MENTION', - 'REVISION_REQUESTED', - 'TASK_ASSIGNED', - 'TASK_OVERDUE', - 'TASK_APPROVED', - 'TASK_CHANGES_REQUESTED', - 'TASK_READY_FOR_REVIEW' -); - - -ALTER TYPE public."NotificationType" OWNER TO postgres; - --- --- Name: ProjectStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ProjectStatus" AS ENUM ( - 'ACTIVE', - 'ON_HOLD', - 'COMPLETED', - 'ARCHIVED' -); - - -ALTER TYPE public."ProjectStatus" OWNER TO postgres; - --- --- Name: ProjectType; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ProjectType" AS ENUM ( - 'STANDARD', - 'EPISODIC' -); - - -ALTER TYPE public."ProjectType" OWNER TO postgres; - --- --- Name: ReviewStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ReviewStatus" AS ENUM ( - 'PENDING', - 'INTERNAL_APPROVED', - 'CLIENT_APPROVED', - 'NEEDS_CHANGES', - 'FINAL_APPROVED' -); - - -ALTER TYPE public."ReviewStatus" OWNER TO postgres; - --- --- Name: Role; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."Role" AS ENUM ( - 'ADMIN', - 'PRODUCER', - 'SUPERVISOR', - 'ARTIST', - 'CLIENT' -); - - -ALTER TYPE public."Role" OWNER TO postgres; - --- --- Name: ShotPriority; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ShotPriority" AS ENUM ( - 'LOW', - 'NORMAL', - 'HIGH', - 'URGENT' -); - - -ALTER TYPE public."ShotPriority" OWNER TO postgres; - --- --- Name: ShotStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."ShotStatus" AS ENUM ( - 'WAITING', - 'IN_PROGRESS', - 'IN_REVIEW', - 'REVISIONS', - 'COMPLETE' -); - - -ALTER TYPE public."ShotStatus" OWNER TO postgres; - --- --- Name: TaskStatus; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."TaskStatus" AS ENUM ( - 'TODO', - 'IN_PROGRESS', - 'INTERNAL_REVIEW', - 'CLIENT_REVIEW', - 'CHANGES', - 'DONE' -); - - -ALTER TYPE public."TaskStatus" OWNER TO postgres; - --- --- Name: TaskType; Type: TYPE; Schema: public; Owner: postgres --- - -CREATE TYPE public."TaskType" AS ENUM ( - 'TRACK', - 'ROTO', - 'KEY', - 'COMP', - 'FX', - 'LIGHTING', - 'RENDER', - 'ANIMATION', - 'MODEL', - 'TEXTURE', - 'RIG', - 'LOOKDEV', - 'GENERAL' -); - - -ALTER TYPE public."TaskType" OWNER TO postgres; - -SET default_tablespace = ''; - -SET default_table_access_method = heap; - --- --- Name: _prisma_migrations; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public._prisma_migrations ( - id character varying(36) NOT NULL, - checksum character varying(64) NOT NULL, - finished_at timestamp with time zone, - migration_name character varying(255) NOT NULL, - logs text, - rolled_back_at timestamp with time zone, - started_at timestamp with time zone DEFAULT now() NOT NULL, - applied_steps_count integer DEFAULT 0 NOT NULL -); - - -ALTER TABLE public._prisma_migrations OWNER TO postgres; - --- --- Name: accounts; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.accounts ( - id text NOT NULL, - "userId" text NOT NULL, - type text NOT NULL, - provider text NOT NULL, - "providerAccountId" text NOT NULL, - refresh_token text, - access_token text, - expires_at integer, - token_type text, - scope text, - id_token text, - session_state text -); - - -ALTER TABLE public.accounts OWNER TO postgres; - --- --- Name: annotations; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.annotations ( - id text NOT NULL, - "versionId" text NOT NULL, - "commentId" text, - "authorId" text, - "frameNumber" integer NOT NULL, - "drawingData" jsonb NOT NULL, - color text DEFAULT '#ef4444'::text NOT NULL, - "isVisible" boolean DEFAULT true NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.annotations OWNER TO postgres; - --- --- Name: approvals; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.approvals ( - id text NOT NULL, - "versionId" text NOT NULL, - "userId" text, - status public."ApprovalStatus" NOT NULL, - notes text, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.approvals OWNER TO postgres; - --- --- Name: assets; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.assets ( - id text NOT NULL, - "projectId" text NOT NULL, - "assetCode" text NOT NULL, - name text NOT NULL, - description text, - status public."ShotStatus" DEFAULT 'WAITING'::public."ShotStatus" NOT NULL, - priority public."ShotPriority" DEFAULT 'NORMAL'::public."ShotPriority" NOT NULL, - "leadId" text, - "dueDate" timestamp(3) without time zone, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.assets OWNER TO postgres; - --- --- Name: client_access; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.client_access ( - id text NOT NULL, - "userId" text NOT NULL, - "clientId" text NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.client_access OWNER TO postgres; - --- --- Name: clients; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.clients ( - id text NOT NULL, - company text NOT NULL, - "contactPerson" text NOT NULL, - email text NOT NULL, - phone text, - notes text, - "logoUrl" text, - "isActive" boolean DEFAULT true NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.clients OWNER TO postgres; - --- --- Name: comment_replies; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.comment_replies ( - id text NOT NULL, - "commentId" text NOT NULL, - "authorId" text, - text text NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.comment_replies OWNER TO postgres; - --- --- Name: comments; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.comments ( - id text NOT NULL, - "versionId" text NOT NULL, - "authorId" text, - "frameNumber" integer NOT NULL, - "timestamp" double precision NOT NULL, - text text NOT NULL, - "isResolved" boolean DEFAULT false NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.comments OWNER TO postgres; - --- --- Name: notifications; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.notifications ( - id text NOT NULL, - "userId" text NOT NULL, - type public."NotificationType" NOT NULL, - title text NOT NULL, - message text NOT NULL, - data jsonb, - "isRead" boolean DEFAULT false NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.notifications OWNER TO postgres; - --- --- Name: projects; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.projects ( - id text NOT NULL, - name text NOT NULL, - code text NOT NULL, - description text, - status public."ProjectStatus" DEFAULT 'ACTIVE'::public."ProjectStatus" NOT NULL, - "dueDate" timestamp(3) without time zone, - "startDate" timestamp(3) without time zone, - "clientId" text, - "producerId" text, - "supervisorId" text, - "slackWebhook" text, - "slackChannel" text, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - "showId" text DEFAULT ''::text NOT NULL, - "projectType" public."ProjectType" DEFAULT 'STANDARD'::public."ProjectType" NOT NULL -); - - -ALTER TABLE public.projects OWNER TO postgres; - --- --- Name: review_sessions; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.review_sessions ( - id text NOT NULL, - "projectId" text NOT NULL, - token text NOT NULL, - label text, - email text, - "expiresAt" timestamp(3) without time zone NOT NULL, - "isActive" boolean DEFAULT true NOT NULL, - "accessCount" integer DEFAULT 0 NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); - - -ALTER TABLE public.review_sessions OWNER TO postgres; - --- --- Name: sessions; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.sessions ( - id text NOT NULL, - "sessionToken" text NOT NULL, - "userId" text NOT NULL, - expires timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.sessions OWNER TO postgres; - --- --- Name: shots; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.shots ( - id text NOT NULL, - "shotCode" text NOT NULL, - sequence text, - description text, - status public."ShotStatus" DEFAULT 'WAITING'::public."ShotStatus" NOT NULL, - priority public."ShotPriority" DEFAULT 'NORMAL'::public."ShotPriority" NOT NULL, - "artistId" text, - "projectId" text NOT NULL, - "frameStart" integer, - "frameEnd" integer, - fps double precision DEFAULT 24 NOT NULL, - "dueDate" timestamp(3) without time zone, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - scene text DEFAULT ''::text NOT NULL, - episode text, - "shotNumber" integer DEFAULT 0 NOT NULL, - "thumbnailUrl" text -); - - -ALTER TABLE public.shots OWNER TO postgres; - --- --- Name: tasks; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.tasks ( - id text NOT NULL, - title text NOT NULL, - description text, - type public."TaskType" DEFAULT 'GENERAL'::public."TaskType" NOT NULL, - status public."TaskStatus" DEFAULT 'TODO'::public."TaskStatus" NOT NULL, - priority public."ShotPriority" DEFAULT 'NORMAL'::public."ShotPriority" NOT NULL, - "dueDate" timestamp(3) without time zone, - "estimatedHours" double precision, - "sortOrder" integer DEFAULT 0 NOT NULL, - "shotId" text, - "assetId" text, - "assignedArtistId" text, - "createdById" text, - "projectId" text NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - "scheduleNotes" text, - "scheduledEndDate" timestamp(3) without time zone, - "scheduledStartDate" timestamp(3) without time zone -); - - -ALTER TABLE public.tasks OWNER TO postgres; - --- --- Name: users; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.users ( - id text NOT NULL, - name text, - email text NOT NULL, - "emailVerified" timestamp(3) without time zone, - image text, - "passwordHash" text, - role public."Role" DEFAULT 'ARTIST'::public."Role" NOT NULL, - "isActive" boolean DEFAULT true NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - "mustChangePassword" boolean DEFAULT false NOT NULL -); - - -ALTER TABLE public.users OWNER TO postgres; - --- --- Name: verification_tokens; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.verification_tokens ( - identifier text NOT NULL, - token text NOT NULL, - expires timestamp(3) without time zone NOT NULL -); - - -ALTER TABLE public.verification_tokens OWNER TO postgres; - --- --- Name: versions; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public.versions ( - id text NOT NULL, - "versionNumber" integer NOT NULL, - "shotId" text, - "artistId" text, - "fileUrl" text NOT NULL, - "fileName" text NOT NULL, - "fileSize" bigint, - "mimeType" text, - "thumbnailUrl" text, - "posterUrl" text, - "proxyUrl" text, - fps double precision DEFAULT 24 NOT NULL, - duration double precision, - "frameCount" integer, - width integer, - height integer, - notes text, - "approvalStatus" public."ApprovalStatus" DEFAULT 'PENDING_REVIEW'::public."ApprovalStatus" NOT NULL, - "reviewStatus" public."ReviewStatus" DEFAULT 'PENDING'::public."ReviewStatus" NOT NULL, - "isLatest" boolean DEFAULT true NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - "isClientVisible" boolean DEFAULT false NOT NULL, - "sharedAt" timestamp(3) without time zone, - "sharedById" text, - "taskId" text -); - - -ALTER TABLE public.versions OWNER TO postgres; - --- --- Data for Name: _prisma_migrations; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public._prisma_migrations (id, checksum, finished_at, migration_name, logs, rolled_back_at, started_at, applied_steps_count) FROM stdin; -e1e67776-5fbb-4639-98c5-028a2891bab9 ba0a3793ab2cee7f72249246db5e1fdbf12170981e24aeaeedf02adefbeace1a 2026-05-15 07:12:53.510646+00 20260514062418_01_initial_migration \N \N 2026-05-15 07:12:52.845407+00 1 -b805947c-ab7d-4a86-82f6-0929c7007869 4c08fb5ebd7e3892395404a146553456182fb5922baf892ed550493ac041ce07 2026-05-15 07:12:53.682166+00 20260514105432_add_tasks_assets_client_visibility \N \N 2026-05-15 07:12:53.523009+00 1 -a54ab11f-9d6a-4884-8521-953cd2f1796e 10cce7cbaf37bcd8825e883755f4fe147d6e3cf6311d77f8a56038f2d7709045 2026-05-15 07:12:53.967865+00 20260514120000_task_first_workflow \N \N 2026-05-15 07:12:53.692238+00 1 -7a6ca15a-d86b-4838-bfe2-c1760ffe3780 babb30e6fd032a3ba74f73c738b2a432fe88a0926dd4fea1d12257284cc7d1aa 2026-05-15 07:12:54.018215+00 20260514130000_shot_naming_conventions \N \N 2026-05-15 07:12:53.976314+00 1 -f2c31504-2756-4621-aa24-059aba13f088 5d175c77a7dc60a219608898fb8a3eb06c74640c19f5359473700b51cfa865d0 2026-05-15 07:12:54.05694+00 20260515070205_add_shot_thumbnail \N \N 2026-05-15 07:12:54.026791+00 1 -4af4adb1-cc6b-4dc7-a7a2-7ffc15a0813c b5c045382fa853fcd915a4a05b127e116e87611e445e1d7dd51c2b8f07e7f864 2026-05-15 09:08:49.790348+00 20260515090849_add_must_change_password \N \N 2026-05-15 09:08:49.722293+00 1 -6668f4e3-ec46-4c8e-9fad-767a86abc051 f0118cfdcbf87576ba3e2ee217945825a8db0ee9397e452535ed11e10c675e17 2026-05-15 09:40:28.976683+00 20260515094028_nullable_user_fks_for_delete \N \N 2026-05-15 09:40:28.870877+00 1 -d657d700-c289-47a7-8342-9313e65af8c0 5930a099678e355b740a9696eeb98347956f571707a214eadc245b61aedca8c9 2026-05-18 05:40:03.97848+00 20260518054003_add_schedule_fields \N \N 2026-05-18 05:40:03.792186+00 1 -\. - - --- --- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.accounts (id, "userId", type, provider, "providerAccountId", refresh_token, access_token, expires_at, token_type, scope, id_token, session_state) FROM stdin; -\. - - --- --- Data for Name: annotations; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.annotations (id, "versionId", "commentId", "authorId", "frameNumber", "drawingData", color, "isVisible", "createdAt") FROM stdin; -cmp6mgr38000vua0gil3ztyft cmp6m2h1l000oua0gk6kp9kyv \N \N 102 {"shapes": [{"id": "13579e0c-0678-4d28-ae1d-a8f1d4c5fe4c", "tool": "freehand", "color": "#ef4444", "points": [{"x": 0.6622242647058824, "y": 0.3543465734557578}, {"x": 0.6617647058823529, "y": 0.3543465734557578}, {"x": 0.6613051470588235, "y": 0.3526194577390048}, {"x": 0.6599264705882353, "y": 0.3517558998806283}, {"x": 0.6553308823529411, "y": 0.3517558998806283}, {"x": 0.6484375, "y": 0.3517558998806283}, {"x": 0.6452205882352942, "y": 0.3517558998806283}, {"x": 0.6401654411764706, "y": 0.3517558998806283}, {"x": 0.6337316176470589, "y": 0.3517558998806283}, {"x": 0.6286764705882353, "y": 0.3517558998806283}, {"x": 0.6240808823529411, "y": 0.3517558998806283}, {"x": 0.6167279411764706, "y": 0.3517558998806283}, {"x": 0.6139705882352942, "y": 0.3517558998806283}, {"x": 0.6066176470588235, "y": 0.3517558998806283}, {"x": 0.5978860294117647, "y": 0.3517558998806283}, {"x": 0.5896139705882353, "y": 0.3526194577390048}, {"x": 0.5827205882352942, "y": 0.3543465734557578}, {"x": 0.5762867647058824, "y": 0.3603914784643934}, {"x": 0.5707720588235294, "y": 0.3690270570481585}, {"x": 0.5657169117647058, "y": 0.3767990777735472}, {"x": 0.5615808823529411, "y": 0.3862982142156888}, {"x": 0.5583639705882353, "y": 0.3949337927994538}, {"x": 0.5574448529411765, "y": 0.3992515820913364}, {"x": 0.5546875, "y": 0.4061600449583485}, {"x": 0.5523897058823529, "y": 0.4147956235421136}, {"x": 0.5519301470588235, "y": 0.4191134128339962}, {"x": 0.5500919117647058, "y": 0.4337938964263969}, {"x": 0.5487132352941176, "y": 0.444156590726915}, {"x": 0.5477941176470589, "y": 0.4553828428858097}, {"x": 0.5477941176470589, "y": 0.4691997686198338}, {"x": 0.5477941176470589, "y": 0.484743810070611}, {"x": 0.5487132352941176, "y": 0.5011514093797648}, {"x": 0.5496323529411765, "y": 0.5054691986716473}, {"x": 0.5533088235294118, "y": 0.5158318929721655}, {"x": 0.5560661764705882, "y": 0.5261945872726835}, {"x": 0.5597426470588235, "y": 0.5356937237148252}, {"x": 0.5647977941176471, "y": 0.5460564180153433}, {"x": 0.5707720588235294, "y": 0.559009785890991}, {"x": 0.578125, "y": 0.5676453644747561}, {"x": 0.5863970588235294, "y": 0.5754173852001447}, {"x": 0.5955882352941176, "y": 0.5814622902087803}, {"x": 0.6038602941176471, "y": 0.5866436373590393}, {"x": 0.6144301470588235, "y": 0.5892343109341689}, {"x": 0.6204044117647058, "y": 0.5909614266509219}, {"x": 0.6314338235294118, "y": 0.5918249845092984}, {"x": 0.6415441176470589, "y": 0.5918249845092984}, {"x": 0.6507352941176471, "y": 0.5909614266509219}, {"x": 0.6599264705882353, "y": 0.5849165216422864}, {"x": 0.6681985294117647, "y": 0.5754173852001447}, {"x": 0.6755514705882353, "y": 0.5650546908996266}, {"x": 0.6819852941176471, "y": 0.5546919965991084}, {"x": 0.6875, "y": 0.5417386287234608}, {"x": 0.6920955882352942, "y": 0.5261945872726835}, {"x": 0.6948529411764706, "y": 0.5115141036802828}, {"x": 0.6957720588235294, "y": 0.5046056408132708}, {"x": 0.6980698529411765, "y": 0.4907887150792466}, {"x": 0.6994485294117647, "y": 0.4778353472035989}, {"x": 0.6999080882352942, "y": 0.4648819793279513}, {"x": 0.6999080882352942, "y": 0.4545192850274332}, {"x": 0.6999080882352942, "y": 0.444156590726915}, {"x": 0.6994485294117647, "y": 0.4355210121431499}, {"x": 0.6971507352941176, "y": 0.4242947599842553}, {"x": 0.6934742647058824, "y": 0.4156591814004901}, {"x": 0.6893382352941176, "y": 0.4044329292415955}, {"x": 0.6856617647058824, "y": 0.3992515820913364}, {"x": 0.6810661764705882, "y": 0.3914795613659478}, {"x": 0.6769301470588235, "y": 0.3854346563573122}, {"x": 0.6737132352941176, "y": 0.3811168670654297}, {"x": 0.6709558823529411, "y": 0.3776626356319236}, {"x": 0.6659007352941176, "y": 0.3724812884816646}, {"x": 0.6622242647058824, "y": 0.368163499189782}, {"x": 0.6576286764705882, "y": 0.3629821520395229}, {"x": 0.6516544117647058, "y": 0.3595279206060169}, {"x": 0.6461397058823529, "y": 0.3543465734557578}, {"x": 0.6420036764705882, "y": 0.3526194577390048}, {"x": 0.640625, "y": 0.3517558998806283}, {"x": 0.6369485294117647, "y": 0.3508923420222518}, {"x": 0.6337316176470589, "y": 0.3508923420222518}, {"x": 0.6323529411764706, "y": 0.3500287841638753}, {"x": 0.6323529411764706, "y": 0.3500287841638753}], "frameNumber": 102, "strokeWidth": 2}], "version": "1.0", "canvasWidth": 2176, "canvasHeight": 1158} #ef4444 t 2026-05-15 07:54:58.724 -cmp6mhveu0011ua0g65rmd433 cmp6m2h1l000oua0gk6kp9kyv \N \N 93 {"shapes": [{"id": "4061ab2a-1375-4bd6-80d3-d1b736485801", "tool": "freehand", "color": "#ef4444", "points": [{"x": 0.5709821428571429, "y": 0.4498550713580587}, {"x": 0.5700892857142857, "y": 0.4481159409232762}, {"x": 0.565625, "y": 0.442028984401537}, {"x": 0.5633928571428571, "y": 0.442028984401537}, {"x": 0.5584821428571428, "y": 0.4385507235319718}, {"x": 0.5526785714285715, "y": 0.4359420278797979}, {"x": 0.5464285714285714, "y": 0.4350724626624066}, {"x": 0.540625, "y": 0.4350724626624066}, {"x": 0.5379464285714286, "y": 0.4350724626624066}, {"x": 0.5330357142857143, "y": 0.4411594191841457}, {"x": 0.5272321428571428, "y": 0.4542028974450153}, {"x": 0.5209821428571428, "y": 0.473333332227624}, {"x": 0.5160714285714286, "y": 0.4985507235319718}, {"x": 0.5142857142857142, "y": 0.5107246365754501}, {"x": 0.5138392857142857, "y": 0.5385507235319718}, {"x": 0.5165178571428571, "y": 0.5689855061406675}, {"x": 0.5223214285714286, "y": 0.5942028974450153}, {"x": 0.53125, "y": 0.6168115930971892}, {"x": 0.5410714285714285, "y": 0.6394202887493631}, {"x": 0.5517857142857143, "y": 0.653333332227624}, {"x": 0.5611607142857142, "y": 0.6585507235319719}, {"x": 0.56875, "y": 0.6594202887493631}, {"x": 0.5767857142857142, "y": 0.6594202887493631}, {"x": 0.5830357142857143, "y": 0.6515942017928413}, {"x": 0.5866071428571429, "y": 0.6437681148363197}, {"x": 0.590625, "y": 0.6281159409232762}, {"x": 0.5933035714285714, "y": 0.6081159409232761}, {"x": 0.5946428571428571, "y": 0.5872463757058849}, {"x": 0.5955357142857143, "y": 0.5655072452711022}, {"x": 0.5955357142857143, "y": 0.5446376800537109}, {"x": 0.5941964285714286, "y": 0.5255072452711023}, {"x": 0.5892857142857143, "y": 0.5063768104884936}, {"x": 0.5848214285714286, "y": 0.4907246365754501}, {"x": 0.5776785714285714, "y": 0.4785507235319718}, {"x": 0.5741071428571428, "y": 0.4715942017928414}, {"x": 0.5678571428571428, "y": 0.4646376800537109}, {"x": 0.5625, "y": 0.4594202887493631}, {"x": 0.5589285714285714, "y": 0.4568115930971892}, {"x": 0.5566964285714285, "y": 0.4559420278797979}, {"x": 0.5526785714285715, "y": 0.4542028974450153}, {"x": 0.5486607142857143, "y": 0.4542028974450153}, {"x": 0.5455357142857142, "y": 0.4542028974450153}, {"x": 0.5446428571428571, "y": 0.4542028974450153}], "frameNumber": 93, "strokeWidth": 2}], "version": "1.0", "canvasWidth": 2240, "canvasHeight": 1150} #ef4444 t 2026-05-15 07:55:50.982 -cmp6mi1ql0015ua0gg6046gwx cmp6m2h1l000oua0gk6kp9kyv \N \N 123 {"shapes": [{"id": "8c074df8-1e9e-4edc-b8c3-c720a7fc8741", "tool": "freehand", "color": "#ef4444", "points": [{"x": 0.5401785714285714, "y": 0.3976811583145805}, {"x": 0.5375, "y": 0.3968115930971892}, {"x": 0.53125, "y": 0.3968115930971892}, {"x": 0.5290178571428571, "y": 0.3968115930971892}, {"x": 0.5196428571428572, "y": 0.3968115930971892}, {"x": 0.5053571428571428, "y": 0.393333332227624}, {"x": 0.4875, "y": 0.3924637670102327}, {"x": 0.4705357142857143, "y": 0.3924637670102327}, {"x": 0.4642857142857143, "y": 0.3924637670102327}, {"x": 0.4535714285714286, "y": 0.3924637670102327}, {"x": 0.4375, "y": 0.393333332227624}, {"x": 0.4272321428571428, "y": 0.4002898539667544}, {"x": 0.415625, "y": 0.4107246365754501}, {"x": 0.4075892857142857, "y": 0.4228985496189283}, {"x": 0.4053571428571429, "y": 0.4272463757058849}, {"x": 0.4017857142857143, "y": 0.4368115930971892}, {"x": 0.4008928571428572, "y": 0.4463768104884935}, {"x": 0.4008928571428572, "y": 0.4576811583145805}, {"x": 0.4058035714285714, "y": 0.4742028974450153}, {"x": 0.4183035714285714, "y": 0.4959420278797979}, {"x": 0.4330357142857143, "y": 0.513333332227624}, {"x": 0.4575892857142857, "y": 0.5237681148363197}, {"x": 0.4821428571428572, "y": 0.5255072452711023}, {"x": 0.5013392857142858, "y": 0.5255072452711023}, {"x": 0.5111607142857143, "y": 0.5237681148363197}, {"x": 0.5258928571428572, "y": 0.5159420278797979}, {"x": 0.5366071428571428, "y": 0.5028985496189283}, {"x": 0.5455357142857142, "y": 0.4855072452711022}, {"x": 0.5508928571428572, "y": 0.4715942017928414}, {"x": 0.5526785714285715, "y": 0.4559420278797979}, {"x": 0.5526785714285715, "y": 0.442028984401537}, {"x": 0.5504464285714286, "y": 0.4272463757058849}, {"x": 0.54375, "y": 0.4107246365754501}, {"x": 0.5330357142857143, "y": 0.3968115930971892}, {"x": 0.5205357142857143, "y": 0.3828985496189283}, {"x": 0.5142857142857142, "y": 0.3794202887493631}, {"x": 0.5008928571428571, "y": 0.3689855061406674}, {"x": 0.4875, "y": 0.3646376800537109}, {"x": 0.4723214285714286, "y": 0.362028984401537}, {"x": 0.4642857142857143, "y": 0.362028984401537}, {"x": 0.4410714285714286, "y": 0.362028984401537}, {"x": 0.4245535714285714, "y": 0.362028984401537}, {"x": 0.4107142857142857, "y": 0.3689855061406674}, {"x": 0.3991071428571429, "y": 0.3794202887493631}, {"x": 0.3919642857142857, "y": 0.3924637670102327}, {"x": 0.3897321428571429, "y": 0.402028984401537}, {"x": 0.3875, "y": 0.4202898539667544}, {"x": 0.3875, "y": 0.4428985496189283}, {"x": 0.3919642857142857, "y": 0.4646376800537109}, {"x": 0.3995535714285715, "y": 0.4846376800537109}, {"x": 0.4120535714285714, "y": 0.5046376800537109}, {"x": 0.4303571428571429, "y": 0.522028984401537}, {"x": 0.4491071428571429, "y": 0.5342028974450153}, {"x": 0.4674107142857143, "y": 0.5411594191841457}, {"x": 0.484375, "y": 0.5428985496189284}, {"x": 0.4928571428571429, "y": 0.5428985496189284}, {"x": 0.509375, "y": 0.5359420278797979}, {"x": 0.5223214285714286, "y": 0.522028984401537}, {"x": 0.5325892857142858, "y": 0.5046376800537109}, {"x": 0.5419642857142857, "y": 0.4855072452711022}, {"x": 0.5482142857142858, "y": 0.4663768104884936}, {"x": 0.5508928571428572, "y": 0.4515942017928414}, {"x": 0.5513392857142857, "y": 0.442028984401537}, {"x": 0.5504464285714286, "y": 0.4307246365754501}, {"x": 0.5450892857142857, "y": 0.4176811583145805}, {"x": 0.5361607142857143, "y": 0.4046376800537109}, {"x": 0.53125, "y": 0.3994202887493631}, {"x": 0.5214285714285715, "y": 0.3898550713580587}, {"x": 0.5098214285714285, "y": 0.3811594191841457}, {"x": 0.5017857142857143, "y": 0.3776811583145805}, {"x": 0.4991071428571429, "y": 0.3768115930971892}, {"x": 0.4986607142857143, "y": 0.3768115930971892}], "frameNumber": 123, "strokeWidth": 2}], "version": "1.0", "canvasWidth": 2240, "canvasHeight": 1150} #ef4444 t 2026-05-15 07:55:59.181 -\. - - --- --- Data for Name: approvals; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.approvals (id, "versionId", "userId", status, notes, "createdAt") FROM stdin; -cmp6m4exd000tua0g9ze76dua cmp6lpfmx000dua0gr256g7bd \N APPROVED 2026-05-15 07:45:23.089 -cmp6ms0n0001bua0gem455iqz cmp6m2h1l000oua0gk6kp9kyv \N APPROVED 2026-05-15 08:03:44.316 -cmp6mtzxh001fua0gb3x83byq cmp6m2h1l000oua0gk6kp9kyv \N NEEDS_CHANGES not great\n 2026-05-15 08:05:16.71 -cmp6mw17e001mua0g0wv6g2yc cmp6muvky001hua0gtvk9sx7j \N APPROVED 2026-05-15 08:06:51.675 -cmp6n93sf0029ua0go7z1o88m cmp6n30cr001yua0gijmi6ab8 \N APPROVED 2026-05-15 08:17:01.552 -cmp6ndq2r002hua0g9olq4s8b cmp6muvky001hua0gtvk9sx7j \N NEEDS_CHANGES Didnt work! 2026-05-15 08:20:37.059 -\. - - --- --- Data for Name: assets; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.assets (id, "projectId", "assetCode", name, description, status, priority, "leadId", "dueDate", "createdAt", "updatedAt") FROM stdin; -\. - - --- --- Data for Name: client_access; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.client_access (id, "userId", "clientId", "createdAt") FROM stdin; -\. - - --- --- Data for Name: clients; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.clients (id, company, "contactPerson", email, phone, notes, "logoUrl", "isActive", "createdAt", "updatedAt") FROM stdin; -cmp6pm6bg0004uaecev06fsly YellowBone Entertainment Dries Scholtz driesscholtz@gmail.com \N t 2026-05-15 09:23:10.588 2026-05-15 09:23:10.588 -cmp6pqo2l0005uaecmp57rjpt Ungovernable Cartel (Pty) Ltd Nono Mofokeng nmofokeng@netflixpartner.com +27 83 207 3993 VFX Coordinator at Ungovernable Cartel (Pty) Ltd \N t 2026-05-15 09:26:40.221 2026-05-15 09:26:40.221 -cmp6pt47s0006uaechzp496j4 Red Letter Day Pictures Rene van Rooyen rene@redletterdaypictures.com \N t 2026-05-15 09:28:34.455 2026-05-15 09:28:34.455 -cmp6pvnin0009uaece99q52q7 Ebony Life Media Heidi Uys heidi@ebonylifemedia.com \N t 2026-05-15 09:30:32.782 2026-05-15 09:30:32.782 -\. - - --- --- Data for Name: comment_replies; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.comment_replies (id, "commentId", "authorId", text, "createdAt", "updatedAt") FROM stdin; -\. - - --- --- Data for Name: comments; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.comments (id, "versionId", "authorId", "frameNumber", "timestamp", text, "isResolved", "createdAt", "updatedAt") FROM stdin; -cmp6mst1b001dua0gynmpdyay cmp6m2h1l000oua0gk6kp9kyv \N 61 2.541666666666667 what is this? f 2026-05-15 08:04:21.119 2026-05-15 08:04:21.119 -cmp6mya3t001oua0gtmoq1kbz cmp6muvky001hua0gtvk9sx7j \N 63 2.625 Check this please f 2026-05-15 08:08:36.522 2026-05-15 08:08:36.522 -cmp6n48nx0025ua0g9roxnf76 cmp6n30cr001yua0gijmi6ab8 \N 111 4.625 test2 f 2026-05-15 08:13:14.589 2026-05-15 08:13:14.589 -cmp6n8iot0027ua0g9bvrlc33 cmp6n30cr001yua0gijmi6ab8 \N 0 0 test3 f 2026-05-15 08:16:34.205 2026-05-15 08:16:34.205 -cmp6nfa81002nua0gpdvj9j52 cmp6n30cr001yua0gijmi6ab8 \N 127 5.291666666666667 this is cool f 2026-05-15 08:21:49.826 2026-05-15 08:21:49.826 -cmp6nh75o002rua0gkoive3ph cmp6n30cr001yua0gijmi6ab8 \N 81 3.375 test f 2026-05-15 08:23:19.164 2026-05-15 08:23:19.164 -cmp6mgr6y000xua0goma5pwmr cmp6m2h1l000oua0gk6kp9kyv \N 102 4.25 ✏️ Annotation at frame 102 f 2026-05-15 07:54:58.858 2026-05-15 07:54:58.858 -cmp6mgxgf000zua0gl10gb67b cmp6m2h1l000oua0gk6kp9kyv \N 102 4.25 Out of focus f 2026-05-15 07:55:06.976 2026-05-15 07:55:06.976 -cmp6mhvhr0013ua0giy5xzd5s cmp6m2h1l000oua0gk6kp9kyv \N 93 3.875 ✏️ Annotation at frame 93 f 2026-05-15 07:55:51.087 2026-05-15 07:55:51.087 -cmp6mi1th0017ua0gbgh5hh4q cmp6m2h1l000oua0gk6kp9kyv \N 123 5.125 ✏️ Annotation at frame 123 f 2026-05-15 07:55:59.285 2026-05-15 07:55:59.285 -cmp6mobc00019ua0gb049awv0 cmp6m2h1l000oua0gk6kp9kyv \N 115 4.791666666666667 looks a little wonky f 2026-05-15 08:00:51.551 2026-05-15 08:00:51.551 -cmp6mzdh2001qua0gnhf2c6ag cmp6muvky001hua0gtvk9sx7j \N 130 5.416666666666667 this is the internal review comment f 2026-05-15 08:09:27.541 2026-05-15 08:09:27.541 -cmp6n1hcg001sua0gmsn82v7j cmp6muvky001hua0gtvk9sx7j \N 108 4.5 test f 2026-05-15 08:11:05.873 2026-05-15 08:11:05.873 -cmp6n3joh0023ua0g9ai3yhrh cmp6n30cr001yua0gijmi6ab8 \N 108 4.5 test f 2026-05-15 08:12:42.209 2026-05-15 08:12:42.209 -cmp6ndfko002fua0gm5e9w1sk cmp6muvky001hua0gtvk9sx7j \N 87 3.625 TESTINT f 2026-05-15 08:20:23.448 2026-05-15 08:20:23.448 -cmp6nesy8002lua0gwsndjgoh cmp6muvky001hua0gtvk9sx7j \N 87 3.625 check f 2026-05-15 08:21:27.44 2026-05-15 08:21:27.44 -cmp6ngvvl002pua0gtcultp1r cmp6muvky001hua0gtvk9sx7j \N 55 2.291666666666667 Whatabout here? f 2026-05-15 08:23:04.544 2026-05-15 08:23:04.544 -\. - - --- --- Data for Name: notifications; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.notifications (id, "userId", type, title, message, data, "isRead", "createdAt") FROM stdin; -cmp6qz5om0001ua0srnfika29 cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (UNG_101_01_0010) {"taskId": "cmp6lonel0009ua0gsfb8meil"} f 2026-05-15 10:01:15.91 -cmpashhso0003uapwkc9vre3b cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: FX (UNG_102_35_0010) {"taskId": "cmpashhpp0001uapwxjohw3rb"} f 2026-05-18 05:54:35.736 -cmpb6p89p001bualwb694yrh5 cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0010) {"taskId": "cmpb6p88g0019ualwfkfpdv73"} f 2026-05-18 12:32:31.262 -cmpb6pm6r001fualw9m1bl7s9 cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0020) {"taskId": "cmpb6pm5j001dualw7dav9v8m"} f 2026-05-18 12:32:49.299 -cmpb6q5wt001lualwywpwyw0x cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0040) {"taskId": "cmpb6q5vk001jualwollgbegi"} f 2026-05-18 12:33:14.862 -cmpb6qiwj001pualwjzv5zuhh cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0050) {"taskId": "cmpb6qivn001nualw8svsb727"} f 2026-05-18 12:33:31.699 -cmpb6s7cp001tualw081ilf0h cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0060) {"taskId": "cmpb6s7bs001rualwjq72tb8u"} f 2026-05-18 12:34:50.041 -cmpb6sgvs001xualw5svan14f cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0070) {"taskId": "cmpb6sgul001vualwpx9ll6e9"} f 2026-05-18 12:35:02.392 -cmpb6y8vd0021ualwr7mga30p cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0080) {"taskId": "cmpb6y8t3001zualw2u5yjdpw"} f 2026-05-18 12:39:31.946 -cmpb6ynaj0025ualwdutrq5kg cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0090) {"taskId": "cmpb6yn9d0023ualwhfozkvtk"} f 2026-05-18 12:39:50.636 -cmpb6z0000029ualwlfqorqyi cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0100) {"taskId": "cmpb6yzy50027ualwj1d8iuzx"} f 2026-05-18 12:40:07.105 -cmpb6zn5d002dualw5pdkol7i cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0110) {"taskId": "cmpb6zn31002bualw3n6m0iib"} f 2026-05-18 12:40:37.105 -cmpb6zvsu002hualwyizcjwlr cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0120) {"taskId": "cmpb6zvrr002fualw49zsuz0w"} f 2026-05-18 12:40:48.319 -cmpb705dm002lualwxtllkpf6 cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0130) {"taskId": "cmpb705cg002jualwtgsnmo21"} f 2026-05-18 12:41:00.73 -cmpb70egu002pualw7zq8qv0u cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0140) {"taskId": "cmpb70efn002nualwguu7dd0s"} f 2026-05-18 12:41:12.51 -cmpb70ny0002tualwcycvfhef cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0150) {"taskId": "cmpb70nwx002rualw3fm6f776"} f 2026-05-18 12:41:24.792 -cmpb70z09002xualw7a5bie63 cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0160) {"taskId": "cmpb70yzb002vualwpuuzuwfb"} f 2026-05-18 12:41:39.129 -cmpb718re0031ualwqj47125u cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0170) {"taskId": "cmpb718pt002zualws07l383v"} f 2026-05-18 12:41:51.77 -cmpb71kc60035ualwgejqjfef cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0180) {"taskId": "cmpb71kax0033ualw7pvac048"} f 2026-05-18 12:42:06.775 -cmpb71v680039ualwx0fj4xlw cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0190) {"taskId": "cmpb71v5c0037ualw0vkc5zch"} f 2026-05-18 12:42:20.816 -cmpb72701003dualwqfl9pveh cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0200) {"taskId": "cmpb726z5003bualwpyen8nig"} f 2026-05-18 12:42:36.146 -cmpb72ia5003hualwwm0u6aqf cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0210) {"taskId": "cmpb72i8z003fualw5w4fw1pz"} f 2026-05-18 12:42:50.765 -cmpb72tsb003lualwa1bo47sz cmp6p84ln0001uaec9xgguyqg TASK_ASSIGNED New task assigned to you Chris Pinto assigned you: Comp (BAB_01_0220) {"taskId": "cmpb72tr1003jualwp99i7kxn"} f 2026-05-18 12:43:05.676 -cmpb9nqpu003oualwm9chz8jg cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0060 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0060", "versionId": "cmpb9nqp8003nualwollwipib", "versionNumber": 1} f 2026-05-18 13:55:20.706 -cmpb9nqpu003pualwopdxi26g cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0060 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0060", "versionId": "cmpb9nqp8003nualwollwipib", "versionNumber": 1} f 2026-05-18 13:55:20.706 -cmpba4l6i003sualwrukryokx cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0070 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0070", "versionId": "cmpba4l63003rualwhbhqhhe5", "versionNumber": 1} f 2026-05-18 14:08:26.683 -cmpba4l6i003tualwtyse56jn cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0070 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0070", "versionId": "cmpba4l63003rualwhbhqhhe5", "versionNumber": 1} f 2026-05-18 14:08:26.683 -cmpba4xcd003wualwuei9hg1g cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0080 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0080", "versionId": "cmpba4xbu003vualwznl0smim", "versionNumber": 1} f 2026-05-18 14:08:42.445 -cmpba4xcd003xualwxms6gaba cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0080 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0080", "versionId": "cmpba4xbu003vualwznl0smim", "versionNumber": 1} f 2026-05-18 14:08:42.445 -cmpba591j0040ualwoh2zf4r7 cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0090 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0090", "versionId": "cmpba5910003zualw6z0qdjwy", "versionNumber": 1} f 2026-05-18 14:08:57.607 -cmpba591j0041ualw648ch238 cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0090 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0090", "versionId": "cmpba5910003zualw6z0qdjwy", "versionNumber": 1} f 2026-05-18 14:08:57.607 -cmpba5rap0044ualwji9qniu6 cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0100 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0100", "versionId": "cmpba5ra80043ualw9smai612", "versionNumber": 1} f 2026-05-18 14:09:21.265 -cmpba5rap0045ualwtoq6ndy1 cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0100 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0100", "versionId": "cmpba5ra80043ualw9smai612", "versionNumber": 1} f 2026-05-18 14:09:21.265 -cmpba6t7z0048ualwzrem1dtn cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0110 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0110", "versionId": "cmpba6t7h0047ualw7wh4dmk7", "versionNumber": 1} f 2026-05-18 14:10:10.415 -cmpba6t8j0049ualwwjbobqf4 cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0110 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0110", "versionId": "cmpba6t7h0047ualw7wh4dmk7", "versionNumber": 1} f 2026-05-18 14:10:10.415 -cmpba789y004cualwxlznm0s8 cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0120 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0120", "versionId": "cmpba789l004bualwh05uykj5", "versionNumber": 1} f 2026-05-18 14:10:29.927 -cmpba789y004dualwrb88u8sv cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0120 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0120", "versionId": "cmpba789l004bualwh05uykj5", "versionNumber": 1} f 2026-05-18 14:10:29.927 -cmpba7moe004gualwtogn4zym cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0130 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0130", "versionId": "cmpba7mnw004fualws38xcozw", "versionNumber": 1} f 2026-05-18 14:10:48.59 -cmpba7moe004hualwkcyaq7ad cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0130 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0130", "versionId": "cmpba7mnw004fualws38xcozw", "versionNumber": 1} f 2026-05-18 14:10:48.59 -cmpba7wv2004kualwbosu799k cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0140 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0140", "versionId": "cmpba7wuo004jualwiev25jkp", "versionNumber": 1} f 2026-05-18 14:11:01.79 -cmpba7wv2004lualwu2nfab7r cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0140 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0140", "versionId": "cmpba7wuo004jualwiev25jkp", "versionNumber": 1} f 2026-05-18 14:11:01.79 -cmpba887o004oualw8r3fhykx cmp6p76do0000uaec12miwml1 VERSION_UPLOADED New version uploaded BAB_01_0150 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0150", "versionId": "cmpba8879004nualwdw7y1cd1", "versionNumber": 1} f 2026-05-18 14:11:16.501 -cmpba887o004pualwgiep5qtz cmp6p84ln0001uaec9xgguyqg VERSION_UPLOADED New version uploaded BAB_01_0150 v001 uploaded by Chris Pinto {"shotCode": "BAB_01_0150", "versionId": "cmpba8879004nualwdw7y1cd1", "versionNumber": 1} f 2026-05-18 14:11:16.501 -\. - - --- --- Data for Name: projects; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.projects (id, name, code, description, status, "dueDate", "startDate", "clientId", "producerId", "supervisorId", "slackWebhook", "slackChannel", "createdAt", "updatedAt", "showId", "projectType") FROM stdin; -cmp6pjs5c0003uaecugx03rsv Queenstown Kings: Back 2 Goal QTK-26 Netflix sequel to Queenstown Kings, a soccer film set in rural South Africa. ACTIVE 2026-12-31 00:00:00 2026-05-18 00:00:00 cmp6pm6bg0004uaecev06fsly cmp6p76do0000uaec12miwml1 cmp6p84ln0001uaec9xgguyqg https://hooks.slack.com/services/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 \N 2026-05-15 09:21:18.912 2026-05-15 09:23:23.769 QTK STANDARD -cmp6l5mzq0001ua0gz07bk72f Ungovernable UNG_S1 Netflix tellanovella crime thirller set in South Africa ACTIVE 2026-11-30 00:00:00 \N cmp6pqo2l0005uaecmp57rjpt cmp6p76do0000uaec12miwml1 cmp6p84ln0001uaec9xgguyqg https://hooks.slack.com/services/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 \t#ungovernable 2026-05-15 07:18:20.582 2026-05-15 09:32:41.717 UNG EPISODIC -cmp6px3ak000buaec7dks2bi1 The Secret Lives of Baba Segi's Wives BAB-26 Nigerian Netfilx Film. ACTIVE 2026-05-30 00:00:00 \N cmp6pvnin0009uaece99q52q7 cmp6p76do0000uaec12miwml1 cmp6p84ln0001uaec9xgguyqg https://hooks.slack.com/services/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 \N 2026-05-15 09:31:39.884 2026-05-15 09:33:59.63 BAB STANDARD -cmp6pu8h20008uaecsh1y7egv Better As Gister BAG_S1 Kyknet/Mnet drama series set in Cape Town. ACTIVE 2026-08-31 00:00:00 \N cmp6pt47s0006uaechzp496j4 cmp6p84ln0001uaec9xgguyqg \N https://hooks.slack.com/services/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 \N 2026-05-15 09:29:26.63 2026-05-15 09:34:19.067 BAG EPISODIC -\. - - --- --- Data for Name: review_sessions; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.review_sessions (id, "projectId", token, label, email, "expiresAt", "isActive", "accessCount", "createdAt") FROM stdin; -cmp6lbitx0006ua0gjn87gy7c cmp6l5mzq0001ua0gz07bk72f cmp6lbitx0007ua0gg3r6fb1l Review Round 1 client@studio.com 2026-06-14 07:22:55.125 t 34 2026-05-15 07:22:55.126 -cmpba9g48004sualwm7z9dwcr cmp6px3ak000buaec7dks2bi1 cmpba9g48004tualwyg5bcpeh VFX REVIEW ROUND 1 heidi@ebonylifemedia.com 2026-06-17 14:12:13.382 t 2 2026-05-18 14:12:13.384 -\. - - --- --- Data for Name: sessions; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.sessions (id, "sessionToken", "userId", expires) FROM stdin; -\. - - --- --- Data for Name: shots; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.shots (id, "shotCode", sequence, description, status, priority, "artistId", "projectId", "frameStart", "frameEnd", fps, "dueDate", "createdAt", "updatedAt", scene, episode, "shotNumber", "thumbnailUrl") FROM stdin; -cmpb6fpx30003ualwp5o9l16g BAB_01_0020 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 0 0 24 \N 2026-05-18 12:25:07.575 2026-05-18 12:32:49.283 01 \N 20 /api/files/image%2F9524dff0-45fb-447d-90f8-829c9508dd80-BABA_001_01218449.jpg -cmpb6g71e0005ualwg3vv6mhz BAB_01_0030 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:25:29.762 2026-05-18 12:33:02.52 01 \N 30 /api/files/image%2Fd40a47e3-dde5-43b6-a6a7-f5bef364cdb4-BABA_001_01302919.jpg -cmp6lab2c0003ua0gqfuqv2zi UNG_101_01_0010 \N Add Lighting behind the building IN_PROGRESS NORMAL \N cmp6l5mzq0001ua0gz07bk72f \N \N 24 \N 2026-05-15 07:21:58.404 2026-05-18 05:53:21.923 01 101 10 /api/files/image%2Fa2065027-698b-40eb-85d4-e8aba9737068-Screenshot%202026-05-15%20092103.png -cmp6ly5w9000iua0gd4p83r25 UNG_102_35_0010 \N Add blood to Mondi's shirt IN_PROGRESS NORMAL \N cmp6l5mzq0001ua0gz07bk72f \N \N 24 \N 2026-05-15 07:40:31.449 2026-05-18 05:54:35.713 35 102 10 /api/files/image%2F776ff254-f529-462a-9547-56af08e81f36-Screenshot%202026-05-15%20093934.png -cmpb6gnqw0007ualwl7d6sr99 BAB_01_0040 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:25:51.417 2026-05-18 12:33:14.842 01 \N 40 /api/files/image%2F834f45b2-69ba-43c8-af46-07f02fe2e645-BABA_001_01304476.jpg -cmpb6ibyy000hualwn5nx0iy3 BAB_01_0090 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:27:09.467 2026-05-18 14:08:57.572 01 \N 90 /api/files/image%2F204cfe45-f3b7-4202-b964-17fcde91918a-BABA_001_01331744.jpg -cmpb6gxvb0009ualw5ka4iajc BAB_01_0050 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:26:04.535 2026-05-18 12:33:31.685 01 \N 50 /api/files/image%2Fa79e9b46-e222-4bf5-b718-6a44ee45a7da-BABA_001_01304944.jpg -cmpb6fj0f0001ualwri12d1ny BAB_01_0010 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:24:58.573 2026-05-18 12:32:31.244 01 \N 10 /api/files/image%2F7d424090-c31c-42ae-a5f0-9d4efc979a92-BABA_001_00000000.jpg -cmpb6ikdc000jualwsmib9h22 BAB_01_0100 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:27:20.352 2026-05-18 14:09:21.234 01 \N 100 /api/files/image%2Fbd0bb08c-61fa-4813-915c-cad9f37d36ec-BABA_001_01332512.jpg -cmpb6ir24000lualwxs602inu BAB_01_0110 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:27:29.02 2026-05-18 14:10:10.371 01 \N 110 /api/files/image%2Ffc5e928e-bc50-4d4e-af59-8e67bd69e274-BABA_001_01332972.jpg -cmpb6jrhd000tualw7gajwqx3 BAB_01_0150 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:28:16.225 2026-05-18 14:11:16.475 01 \N 150 /api/files/image%2F64d69e0f-e956-4c0b-b8a3-362f852a3f23-BABA_001_01346755.jpg -cmpb6hmsy000bualwhh2y3bv7 BAB_01_0060 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:26:36.851 2026-05-19 14:10:08.957 01 \N 60 /api/files/image%2Fe08479ea-e6fc-4626-9fc2-d0d57375a5d4-BABA_001_01331499.jpg -cmpb6kowi000vualw80kihxsh BAB_01_0160 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:28:59.538 2026-05-18 12:41:39.117 01 \N 160 /api/files/image%2F7ddcded1-0403-4bbb-9456-745b6dfd8502-BABA_001_01492068.jpg -cmpb6kwa3000xualw6stcowiv BAB_01_0170 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:29:09.099 2026-05-18 12:41:51.759 01 \N 170 /api/files/image%2Ff9dbbd17-7fbe-4463-9079-fe092c0b4a04-BABA_001_01492617.jpg -cmpb6lklq000zualwn3s10e20 BAB_01_0180 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:29:40.622 2026-05-18 12:42:06.755 01 \N 180 /api/files/image%2F69a26b35-b4f1-47cd-9bae-866bb3e8e7e6-BABA_001_01492851.jpg -cmpb6lraa0011ualwmwaxe66q BAB_01_0190 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:29:49.282 2026-05-18 12:42:20.806 01 \N 190 /api/files/image%2F4dd5b8cc-1104-44bd-abc6-9c6ce50fec9b-BABA_001_01493006.jpg -cmpb6lx6g0013ualw9gzj70gv BAB_01_0200 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:29:56.921 2026-05-18 12:42:36.134 01 \N 200 /api/files/image%2F9b668d51-0952-448c-bd08-e2a51ee1c7a9-BABA_001_01493349.jpg -cmpb6mn9g0015ualw8geeo2jj BAB_01_0210 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:30:30.725 2026-05-18 12:42:50.752 01 \N 210 /api/files/image%2F9ae3af7b-6c70-4ce7-941f-02adb9c0d144-BABA_001_01493512.jpg -cmpb6n5c50017ualwdojeyb4h BAB_01_0220 \N Remove Hennessy logos IN_PROGRESS NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:30:54.149 2026-05-18 12:43:05.655 01 \N 220 /api/files/image%2F116eb565-c911-4b0c-bf4b-79c295cacc18-BABA_001_01493917.jpg -cmpb6hw2g000dualwo74lra0h BAB_01_0070 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:26:48.856 2026-05-18 14:08:26.614 01 \N 70 /api/files/image%2F563e30ef-b486-4451-a098-8e151583d6db-BABA_001_01331607.jpg -cmpb6i4qw000fualwdce4tjrz BAB_01_0080 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:27:00.105 2026-05-18 14:08:42.411 01 \N 80 /api/files/image%2Fc43859ec-4f5d-400c-ac02-0381f70e20e9-BABA_001_01331705.jpg -cmpb6iz1t000nualwwa0hd85a BAB_01_0120 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:27:39.378 2026-05-18 14:10:29.893 01 \N 120 /api/files/image%2F741a5d6c-de5e-43e8-8e9a-425c2d1367bf-BABA_001_01344761.jpg -cmpb6jauh000pualwmy5wmyf0 BAB_01_0130 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:27:54.665 2026-05-18 14:10:48.562 01 \N 130 /api/files/image%2Fa271d4ac-d8c0-46a3-b0f6-cd7449f7c26e-BABA_001_01345508.jpg -cmpb6jm6b000rualwob2p6i8c BAB_01_0140 \N Remove Hennessy logos IN_REVIEW NORMAL \N cmp6px3ak000buaec7dks2bi1 \N \N 24 \N 2026-05-18 12:28:09.347 2026-05-18 14:11:01.766 01 \N 140 /api/files/image%2F56f3b2f3-7277-4bd2-9f53-f6b39d774b51-BABA_001_01346110.jpg -\. - - --- --- Data for Name: tasks; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.tasks (id, title, description, type, status, priority, "dueDate", "estimatedHours", "sortOrder", "shotId", "assetId", "assignedArtistId", "createdById", "projectId", "createdAt", "updatedAt", "scheduleNotes", "scheduledEndDate", "scheduledStartDate") FROM stdin; -cmpb6s7bs001rualwjq72tb8u Comp Remove Hennessy logos COMP CLIENT_REVIEW NORMAL 2026-05-26 00:00:00 1 0 cmpb6hmsy000bualwhh2y3bv7 \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:34:50.008 2026-05-19 14:10:08.939 \N 2026-05-19 00:00:00 2026-05-19 00:00:00 -cmpb705cg002jualwtgsnmo21 Comp Remove Hennessy logos COMP INTERNAL_REVIEW NORMAL 2026-05-26 00:00:00 1 0 cmpb6jauh000pualwmy5wmyf0 \N cmp6p76do0000uaec12miwml1 cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:41:00.688 2026-05-19 14:09:25.999 \N 2026-05-18 22:00:00 2026-05-18 22:00:00 -cmpb6yzy50027ualwj1d8iuzx Comp Remove Hennessy logos COMP INTERNAL_REVIEW NORMAL 2026-05-26 00:00:00 1 0 cmpb6ikdc000jualwsmib9h22 \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:40:07.037 2026-05-19 14:59:28.632 \N 2026-05-19 02:00:00 2026-05-19 02:00:00 -cmp6lonel0009ua0gsfb8meil Comp COMP IN_PROGRESS NORMAL 2026-05-16 00:00:00 4 0 cmp6lab2c0003ua0gqfuqv2zi \N cmp6p84ln0001uaec9xgguyqg \N cmp6l5mzq0001ua0gz07bk72f 2026-05-15 07:33:07.582 2026-05-19 12:32:11.53 \N \N \N -cmp6nb5re002bua0gpj1b0r5m Key KEY IN_PROGRESS NORMAL \N 5 2 cmp6ly5w9000iua0gd4p83r25 \N cmp6p76do0000uaec12miwml1 \N cmp6l5mzq0001ua0gz07bk72f 2026-05-15 08:18:37.418 2026-05-19 12:32:12.684 \N \N \N -cmpashhpp0001uapwxjohw3rb FX FX TODO NORMAL 2026-05-22 00:00:00 7 3 cmp6ly5w9000iua0gd4p83r25 \N cmp6p76do0000uaec12miwml1 cmp6p84ln0001uaec9xgguyqg cmp6l5mzq0001ua0gz07bk72f 2026-05-18 05:54:35.591 2026-05-19 12:32:13.579 \N \N \N -cmp6n2ndd001uua0gyrhinj0b Roto FX IN_PROGRESS NORMAL \N 4 1 cmp6ly5w9000iua0gd4p83r25 \N cmp6p84ln0001uaec9xgguyqg \N cmp6l5mzq0001ua0gz07bk72f 2026-05-15 08:12:00.338 2026-05-19 12:32:15.361 \N \N \N -cmp6m1tkq000kua0gazp1izqc Comp COMP IN_PROGRESS NORMAL 2026-05-29 00:00:00 4 0 cmp6ly5w9000iua0gd4p83r25 \N cmp6p84ln0001uaec9xgguyqg \N cmp6l5mzq0001ua0gz07bk72f 2026-05-15 07:43:22.107 2026-05-19 12:32:16.888 \N \N \N -cmpb6zvrr002fualw49zsuz0w Comp Remove Hennessy logos COMP INTERNAL_REVIEW NORMAL 2026-05-26 00:00:00 1 0 cmpb6iz1t000nualwwa0hd85a \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:40:48.279 2026-05-19 12:37:07.725 \N \N \N -cmpb70yzb002vualwpuuzuwfb Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6kowi000vualw80kihxsh \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:41:39.096 2026-05-18 12:41:39.096 \N \N \N -cmpb718pt002zualws07l383v Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6kwa3000xualw6stcowiv \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:41:51.713 2026-05-18 12:41:51.713 \N \N \N -cmpb71kax0033ualw7pvac048 Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6lklq000zualwn3s10e20 \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:42:06.729 2026-05-18 12:42:06.729 \N \N \N -cmpb71v5c0037ualw0vkc5zch Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6lraa0011ualwmwaxe66q \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:42:20.784 2026-05-18 12:42:20.784 \N \N \N -cmpb6p88g0019ualwfkfpdv73 Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6fj0f0001ualwri12d1ny \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:32:31.217 2026-05-18 12:32:31.217 \N \N \N -cmpb6pwc7001hualw03s80mla Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6g71e0005ualwg3vv6mhz \N \N cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:33:02.455 2026-05-18 12:33:02.455 \N \N \N -cmpb6q5vk001jualwollgbegi Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6gnqw0007ualwl7d6sr99 \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:33:14.816 2026-05-18 12:33:14.816 \N \N \N -cmpb6qivn001nualw8svsb727 Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6gxvb0009ualw5ka4iajc \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:33:31.667 2026-05-18 12:33:31.667 \N \N \N -cmpb70nwx002rualw3fm6f776 Comp Remove Hennessy logos COMP INTERNAL_REVIEW NORMAL 2026-05-26 00:00:00 1 0 cmpb6jrhd000tualw7gajwqx3 \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:41:24.753 2026-05-19 12:42:46.508 \N \N \N -cmpb6y8t3001zualw2u5yjdpw Comp Remove Hennessy logos COMP INTERNAL_REVIEW NORMAL 2026-05-26 00:00:00 1 0 cmpb6i4qw000fualwdce4tjrz \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:39:31.863 2026-05-19 12:45:27.522 \N 2026-05-18 23:00:00 2026-05-18 23:00:00 -cmpb6pm5j001dualw7dav9v8m Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6fpx30003ualwp5o9l16g \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:32:49.256 2026-05-19 12:42:49.365 \N \N \N -cmpb6zn31002bualw3n6m0iib Comp Remove Hennessy logos COMP INTERNAL_REVIEW NORMAL 2026-05-26 00:00:00 1 0 cmpb6ir24000lualwxs602inu \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:40:37.021 2026-05-19 12:42:51.818 \N \N \N -cmpb70efn002nualwguu7dd0s Comp Remove Hennessy logos COMP INTERNAL_REVIEW NORMAL 2026-05-26 00:00:00 2 0 cmpb6jm6b000rualwob2p6i8c \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:41:12.467 2026-05-19 12:42:55.221 \N \N \N -cmpb726z5003bualwpyen8nig Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6lx6g0013ualw9gzj70gv \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:42:36.114 2026-05-18 12:42:36.114 \N \N \N -cmpb72i8z003fualw5w4fw1pz Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6mn9g0015ualw8geeo2jj \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:42:50.723 2026-05-18 12:42:50.723 \N \N \N -cmpb72tr1003jualwp99i7kxn Comp Remove Hennessy logos COMP TODO NORMAL 2026-05-26 00:00:00 1 0 cmpb6n5c50017ualwdojeyb4h \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:43:05.629 2026-05-18 12:43:05.629 \N \N \N -cmpb6sgul001vualwpx9ll6e9 Comp Remove Hennessy logos COMP INTERNAL_REVIEW NORMAL 2026-05-26 00:00:00 1 0 cmpb6hw2g000dualwo74lra0h \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:35:02.35 2026-05-19 12:45:25.87 \N 2026-05-18 22:00:00 2026-05-18 22:00:00 -cmpb6yn9d0023ualwhfozkvtk Comp Remove Hennessy logos COMP INTERNAL_REVIEW NORMAL 2026-05-26 00:00:00 1 0 cmpb6ibyy000hualwn5nx0iy3 \N cmp6p84ln0001uaec9xgguyqg cmp6p84ln0001uaec9xgguyqg cmp6px3ak000buaec7dks2bi1 2026-05-18 12:39:50.594 2026-05-19 12:46:10.818 \N 2026-05-19 01:00:00 2026-05-19 01:00:00 -\. - - --- --- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.users (id, name, email, "emailVerified", image, "passwordHash", role, "isActive", "createdAt", "updatedAt", "mustChangePassword") FROM stdin; -cmp6p76do0000uaec12miwml1 Michelle Pinto michelle@twotalesanimation.com \N \N $2a$12$74w6W8UCBfoNHTZDEfIiDullrhpDwxdntHchJ3osnw3jeQCFmee5q PRODUCER t 2026-05-15 09:11:30.828 2026-05-15 09:11:30.828 t -cmp6p84ln0001uaec9xgguyqg Chris Pinto chris@twotalesanimation.com \N \N $2a$12$5ufWMRE8PvIIJkVTtMHK8eGh.5A4RWAm/QZloyWyKRLRZkYAWzl9C ADMIN t 2026-05-15 09:12:15.179 2026-05-15 09:12:59.339 f -\. - - --- --- Data for Name: verification_tokens; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.verification_tokens (identifier, token, expires) FROM stdin; -\. - - --- --- Data for Name: versions; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public.versions (id, "versionNumber", "shotId", "artistId", "fileUrl", "fileName", "fileSize", "mimeType", "thumbnailUrl", "posterUrl", "proxyUrl", fps, duration, "frameCount", width, height, notes, "approvalStatus", "reviewStatus", "isLatest", "createdAt", "updatedAt", "isClientVisible", "sharedAt", "sharedById", "taskId") FROM stdin; -cmpba4l63003rualwhbhqhhe5 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2F751431e6-bb22-4f46-a2c1-c097cf7c1f11-BAB_01_0070.mp4 BAB_01_0070.mp4 1618641 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 14:08:26.667 2026-05-18 14:08:26.667 f \N \N cmpb6sgul001vualwpx9ll6e9 -cmpba4xbu003vualwznl0smim 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2F1cca0b9b-93ca-45af-87a9-4ec17e5c4b68-BAB_01_0080.mp4 BAB_01_0080.mp4 1368491 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 14:08:42.426 2026-05-18 14:08:42.426 f \N \N cmpb6y8t3001zualw2u5yjdpw -cmpba5910003zualw6z0qdjwy 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2F9f624ef8-c043-4986-ae66-1686f40cc0a0-BAB_01_0090.mp4 BAB_01_0090.mp4 3829702 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 14:08:57.588 2026-05-18 14:08:57.588 f \N \N cmpb6yn9d0023ualwhfozkvtk -cmpba5ra80043ualw9smai612 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2F837878f8-c1d1-4657-a8bd-74f222557a35-BAB_01_0100.mp4 BAB_01_0100.mp4 4635850 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 14:09:21.248 2026-05-18 14:09:21.248 f \N \N cmpb6yzy50027ualwj1d8iuzx -cmpba6t7h0047ualw7wh4dmk7 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2F1df1cbc7-7eb4-44ae-be99-47e3e5f30419-BAB_01_0110.mp4 BAB_01_0110.mp4 3174744 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 14:10:10.381 2026-05-18 14:10:10.381 f \N \N cmpb6zn31002bualw3n6m0iib -cmpba789l004bualwh05uykj5 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2Fa8afbaf8-3077-4d96-9862-07223701be96-BAB_01_0120.mp4 BAB_01_0120.mp4 3481771 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 14:10:29.913 2026-05-18 14:10:29.913 f \N \N cmpb6zvrr002fualw49zsuz0w -cmpba7mnw004fualws38xcozw 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2F05692676-779f-4c70-8820-a5108748515b-BAB_01_0130.mp4 BAB_01_0130.mp4 4231614 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 14:10:48.573 2026-05-18 14:10:48.573 f \N \N cmpb705cg002jualwtgsnmo21 -cmpba7wuo004jualwiev25jkp 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2F2108657f-9c53-4567-bb02-fa5b11c951be-BAB_01_0140.mp4 BAB_01_0140.mp4 2876606 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 14:11:01.776 2026-05-18 14:11:01.776 f \N \N cmpb70efn002nualwguu7dd0s -cmpba8879004nualwdw7y1cd1 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2F7a8309d6-72ca-4299-a595-7f2d601f9696-BAB_01_0150.mp4 BAB_01_0150.mp4 3576320 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 14:11:16.485 2026-05-18 14:11:16.485 f \N \N cmpb70nwx002rualw3fm6f776 -cmpb9nqp8003nualwollwipib 1 \N cmp6p84ln0001uaec9xgguyqg /api/files/videos%2F8857035f-5518-4ab9-8cfd-faf4fd06ffa7-BAB_01_0060_v001_comp_TTA.mp4 BAB_01_0060_v001_comp_TTA.mp4 2858248 video/mp4 \N \N \N 24 \N \N \N \N \N PENDING_REVIEW PENDING t 2026-05-18 13:55:20.684 2026-05-19 14:10:08.915 t 2026-05-19 14:10:08.913 cmp6p84ln0001uaec9xgguyqg cmpb6s7bs001rualwjq72tb8u -cmp6lpfmx000dua0gr256g7bd 1 \N \N /api/files/videos%2Fdfb19d65-30b1-4fec-b518-b013f8063b4a-UNG_102_01_0035_MINICUT.mp4 UNG_102_01_0035_MINICUT.mp4 13295042 video/mp4 \N \N \N 24 \N \N \N \N \N APPROVED PENDING t 2026-05-15 07:33:44.169 2026-05-15 07:45:23.112 t 2026-05-15 07:33:56.405 \N cmp6lonel0009ua0gsfb8meil -cmp6m2h1l000oua0gk6kp9kyv 1 \N \N /api/files/videos%2F92aa6ef6-600c-4676-985b-480ebaff6dc1-UNG_102_01_0035_MINICUT.mp4 UNG_102_01_0035_MINICUT.mp4 13295042 video/mp4 \N \N \N 24 \N \N \N \N \N NEEDS_CHANGES PENDING f 2026-05-15 07:43:52.521 2026-05-15 08:05:57.693 t 2026-05-15 07:43:58.453 \N cmp6m1tkq000kua0gazp1izqc -cmp6n30cr001yua0gijmi6ab8 1 \N \N /api/files/videos%2F5fc64845-6a95-42af-94cc-1fc647dfd712-UNG_102_01_0035_MINICUT.mp4 UNG_102_01_0035_MINICUT.mp4 13295042 video/mp4 \N \N \N 24 \N \N \N \N \N APPROVED PENDING t 2026-05-15 08:12:17.163 2026-05-15 08:17:01.574 t 2026-05-15 08:12:23.616 \N cmp6n2ndd001uua0gyrhinj0b -cmp6muvky001hua0gtvk9sx7j 2 \N \N /api/files/videos%2F9efc898f-c1fe-48ff-b300-8cdf2e0b86ee-UNG_102_01_0035_MINICUT.mp4 UNG_102_01_0035_MINICUT.mp4 13295042 video/mp4 \N \N \N 24 \N \N \N \N \N NEEDS_CHANGES PENDING t 2026-05-15 08:05:57.73 2026-05-15 08:20:37.084 t 2026-05-15 08:06:37.578 \N cmp6m1tkq000kua0gazp1izqc -\. - - --- --- Name: _prisma_migrations _prisma_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public._prisma_migrations - ADD CONSTRAINT _prisma_migrations_pkey PRIMARY KEY (id); - - --- --- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.accounts - ADD CONSTRAINT accounts_pkey PRIMARY KEY (id); - - --- --- Name: annotations annotations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT annotations_pkey PRIMARY KEY (id); - - --- --- Name: approvals approvals_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.approvals - ADD CONSTRAINT approvals_pkey PRIMARY KEY (id); - - --- --- Name: assets assets_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.assets - ADD CONSTRAINT assets_pkey PRIMARY KEY (id); - - --- --- Name: client_access client_access_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.client_access - ADD CONSTRAINT client_access_pkey PRIMARY KEY (id); - - --- --- Name: clients clients_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.clients - ADD CONSTRAINT clients_pkey PRIMARY KEY (id); - - --- --- Name: comment_replies comment_replies_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comment_replies - ADD CONSTRAINT comment_replies_pkey PRIMARY KEY (id); - - --- --- Name: comments comments_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comments - ADD CONSTRAINT comments_pkey PRIMARY KEY (id); - - --- --- Name: notifications notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.notifications - ADD CONSTRAINT notifications_pkey PRIMARY KEY (id); - - --- --- Name: projects projects_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.projects - ADD CONSTRAINT projects_pkey PRIMARY KEY (id); - - --- --- Name: review_sessions review_sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.review_sessions - ADD CONSTRAINT review_sessions_pkey PRIMARY KEY (id); - - --- --- Name: sessions sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.sessions - ADD CONSTRAINT sessions_pkey PRIMARY KEY (id); - - --- --- Name: shots shots_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.shots - ADD CONSTRAINT shots_pkey PRIMARY KEY (id); - - --- --- Name: tasks tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT tasks_pkey PRIMARY KEY (id); - - --- --- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.users - ADD CONSTRAINT users_pkey PRIMARY KEY (id); - - --- --- Name: versions versions_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT versions_pkey PRIMARY KEY (id); - - --- --- Name: accounts_provider_providerAccountId_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "accounts_provider_providerAccountId_key" ON public.accounts USING btree (provider, "providerAccountId"); - - --- --- Name: assets_projectId_assetCode_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "assets_projectId_assetCode_key" ON public.assets USING btree ("projectId", "assetCode"); - - --- --- Name: client_access_userId_clientId_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "client_access_userId_clientId_key" ON public.client_access USING btree ("userId", "clientId"); - - --- --- Name: clients_email_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX clients_email_key ON public.clients USING btree (email); - - --- --- Name: projects_code_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX projects_code_key ON public.projects USING btree (code); - - --- --- Name: review_sessions_token_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX review_sessions_token_key ON public.review_sessions USING btree (token); - - --- --- Name: sessions_sessionToken_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "sessions_sessionToken_key" ON public.sessions USING btree ("sessionToken"); - - --- --- Name: shots_projectId_shotCode_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX "shots_projectId_shotCode_key" ON public.shots USING btree ("projectId", "shotCode"); - - --- --- Name: tasks_scheduledEndDate_idx; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE INDEX "tasks_scheduledEndDate_idx" ON public.tasks USING btree ("scheduledEndDate"); - - --- --- Name: tasks_scheduledStartDate_idx; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE INDEX "tasks_scheduledStartDate_idx" ON public.tasks USING btree ("scheduledStartDate"); - - --- --- Name: users_email_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX users_email_key ON public.users USING btree (email); - - --- --- Name: verification_tokens_identifier_token_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX verification_tokens_identifier_token_key ON public.verification_tokens USING btree (identifier, token); - - --- --- Name: verification_tokens_token_key; Type: INDEX; Schema: public; Owner: postgres --- - -CREATE UNIQUE INDEX verification_tokens_token_key ON public.verification_tokens USING btree (token); - - --- --- Name: accounts accounts_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.accounts - ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: annotations annotations_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT "annotations_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: annotations annotations_commentId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT "annotations_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES public.comments(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: annotations annotations_versionId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT "annotations_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES public.versions(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: approvals approvals_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.approvals - ADD CONSTRAINT "approvals_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: approvals approvals_versionId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.approvals - ADD CONSTRAINT "approvals_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES public.versions(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: assets assets_leadId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.assets - ADD CONSTRAINT "assets_leadId_fkey" FOREIGN KEY ("leadId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: assets assets_projectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.assets - ADD CONSTRAINT "assets_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES public.projects(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: client_access client_access_clientId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.client_access - ADD CONSTRAINT "client_access_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES public.clients(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: client_access client_access_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.client_access - ADD CONSTRAINT "client_access_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: comment_replies comment_replies_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comment_replies - ADD CONSTRAINT "comment_replies_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: comment_replies comment_replies_commentId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comment_replies - ADD CONSTRAINT "comment_replies_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES public.comments(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: comments comments_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comments - ADD CONSTRAINT "comments_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: comments comments_versionId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.comments - ADD CONSTRAINT "comments_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES public.versions(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: notifications notifications_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.notifications - ADD CONSTRAINT "notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: projects projects_clientId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.projects - ADD CONSTRAINT "projects_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES public.clients(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: projects projects_producerId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.projects - ADD CONSTRAINT "projects_producerId_fkey" FOREIGN KEY ("producerId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: projects projects_supervisorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.projects - ADD CONSTRAINT "projects_supervisorId_fkey" FOREIGN KEY ("supervisorId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: review_sessions review_sessions_projectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.review_sessions - ADD CONSTRAINT "review_sessions_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES public.projects(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: sessions sessions_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.sessions - ADD CONSTRAINT "sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: shots shots_artistId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.shots - ADD CONSTRAINT "shots_artistId_fkey" FOREIGN KEY ("artistId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: shots shots_projectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.shots - ADD CONSTRAINT "shots_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES public.projects(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: tasks tasks_assetId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_assetId_fkey" FOREIGN KEY ("assetId") REFERENCES public.assets(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: tasks tasks_assignedArtistId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_assignedArtistId_fkey" FOREIGN KEY ("assignedArtistId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: tasks tasks_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: tasks tasks_projectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES public.projects(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: tasks tasks_shotId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT "tasks_shotId_fkey" FOREIGN KEY ("shotId") REFERENCES public.shots(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: versions versions_artistId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT "versions_artistId_fkey" FOREIGN KEY ("artistId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: versions versions_sharedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT "versions_sharedById_fkey" FOREIGN KEY ("sharedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; - - --- --- Name: versions versions_shotId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT "versions_shotId_fkey" FOREIGN KEY ("shotId") REFERENCES public.shots(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: versions versions_taskId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public.versions - ADD CONSTRAINT "versions_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES public.tasks(id) ON UPDATE CASCADE ON DELETE CASCADE; - - --- --- Name: SCHEMA public; Type: ACL; Schema: -; Owner: postgres --- - -REVOKE USAGE ON SCHEMA public FROM PUBLIC; - - --- --- PostgreSQL database dump complete --- - -\unrestrict uqcWeyWTxuI1xGqaLXl55pZERFnuCrL5uaQwEfCNGzJgCPIAyVD8Ux5s8T9tCjf -