# Requirements Document

## Introduction

A comprehensive project management system designed specifically for the animation and VFX industry, similar to ftrack or ShotGrid. The system enables project coordinators to track production status, directors to review and approve shots, and artists to manage their tasks and submissions. The system includes role-based access control, task management across different production stages, and comprehensive review workflows.

## Glossary

- **VFX_System**: The project management system for animation and VFX production
- **Shot**: A single sequence or scene in an animation/VFX project that requires work
- **Asset**: A reusable element used across multiple shots, categorized by type
- **Asset_Category**: The classification of assets (characters, props, sets, vehicles)
- **Task**: A specific work item assigned to an artist for a shot or asset
- **Production_Note**: Comments and feedback from coordinators or directors about work progress
- **Review_Status**: The approval state of submitted work (pending, approved, retake)
- **User_Role**: The functional role and responsibilities of a user (artist, coordinator, director, developer)
- **Admin_Permission**: An independent permission flag that grants administrative access regardless of user role
- **Department_Role**: The specialized skill area of an artist (layout, animation, lighting, composite, modeling, rigging, surfacing)
- **Submission**: Work files and media uploaded by artists for review
- **Project**: A collection of shots and assets that make up a complete production
- **API_Key**: A secure token that allows external applications to authenticate with the system
- **External_Application**: Third-party software or scripts that integrate with the VFX_System
- **Frame_Rate**: The number of frames per second (fps) used for the project's video output
- **Data_Drive_Path**: The physical file system location where project work files are stored
- **Publish_Storage_Path**: The designated location where approved and finalized work is delivered
- **Delivery_Image_Resolution**: The required pixel dimensions for final rendered images and sequences
- **Delivery_Movie_Specs**: The required resolution and format specifications for movie deliveries per shot department
- **Technical_Specifications**: The collection of technical requirements and standards defined for a project
- **Global_Upload_Limit**: Site-wide upload size limit for movie files that can be configured by administrators

## Requirements

### Requirement 1

**User Story:** As a user with admin permission, I want to manage user accounts and assign roles, so that I can control access and permissions across the system.

#### Acceptance Criteria

1. THE VFX_System SHALL provide user registration functionality with email and password
2. THE VFX_System SHALL require approval from a user with admin permission before new users can access the system
3. WHEN a user with admin permission assigns a role, THE VFX_System SHALL update the user's permissions immediately
4. THE VFX_System SHALL support four distinct functional roles: director, coordinator, artist, and developer
5. THE VFX_System SHALL support an independent admin permission that can be granted to users of any role
6. THE VFX_System SHALL prevent users without admin permission from modifying user roles or permissions

### Requirement 1.1

**User Story:** As an administrator, I want to create new user accounts directly and edit all user information including passwords, so that I can manage the user base without requiring self-registration.

#### Acceptance Criteria

1. WHEN an administrator accesses the user management page, THE VFX_System SHALL display a comprehensive list of all users with their roles and status
2. THE VFX_System SHALL provide an "Add User" button that opens a user creation form for administrators
3. WHEN an administrator creates a new user, THE VFX_System SHALL require first name, last name, email, password, and role
4. THE VFX_System SHALL allow administrators to set the initial approval status when creating a new user
5. THE VFX_System SHALL allow administrators to grant or revoke admin permission when creating or editing users
6. WHEN an administrator edits an existing user, THE VFX_System SHALL allow modification of first name, last name, email, role, approval status, and admin permission
7. THE VFX_System SHALL provide a password reset functionality that allows administrators to set a new password for any user
8. THE VFX_System SHALL validate that email addresses are unique across all users
9. THE VFX_System SHALL prevent administrators from removing their own admin permission
10. THE VFX_System SHALL allow administrators to delete user accounts that have no associated project memberships or task assignments
11. THE VFX_System SHALL display a warning message when attempting to delete users with existing project associations
12. THE VFX_System SHALL provide search and filter functionality to locate users by name, email, role, or approval status

### Requirement 1.2

**User Story:** As a registered user, I want to manage my profile including uploading an avatar and changing my password, so that I can personalize my account and maintain security.

#### Acceptance Criteria

1. THE VFX_System SHALL provide a profile page accessible to all registered users
2. THE VFX_System SHALL allow users to upload a profile avatar image
3. THE VFX_System SHALL accept common image formats for avatars (jpg, jpeg, png, gif, webp)
4. THE VFX_System SHALL resize and crop uploaded avatars to a standard size (e.g., 200x200 pixels)
5. THE VFX_System SHALL limit avatar file size to a maximum of 5MB
6. THE VFX_System SHALL display the user's avatar in the application header and profile page
7. THE VFX_System SHALL provide a password change form requiring current password verification
8. WHEN a user changes their password, THE VFX_System SHALL require the current password for authentication
9. THE VFX_System SHALL require the new password to be entered twice for confirmation
10. THE VFX_System SHALL validate that the new password meets minimum security requirements
11. THE VFX_System SHALL display password strength indicators during password entry
12. WHEN a password is successfully changed, THE VFX_System SHALL display a confirmation message
13. THE VFX_System SHALL allow users to remove their avatar and revert to a default placeholder

### Requirement 2

**User Story:** As a coordinator, I want to create and manage projects with shots and assets, so that I can organize production work effectively.

#### Acceptance Criteria

1. WHEN a coordinator creates a project, THE VFX_System SHALL generate a unique project identifier
2. THE VFX_System SHALL allow coordinators to add shots and assets to projects
3. THE VFX_System SHALL require coordinators to specify asset category when creating assets
4. THE VFX_System SHALL support the following asset categories: characters, props, sets, vehicles
5. THE VFX_System SHALL enable coordinators to assign tasks to both shots and assets with specific task types
6. THE VFX_System SHALL support the following task types for shots: layout, animation, simulation, lighting, compositing
7. THE VFX_System SHALL support the following task types for assets: modeling, surfacing, rigging
8. WHEN a coordinator assigns a task, THE VFX_System SHALL set a deadline and assign it to an artist
9. THE VFX_System SHALL organize episodes within projects and provide episode-based navigation for shot management
10. THE VFX_System SHALL provide a tabbed interface for project pages with tabs for Overview, Shots, and Assets
11. WHEN a user navigates to the Shots tab within a project, THE VFX_System SHALL display an episode dropdown menu for episode selection
12. THE VFX_System SHALL allow users to switch between episodes within the Shots tab without full page navigation
13. THE VFX_System SHALL filter shots by selected episode when an episode is chosen from the dropdown

### Requirement 2.7

**User Story:** As a user, I want to view comprehensive shot information in an organized tabbed interface, so that I can access notes, tasks, assets, references, and design information efficiently.

#### Acceptance Criteria

1. WHEN a user selects a shot, THE VFX_System SHALL display a shot detail panel with comprehensive shot information
2. THE VFX_System SHALL organize shot information into five tabs: Notes, Tasks, Assets, References, and Design
3. THE VFX_System SHALL display a progress overview section above the tabs showing task completion status
4. WHEN a user clicks the Notes tab, THE VFX_System SHALL display production notes and comments related to the shot
5. WHEN a user clicks the Tasks tab, THE VFX_System SHALL display all tasks associated with the shot with status badges and assignment information
6. WHEN a user clicks the Assets tab, THE VFX_System SHALL display all assets linked to the shot
7. WHEN a user clicks the References tab, THE VFX_System SHALL display reference files (images, videos, documents) uploaded for the shot
8. WHEN a user clicks the Design tab, THE VFX_System SHALL display design information including camera notes, lighting notes, and animation notes
9. THE VFX_System SHALL allow coordinators and administrators to add notes, link assets, and edit design information
10. THE VFX_System SHALL allow all users to upload reference files for shots
11. THE VFX_System SHALL display appropriate empty states with helpful messages when tabs have no content
12. THE VFX_System SHALL provide action buttons in each tab based on user role permissions

### Requirement 3

**User Story:** As a coordinator, I want to create and manage episodes within the project settings, so that I can organize shots into logical production units before creating shots.

#### Acceptance Criteria

1. THE VFX_System SHALL provide episode management functionality within the project settings page
2. WHEN a coordinator accesses project settings, THE VFX_System SHALL display an episodes management section
3. THE VFX_System SHALL allow coordinators to create new episodes with name, episode number, and status
4. THE VFX_System SHALL allow coordinators to edit existing episode details including name, episode number, description, and status
5. THE VFX_System SHALL allow coordinators to delete episodes that have no associated shots
6. THE VFX_System SHALL prevent deletion of episodes that contain shots and display an appropriate error message
7. THE VFX_System SHALL display a list of all episodes for the project with their current status and shot count
8. THE VFX_System SHALL support the following episode statuses: planning, in_progress, on_hold, completed, cancelled
9. THE VFX_System SHALL sort episodes by episode number in ascending order by default

### Requirement 4

**User Story:** As an artist, I want to view my assigned tasks and deadlines, so that I can prioritize my work effectively.

#### Acceptance Criteria

1. WHEN an artist logs in, THE VFX_System SHALL display all tasks assigned to that artist
2. THE VFX_System SHALL show task deadlines with visual indicators for urgency
3. THE VFX_System SHALL display production notes associated with each task
4. THE VFX_System SHALL show the current status of each task (not started, in progress, submitted, approved, retake)
5. THE VFX_System SHALL allow artists to update task status to "in progress" when they begin work

### Requirement 5

**User Story:** As an artist, I want to submit my completed work for review, so that directors can evaluate and approve my shots.

#### Acceptance Criteria

1. WHEN an artist completes a task, THE VFX_System SHALL allow file upload for submission
2. THE VFX_System SHALL accept common media formats for VFX work (mov, mp4, exr, jpg, png)
3. WHEN a submission is uploaded, THE VFX_System SHALL automatically set the task status to "submitted"
4. THE VFX_System SHALL notify the assigned director when new submissions are available
5. THE VFX_System SHALL maintain version history for all submissions

### Requirement 6

**User Story:** As a director, I want to review submitted work and provide feedback, so that I can ensure quality standards are met.

#### Acceptance Criteria

1. WHEN a director accesses a submission, THE VFX_System SHALL display the media with playback controls
2. THE VFX_System SHALL allow directors to approve submissions or request retakes
3. WHEN a director requests a retake, THE VFX_System SHALL require written feedback explaining the changes needed
4. THE VFX_System SHALL notify the artist immediately when review decisions are made
5. WHEN a director approves work, THE VFX_System SHALL mark the task as completed

### Requirement 7

**User Story:** As a coordinator, I want to track production progress across all projects, so that I can identify bottlenecks and manage schedules.

#### Acceptance Criteria

1. THE VFX_System SHALL provide a dashboard showing overall project completion percentages
2. THE VFX_System SHALL display tasks that are overdue with clear visual indicators
3. THE VFX_System SHALL show workload distribution across all artists
4. THE VFX_System SHALL allow coordinators to add production notes to any task or shot
5. THE VFX_System SHALL generate reports on task completion rates by artist and task type

### Requirement 8

**User Story:** As a user, I want to access the system through a modern web interface, so that I can work efficiently from any device.

#### Acceptance Criteria

1. THE VFX_System SHALL provide a responsive web interface using Vue.js framework
2. THE VFX_System SHALL implement the Sidebar07 layout from shadcn-vue component library
3. THE VFX_System SHALL use shadcn-vue components for consistent UI design
4. THE VFX_System SHALL provide secure authentication with session management
5. THE VFX_System SHALL display different interface elements based on user role permissions
6. THE VFX_System SHALL provide a dark theme toggle that persists user preference across sessions
7. THE VFX_System SHALL support both light and dark themes with appropriate color schemes for extended work sessions
8. WHEN a user logs in, THE VFX_System SHALL load and display all available projects in the sidebar project switcher dropdown
9. THE VFX_System SHALL automatically fetch projects on application initialization and after successful authentication

### Requirement 9

**User Story:** As a coordinator, I want to assign department roles to artists within projects, so that I can match artists with appropriate tasks based on their specializations.

#### Acceptance Criteria

1. THE VFX_System SHALL allow coordinators to assign department roles to artists when adding them to projects
2. THE VFX_System SHALL support the following department roles: layout, animation, lighting, composite, modeling, rigging, surfacing
3. WHEN a coordinator assigns tasks, THE VFX_System SHALL filter available artists by matching department roles
4. THE VFX_System SHALL allow coordinators to modify artist department roles within projects
5. THE VFX_System SHALL display artist department roles in task assignment interfaces

### Requirement 10

**User Story:** As a system administrator, I want reliable data storage and API performance, so that the system can handle production workloads.

#### Acceptance Criteria

1. THE VFX_System SHALL use FastAPI framework for backend API development
2. THE VFX_System SHALL store all data in SQLite database with proper indexing
3. THE VFX_System SHALL implement proper database relationships between projects, shots, assets, and tasks
4. THE VFX_System SHALL provide RESTful API endpoints for all system operations
5. THE VFX_System SHALL handle file uploads with appropriate size limits and validation

### Requirement 11

**User Story:** As a developer, I want to have a specialized role that allows me to create integrations and automation tools, so that I can build custom solutions for the production pipeline.

#### Acceptance Criteria

1. THE VFX_System SHALL support a developer role with permissions to access all project data for integration purposes
2. THE VFX_System SHALL allow users with developer role to view all projects, tasks, and submissions for automation purposes
3. THE VFX_System SHALL prevent users with developer role from modifying production data unless explicitly granted additional permissions
4. THE VFX_System SHALL allow developers to create and manage their own API integrations
5. THE VFX_System SHALL display developer-specific interface elements for API management and integration tools

### Requirement 12

**User Story:** As a developer, I want to integrate external applications with the VFX system using API keys, so that I can automate workflows and connect third-party tools.

#### Acceptance Criteria

1. THE VFX_System SHALL allow users with developer role to generate API keys for their own applications
2. THE VFX_System SHALL allow users with admin permission to generate API keys for any external applications
3. THE VFX_System SHALL support API key authentication as an alternative to JWT tokens
4. WHEN an API key is used, THE VFX_System SHALL validate the key and associate it with the permissions of the user who created it
5. THE VFX_System SHALL allow users with developer role to revoke their own API keys
6. THE VFX_System SHALL allow users with admin permission to revoke any API keys when they are no longer needed
7. THE VFX_System SHALL log API key usage for security auditing purposes
8. THE VFX_System SHALL support scoped API keys with limited permissions for specific operations
9. THE VFX_System SHALL provide API key management interface for developers and users with admin permission to create, view, and delete keys

### Requirement 13

**User Story:** As a user with admin permission, I want to grant or revoke admin permission to other users, so that I can delegate administrative responsibilities while maintaining security.

#### Acceptance Criteria

1. THE VFX_System SHALL allow users with admin permission to grant admin permission to users of any functional role
2. THE VFX_System SHALL allow users with admin permission to revoke admin permission from other users
3. THE VFX_System SHALL display admin permission status separately from functional role in user management interfaces
4. THE VFX_System SHALL prevent users from revoking their own admin permission if they are the only admin user
5. THE VFX_System SHALL log all admin permission changes for security auditing purposes

### Requirement 14

**User Story:** As a coordinator, I want to define technical specifications for each project, so that all team members work with consistent production standards and delivery requirements.

#### Acceptance Criteria

1. WHEN a coordinator creates a project, THE VFX_System SHALL allow specification of frame rate in frames per second
2. THE VFX_System SHALL allow coordinators to define physical data drive paths for project file storage
3. THE VFX_System SHALL enable coordinators to specify publish storage paths for approved work
4. THE VFX_System SHALL allow coordinators to set delivery image resolution requirements
5. THE VFX_System SHALL enable coordinators to configure delivery movie resolution and format specifications for each shot department
6. THE VFX_System SHALL store all technical specifications as part of the project configuration
7. THE VFX_System SHALL display technical specifications to all project members for reference

### Requirement 14

**User Story:** As an artist, I want to access project technical specifications, so that I can ensure my work meets the required standards and delivery formats.

#### Acceptance Criteria

1. WHEN an artist views a project, THE VFX_System SHALL display the project frame rate specification
2. THE VFX_System SHALL show artists the appropriate data drive paths for their department
3. THE VFX_System SHALL display publish storage paths where approved work should be delivered
4. THE VFX_System SHALL show delivery image resolution requirements for final outputs
5. THE VFX_System SHALL display delivery movie resolution and format requirements specific to the artist's department
6. THE VFX_System SHALL display the global upload size limit during file submissions
7. THE VFX_System SHALL make technical specifications easily accessible from task and submission interfaces

### Requirement 15

**User Story:** As a coordinator, I want to modify project technical specifications during production, so that I can adapt to changing client requirements or technical constraints.

#### Acceptance Criteria

1. THE VFX_System SHALL allow coordinators to update frame rate specifications for existing projects
2. THE VFX_System SHALL enable coordinators to modify data drive paths when storage locations change
3. THE VFX_System SHALL allow coordinators to update publish storage paths as needed
4. THE VFX_System SHALL enable coordinators to adjust delivery image resolution requirements
5. THE VFX_System SHALL allow coordinators to modify delivery movie resolution and format specifications for each department
6. WHEN technical specifications are updated, THE VFX_System SHALL notify all project members of the changes

### Requirement 16

**User Story:** As a user with admin permission, I want to configure a global upload size limit for movie files, so that I can set consistent file size restrictions across all projects.

#### Acceptance Criteria

1. THE VFX_System SHALL allow users with admin permission to set a global upload size limit for movie files
2. THE VFX_System SHALL apply the global upload limit to all movie file submissions across all projects
3. THE VFX_System SHALL display the current upload size limit to artists during file submission
4. THE VFX_System SHALL validate file sizes against the global limit before allowing uploads
5. THE VFX_System SHALL provide a default upload size limit that can be customized by administrators
6. THE VFX_System SHALL reject file uploads that exceed the global size limit with clear error messages

### Requirement 17

**User Story:** As a coordinator, I want default tasks to be automatically created when I create assets, so that I can ensure consistent workflow setup and reduce manual task creation overhead.

#### Acceptance Criteria

1. WHEN a coordinator creates an asset, THE VFX_System SHALL automatically generate default tasks based on the asset category
2. THE VFX_System SHALL create modeling tasks for all asset categories (characters, props, sets, vehicles)
3. THE VFX_System SHALL create surfacing tasks for all asset categories (characters, props, sets, vehicles)
4. THE VFX_System SHALL create rigging tasks specifically for character and vehicle assets
5. THE VFX_System SHALL allow coordinators to customize which default tasks are created during asset creation
6. THE VFX_System SHALL set default task names following standard naming conventions (e.g., "Modeling", "Surfacing", "Rigging")
7. THE VFX_System SHALL leave default tasks unassigned until coordinators manually assign them to artists

### Requirement 18

**User Story:** As a coordinator, I want to attach reference images and documents to assets, shots, and tasks, so that artists have visual and technical references for their production work.

#### Acceptance Criteria

1. THE VFX_System SHALL allow coordinators to attach reference files to assets during creation and after creation
2. THE VFX_System SHALL allow coordinators to attach reference files to shots during creation and after creation
3. THE VFX_System SHALL allow coordinators to attach reference files to individual tasks
4. THE VFX_System SHALL support common reference file formats (jpg, png, tiff, exr, pdf, mov, mp4)
5. THE VFX_System SHALL display attached reference files in asset, shot, and task detail views for artist access
6. THE VFX_System SHALL allow coordinators to add descriptions and captions to reference files
7. THE VFX_System SHALL enable coordinators to update, replace, or remove reference files
8. THE VFX_System SHALL make reference files accessible to all artists assigned to related tasks
9. THE VFX_System SHALL organize reference files by type (images, documents, videos) for easy browsing

### Requirement 19

**User Story:** As a coordinator, I want to configure project-specific settings for upload locations and default task templates, so that I can customize workflows and file organization for each project's unique requirements.

#### Acceptance Criteria

1. THE VFX_System SHALL allow coordinators to configure upload data storage locations per project
2. THE VFX_System SHALL enable coordinators to define custom default task templates for asset creation per project
3. THE VFX_System SHALL allow coordinators to define custom default task templates for shot creation per project
4. THE VFX_System SHALL support different task templates for different asset categories within the same project
5. THE VFX_System SHALL support different task templates for different shot types within the same project
6. THE VFX_System SHALL allow coordinators to enable or disable specific default tasks per project
7. THE VFX_System SHALL apply project-specific upload locations to all file uploads within that project
8. THE VFX_System SHALL use project-specific default task templates when creating new assets and shots
9. THE VFX_System SHALL provide a project settings interface for coordinators to manage these configurations

### Requirement 20

**User Story:** As a coordinator, I want to view asset task status details and thumbnails in the asset list table, so that I can quickly assess production progress and visually identify assets.

#### Acceptance Criteria

1. THE VFX_System SHALL display individual task status for each asset in the asset list table view
2. THE VFX_System SHALL show task status using visual indicators (color-coded badges) with consistent width for proper alignment
3. THE VFX_System SHALL provide a comprehensive column visibility control dropdown menu to show or hide individual columns
4. THE VFX_System SHALL include a thumbnail column that displays visual previews of assets
5. THE VFX_System SHALL provide a separate thumbnail toggle switch to show or hide the thumbnail column
6. THE VFX_System SHALL allow sorting of assets by individual task status (not started, in progress, submitted, approved, retake)
7. THE VFX_System SHALL display task status for all standard task types (modeling, surfacing, rigging) when applicable to the asset category
8. THE VFX_System SHALL show "N/A" or hide task columns for task types that don't apply to specific asset categories
9. THE VFX_System SHALL update task status display in real-time when task status changes
10. THE VFX_System SHALL provide filtering options to show only assets with specific task status combinations
11. THE VFX_System SHALL maintain column visibility and thumbnail display preferences per user session
12. THE VFX_System SHALL remove the task count column from the asset table to focus on individual task status

### Requirement 21

**User Story:** As a coordinator, I want to add, remove, and edit custom task types for assets and shots, so that I can adapt the production pipeline to project-specific workflows and departments beyond the standard task types.

#### Acceptance Criteria

1. THE VFX_System SHALL allow coordinators to create custom task types with unique names for asset workflows
2. THE VFX_System SHALL allow coordinators to create custom task types with unique names for shot workflows
3. THE VFX_System SHALL enable coordinators to edit existing task type names for both assets and shots
4. THE VFX_System SHALL allow coordinators to remove custom task types that are not currently in use
5. THE VFX_System SHALL prevent deletion of task types that have active tasks assigned to them
6. THE VFX_System SHALL display all available task types (standard and custom) in the task template editor
7. THE VFX_System SHALL persist custom task types per project for use in asset and shot creation
8. THE VFX_System SHALL validate task type names to ensure uniqueness within asset or shot task lists
9. THE VFX_System SHALL apply custom task types to the task template configuration interface
10. THE VFX_System SHALL include custom task types in the asset and shot creation workflows when enabled in templates


### Requirement 22

**User Story:** As a user, I want to see avatars for all team members and users throughout the application, so that I can quickly identify people visually

#### Acceptance Criteria

1. WHEN the System displays a user in any list or card, THE System SHALL display the user's avatar image
2. WHERE a user has uploaded a custom avatar, THE System SHALL display the uploaded avatar image
3. WHERE a user has not uploaded an avatar, THE System SHALL display a generated avatar based on the user's initials
4. THE System SHALL display avatars consistently across all user-related components including user management tables, team member lists, task assignments, activity feeds, notes, submissions, and attachments
5. THE System SHALL provide fallback avatar display using initials when avatar images fail to load

### Requirement 23

**User Story:** As a user, I want to view detailed shot information with organized tabs, so that I can access all shot-related data in one place

#### Acceptance Criteria

1. WHEN a user selects a shot, THE System SHALL display a shot detail panel with tabbed navigation
2. THE System SHALL display shot metadata including name, frame range, status, and description in the detail panel header
3. THE System SHALL provide a Tasks tab that displays all tasks associated with the selected shot
4. THE System SHALL provide a Notes tab that displays task updates and allows users to add department-specific notes
5. THE System SHALL provide References and Design tabs for additional shot information
6. THE System SHALL display progress overview showing task completion statistics for the shot

### Requirement 24

**User Story:** As a developer, I want the system to filter tasks by shot or asset, so that I can retrieve relevant tasks efficiently

#### Acceptance Criteria

1. THE System SHALL accept shot_id as a query parameter in the GET /tasks endpoint
2. THE System SHALL accept asset_id as a query parameter in the GET /tasks endpoint
3. WHEN shot_id is provided, THE System SHALL return only tasks associated with that shot
4. WHEN asset_id is provided, THE System SHALL return only tasks associated with that asset
5. THE System SHALL support combining shot_id or asset_id filters with other existing filters

### Requirement 25

**User Story:** As a coordinator or director, I want to view all project tasks in a unified data table with comprehensive filtering options, so that I can track and manage all shot and asset tasks across the entire project from a single view.

#### Acceptance Criteria

1. THE VFX_System SHALL provide a Tasks tab in the project navigation tabs alongside Overview, Shots, and Assets tabs
2. WHEN a user navigates to the Tasks tab, THE VFX_System SHALL display all tasks for the current project in a data table format
3. THE VFX_System SHALL include tasks from both shots and assets in the unified task table
4. THE VFX_System SHALL display the following columns in the task table: Task Name, Type, Status, Shot/Asset, Episode, Assignee, Deadline, and Created Date
5. THE VFX_System SHALL provide filtering options for task status (not started, in progress, submitted, approved, retake)
6. THE VFX_System SHALL provide filtering options for task type (layout, animation, lighting, compositing, modeling, surfacing, rigging, and custom types)
7. THE VFX_System SHALL provide filtering options for episode to show tasks from specific episodes
8. THE VFX_System SHALL provide filtering options for assignee to show tasks assigned to specific artists
9. THE VFX_System SHALL provide a search field to filter tasks by name or description
10. THE VFX_System SHALL allow sorting by any column in the task table
11. THE VFX_System SHALL display task status with color-coded badges for visual clarity
12. WHEN a user clicks on a task row, THE VFX_System SHALL open the task detail panel
13. THE VFX_System SHALL indicate whether each task belongs to a shot or asset in the table
14. THE VFX_System SHALL display the shot name or asset name associated with each task
15. THE VFX_System SHALL show episode information for shot-related tasks
16. THE VFX_System SHALL provide column visibility controls to show or hide specific columns
17. THE VFX_System SHALL persist filter and column visibility preferences per user session
18. THE VFX_System SHALL display task count and filtered task count in the table header
19. THE VFX_System SHALL support bulk operations on selected tasks (status update, reassignment) for coordinators
20. THE VFX_System SHALL provide export functionality to download the filtered task list as CSV or Excel format


### Requirement 26

**User Story:** As a user, I want to view detailed asset information with organized tabs when I select an asset in the asset browser, so that I can access all asset-related data including tasks, notes, and references in one place.

#### Acceptance Criteria

1. WHEN a user clicks on an asset card in the asset browser, THE VFX_System SHALL display an asset detail panel
2. THE VFX_System SHALL display asset metadata including name, category, status, and description in the detail panel header
3. THE VFX_System SHALL provide a Tasks tab that displays all tasks associated with the selected asset
4. THE VFX_System SHALL provide a Notes tab that displays task updates and allows users to add production notes
5. THE VFX_System SHALL provide a References tab for uploading and viewing reference images and files
6. THE VFX_System SHALL provide a Versions tab for tracking asset version history
7. THE VFX_System SHALL display progress overview showing task completion statistics for the asset
8. THE VFX_System SHALL allow users to close the detail panel and return to the asset browser
9. THE VFX_System SHALL load asset tasks automatically when the Tasks tab is selected
10. THE VFX_System SHALL support role-based permissions for adding notes and uploading references
11. THE VFX_System SHALL display the asset detail panel as a slide-in panel from the right side
12. THE VFX_System SHALL maintain the asset browser state when the detail panel is opened or closed

### Requirement 2.1

**User Story:** As a coordinator, I want to upload a thumbnail image for each project in the project settings, so that projects can be visually identified on the projects page with custom imagery.

#### Acceptance Criteria

1. THE VFX_System SHALL provide a thumbnail upload section in the project settings page
2. THE VFX_System SHALL allow coordinators and administrators to upload project thumbnail images
3. THE VFX_System SHALL accept common image formats for thumbnails (jpg, jpeg, png, gif, webp)
4. THE VFX_System SHALL resize uploaded thumbnails to maintain aspect ratio while fitting within maximum dimensions
5. THE VFX_System SHALL limit thumbnail file size to a maximum of 10MB
6. WHEN a project thumbnail is uploaded, THE VFX_System SHALL store both the original and a resized version
7. THE VFX_System SHALL display the project thumbnail on project cards in the projects list page
8. WHEN no thumbnail is uploaded, THE VFX_System SHALL display a default placeholder image or project initials
9. THE VFX_System SHALL allow coordinators to replace existing thumbnails with new images
10. THE VFX_System SHALL allow coordinators to remove thumbnails and revert to the default placeholder
11. THE VFX_System SHALL display a preview of the current thumbnail in the project settings
12. THE VFX_System SHALL provide visual feedback during thumbnail upload and processing
