# Implementation Plan

- [x] 1. Set up project structure and development environment





  - Create backend directory structure with FastAPI application
  - Set up frontend directory structure with Vue.js and Vite
  - Configure development environment with proper dependencies
  - Set up database configuration with SQLAlchemy and SQLite
  - _Requirements: 8.1, 8.2, 8.3_

- [x] 2. Implement core database models and relationships





  - [x] 2.1 Create User model with authentication fields


    - Implement User model with functional role and approval status
    - Add independent admin permission field (is_admin boolean)
    - Add password hashing utilities with bcrypt
    - _Requirements: 1.1, 1.2, 1.4, 12.1_


  
  - [x] 2.2 Create Project and Episode models





    - Implement Project model with basic project information


    - Create Episode model with project relationship
    - _Requirements: 2.1, 2.2_
  


  - [x] 2.3 Create Asset and Shot models





    - Implement Asset model with category classification
    - Create Shot model with episode relationship and frame information
    - _Requirements: 2.2, 2.3, 2.4_
  
  - [x] 2.4 Create Task and related models





    - Implement Task model with shot/asset relationships
    - Create Submission model for work uploads
    - Add Review model for approval workflow
    - Create ProductionNote model with threading support
    - Add TaskAttachment model for file attachments
    - _Requirements: 2.5, 2.6, 3.1, 4.1, 5.1_

- [x] 3. Implement authentication and user management backend





  - [x] 3.1 Create JWT authentication system


    - Implement JWT token generation and validation
    - Add refresh token mechanism
    - Create authentication middleware
    - _Requirements: 1.1, 7.4_
  
  - [x] 3.2 Implement user registration and approval workflow


    - Create user registration endpoint
    - Add admin permission approval functionality
    - Implement functional role assignment system
    - _Requirements: 1.2, 1.3, 1.5_
  
  - [x] 3.3 Create user management API endpoints


    - Implement user CRUD operations
    - Add role-based and admin permission checking
    - Create user profile endpoints
    - Add admin permission management endpoints
    - _Requirements: 1.3, 1.4, 1.5, 12.1, 12.2, 12.3_

  - [x] 3.4 Update database schema for admin permission separation


    - Add is_admin boolean field to User model
    - Remove ADMIN from UserRole enum, keeping only functional roles
    - Create database migration script for existing admin users
    - Update authentication middleware to check admin permission separately
    - _Requirements: 12.1, 12.4, 12.5_

- [x] 4. Implement project and episode management backend





  - [x] 4.1 Create project management API endpoints


    - Implement project CRUD operations
    - Add project member management
    - Create department role assignment for project members
    - _Requirements: 2.1, 8.5, 8.6_
  
  - [x] 4.3 Add technical specifications to project model and API










    - Extend Project model with technical specification fields (frame_rate, data_drive_path, publish_storage_path, delivery_image_resolution, delivery_movie_specs_by_department)
    - Update project creation and update endpoints to handle technical specifications
    - Add validation for frame rate (1-120 fps), resolution formats, and movie specifications
    - Create technical specifications management endpoints
    - Add default delivery movie specifications per department (layout, animation, lighting, composite)
    - _Requirements: 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 15.1, 15.2, 15.3, 15.4, 15.5, 15.6_
  
  - [ ] 4.4 Implement global settings system for upload limit
    - Create GlobalSettings model for site-wide configuration storage
    - Add global upload size limit setting with default value (1GB) for movie files
    - Add global settings API endpoints for admin configuration
    - Create upload size validation middleware using global limit
    - Add settings initialization with default upload limit
    - _Requirements: 16.1, 16.2, 16.3, 16.4, 16.5, 16.6_
  
  - [x] 4.2 Create episode management API endpoints


    - Implement episode CRUD operations within projects
    - Add episode ordering and organization
    - _Requirements: 2.1, 2.2_

- [x] 5. Implement asset and shot management backend





  - [x] 5.1 Create asset management API endpoints


    - Implement asset CRUD operations with categories
    - Add asset organization within projects
    - _Requirements: 2.2, 2.3, 2.4_
  
  - [x] 5.3 Implement default asset task creation





    - Add automatic task generation when assets are created based on asset category
    - Create default task templates for each asset category (modeling, surfacing, rigging)
    - Implement customizable task creation options for coordinators
    - Add default task naming conventions and unassigned task creation
    - Create API endpoint for retrieving default tasks by asset category
    - _Requirements: 17.1, 17.2, 17.3, 17.4, 17.5, 17.6, 17.7_
  
  - [ ] 5.4 Implement reference file management for assets, shots, and tasks
    - Create ReferenceFile model for storing reference images and documents
    - Add reference file upload endpoints for assets, shots, and tasks
    - Implement file type validation and storage for reference files
    - Create reference file CRUD operations with descriptions and captions
    - Add reference file access control for project members
    - Organize reference files by type (images, documents, videos) for browsing
    - _Requirements: 18.1, 18.2, 18.3, 18.4, 18.5, 18.6, 18.7, 18.8, 18.9_
  
  - [x] 5.5 Implement project settings for upload location and default tasks





    - Extend Project model with upload location and task template settings
    - Create project settings API endpoints for coordinators
    - Implement project-specific default task templates for assets and shots
    - Add project-specific upload data location configuration
    - Create task template enable/disable functionality per project
    - _Requirements: 19.1, 19.2, 19.3, 19.4, 19.5, 19.6, 19.7, 19.8, 19.9_
  
  - [x] 5.6 Implement asset task status API for table display


    - Update asset list API to include task status information for each asset
    - Create task status aggregation query for efficient data retrieval
    - Add task status endpoint for individual assets with detailed task information
    - Implement task status filtering and sorting in asset list API
    - Add real-time task status updates through WebSocket or polling
    - Optimize database queries for task status retrieval performance
    - _Requirements: 20.1, 20.2, 20.4, 20.7, 20.8_
  
  - [x] 5.2 Create shot management API endpoints


    - Implement shot CRUD operations within episodes
    - Add bulk shot creation with default tasks
    - Create automatic task generation based on shot type
    - _Requirements: 2.2, 2.5, 2.6_

- [x] 6. Implement task management and workflow backend





  - [x] 6.1 Create task management API endpoints


    - Implement task CRUD operations
    - Add task assignment with department role filtering
    - Create task status update endpoints
    - _Requirements: 2.5, 2.6, 3.1, 3.4, 3.5_
  
  - [x] 6.2 Implement task notes and attachments


    - Create threaded notes system for tasks
    - Add file attachment upload and management
    - Implement attachment categorization (reference, work files, etc.)
    - _Requirements: 3.3, 6.4_
  
  - [x] 6.3 Create submission and review workflow


    - Implement work submission endpoints
    - Add review and approval system
    - Create notification system for review decisions
    - _Requirements: 4.1, 4.2, 4.3, 4.4, 5.1, 5.2, 5.3, 5.4, 5.5_

- [x] 7. Implement file handling and storage system





  - [x] 7.1 Create file upload system


    - Implement secure file upload with validation
    - Add support for common VFX media formats
    - Create organized directory structure for file storage
    - _Requirements: 4.1, 4.2, 8.5_
  
  - [x] 7.2 Implement file serving and access control


    - Create authenticated file serving endpoints
    - Add thumbnail generation for images
    - Implement version control for submissions
    - _Requirements: 4.5, 5.1_

- [x] 8. Complete missing backend functionality




  - [x] 8.1 Add developer role and API key system


    - Add DEVELOPER role to UserRole enum in user model
    - Create APIKey model with scoped permissions
    - Implement API key authentication middleware
    - Add API key management endpoints to auth router
    - _Requirements: 10.1, 10.2, 10.3, 10.4, 10.5, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9_
  
  - [x] 8.2 Create developer-specific endpoints


    - Add developer endpoints for read-only access to all projects
    - Implement developer endpoints for read-only access to all tasks
    - Add developer endpoints for read-only access to all submissions
    - Create API key usage logging system
    - _Requirements: 10.2, 11.7_

- [x] 9. Set up frontend project structure and core components





  - [x] 9.1 Initialize Vue.js application with shadcn-vue


    - Install and configure shadcn-vue component library
    - Set up component registry and imports
    - Implement Sidebar07 layout structure
    - Add Inter font family configuration
    - _Requirements: 7.1, 7.2, 7.3_
  
  - [x] 9.2 Create authentication components


    - Implement login and registration forms using shadcn-vue
    - Add JWT token management with Pinia store
    - Create route guards for protected pages
    - Add authentication service for API calls
    - _Requirements: 1.1, 7.4, 7.5_
  
  - [x] 9.3 Create core layout components


    - Implement three-panel layout (sidebar, content, detail panel)
    - Create responsive navigation with role-based menu items
    - Add breadcrumb navigation system
    - Create loading states and error handling components
    - _Requirements: 7.1, 7.5_
  
  - [x] 9.4 Implement dark theme support


    - Create theme store with Pinia for theme state management
    - Add theme toggle button to application header
    - Implement localStorage persistence for theme preference
    - Add system preference detection for automatic theme selection
    - Configure CSS transitions for smooth theme switching
    - _Requirements: 7.6, 7.7_

- [x] 10. Implement user management frontend







  - [x] 10.1 Create user registration and approval interface


    - Build user registration form with validation using shadcn-vue
    - Implement admin permission approval interface with user list
    - Add functional role management for users with admin permission
    - Add admin permission management interface (grant/revoke admin access)
    - Create pending user approval dashboard
    - _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5, 10.5, 12.1, 12.2, 12.3_
  
  - [x] 10.2 Create user profile and settings






    - Implement user profile display and editing
    - Add department role assignment interface
    - Create user dashboard with personalized content
    - Add developer-specific API key management interface
    - _Requirements: 8.5, 8.6, 11.9_

  - [x] 10.3 Update profile and dashboard for admin permission separation


    - Update profile view to display functional role and admin permission separately
    - Modify dashboard to show admin-specific features based on admin permission, not role
    - Update user interface to distinguish between functional role and admin access
    - Add admin permission toggle in user management interface
    - _Requirements: 12.1, 12.3, 12.4_

- [x] 11. Implement project and episode management frontend







  - [x] 11.1 Create project dashboard and management




    - Build project overview dashboard with progress indicators using shadcn-vue cards
    - Implement project creation and editing forms with validation
    - Add project member management interface with department role assignment
    - Create project filtering and search functionality
    - _Requirements: 2.1, 6.1, 6.3, 8.5, 8.6_
  
  - [x] 11.3 Create technical specifications management interface








    - Build technical specifications form component with frame rate, storage paths, and resolution settings
    - Implement frame rate selector with common VFX frame rate presets (23.976, 24, 25, 29.97, 30, 50, 59.94, 60 fps)
    - Add file path input components for data drive and publish storage paths with validation
    - Create resolution selector with standard delivery formats (HD, 2K, 4K, etc.)
    - Build delivery movie specifications editor for each department with resolution, format, codec, and quality settings
    - Add movie format and codec selectors with standard VFX formats (mov, mp4, exr, prores, h264, etc.)
    - Create department-specific delivery requirements display panel for artists
    - Add technical specifications display panel for artists to view project requirements
    - Implement technical specifications update notifications for project members
    - _Requirements: 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 14.1, 14.2, 14.3, 14.4, 14.5, 14.7, 15.1, 15.2, 15.3, 15.4, 15.5, 15.6_
  
  - [x] 11.4 Create global upload limit management interface


    - Build global upload limit editor for admin users with single size setting for movie files
    - Implement upload limit display component for artists during file submission
    - Add global settings management panel in admin interface
    - Create upload size validation with user-friendly error messages
    - Add default upload limit initialization and reset functionality
    - _Requirements: 16.1, 16.2, 16.3, 16.4, 16.5, 16.6, 14.5_
  
  - [x] 11.2 Create episode management interface





    - Implement episode creation and organization within projects
    - Add episode-based navigation and filtering
    - Create episode progress tracking with visual indicators
    - Build episode list and detail views
    - _Requirements: 2.1, 2.2_

- [x] 11.5 Fix project switcher and episode navigation





  - [x] 11.5.1 Fix project switcher in sidebar


    - Debug and fix project loading in ProjectSwitcher component
    - Ensure projects are automatically fetched on application initialization
    - Add proper error handling and loading states for project fetching
    - Implement project refresh functionality when projects are updated
    - Add visual indicators for project loading and error states
    - _Requirements: 7.8, 7.9_
  


  - [x] 11.5.2 Implement project tab navigation system





    - Create ProjectTabs component with Overview, Shots, and Assets tabs
    - Implement tab switching with proper routing and state management
    - Add tab-specific content areas and navigation
    - Ensure tab state persistence during project navigation
    - Style tabs using shadcn-vue components for consistency


    - _Requirements: 2.10_
  
  - [x] 11.5.3 Implement episode dropdown for Shots tab















    - Create EpisodeDropdown component specifically for the Shots tab
    - Integrate episode dropdown into the Shots tab content area
    - Implement episode-based shot filtering when episode is selected
    - Add episode creation quick action in dropdown for coordinators


    - Add "All Episodes" option to view shots from all episodes
    - Add visual indicators for episode status and progress
    - _Requirements: 2.9, 2.11, 2.12, 2.13_
  
  - [x] 11.5.4 Update project page layout with tab system












    - Modify project views to use the new tab-based layout
    - Update routing to support tab-based navigation (/projects/:id/shots, /projects/:id/assets)
    - Implement proper breadcrumb navigation with tab information
    - Add episode context to URLs when episode is selected in Shots tab
    - Ensure responsive design for tab navigation on mobile devices
    - _Requirements: 2.10, 2.11, 2.12, 2.13_

- [x] 12. Implement asset and shot management frontend





  - [x] 12.1 Create asset browser and management


    - Build categorized asset browser with grid and list views using shadcn-vue
    - Implement asset creation with category selection dropdown
    - Add asset detail view with task tracking and progress
    - Create asset filtering by category and project
    - _Requirements: 2.2, 2.3, 2.4_
  
  - [x] 12.3 Implement asset creation with default tasks









    - Update asset creation form to show default tasks that will be created
    - Add checkbox options for coordinators to customize which default tasks are created
    - Implement preview of default tasks based on selected asset category
    - Add confirmation dialog showing tasks that will be created with the asset
    - Integrate with backend API for automatic task generation during asset creation
    - _Requirements: 17.1, 17.2, 17.3, 17.4, 17.5, 17.6, 17.7_
  



  - [x] 12.6 Implement asset table with task status display and thumbnails





    - Update asset list API to include task status information for each asset
    - Create task status badge component with color-coded status indicators
    - Add task status columns to asset table for modeling, surfacing, and rigging tasks
    - Implement column toggle switch to show/hide task status columns
    - Add sorting functionality for each task status column
    - Create task status filtering options for assets
    - Implement category-aware task column display (hide rigging for props/sets)
    - Add real-time task status updates in the asset table
    - Store user preference for task column visibility per session
    - _Requirements: 20.1, 20.2, 20.3, 20.4, 20.5, 20.6, 20.7, 20.8, 20.9_
  
  - [ ] 12.4 Implement reference file management interface
    - Add reference file upload component to asset, shot, and task forms
    - Create reference file gallery component for detail views
    - Implement drag-and-drop file upload with preview for multiple file types
    - Add file description and caption editing functionality
    - Create reference file browser organized by type (images, documents, videos)
    - Implement reference file management interface for updating and deleting files
    - _Requirements: 18.1, 18.2, 18.3, 18.4, 18.5, 18.6, 18.7, 18.8, 18.9_
  
  - [x] 12.5 Implement project settings interface with episode management





    - Create project settings page with tabbed interface for different settings sections
    - Build episode management section within project settings for creating and editing episodes
    - Implement episode list display with episode number, name, status, and shot count
    - Add episode creation form with name, episode number, description, and status fields
    - Create episode edit functionality with validation
    - Implement episode deletion with protection for episodes containing shots
    - Add upload location configuration section
    - Build default task template editor for assets and shots per project
    - Add task enable/disable toggles for customizing default task creation
    - Implement project-specific settings form with validation
    - Create settings preview showing how templates will be applied
    - _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 19.1, 19.2, 19.3, 19.4, 19.5, 19.6, 19.7, 19.8, 19.9_
  


  - [x] 12.2 Create shot management and bulk creation





    - Implement shot browser with episode organization
    - Build bulk shot creation interface with naming conventions
    - Add automatic task generation for new shots with default task types
    - Create shot detail view with task list and progress tracking
    - _Requirements: 2.2, 2.5, 2.6_


- [x] 13. Implement task management frontend



  - [x] 13.1 Create task list and filtering interface





    - Build artist task dashboard with filtering and sorting using shadcn-vue table
    - Implement task status updates with dropdown selection
    - Add deadline visualization with urgency indicators and color coding


    - Create task assignment interface with department role filtering
    - _Requirements: 3.1, 3.2, 3.4, 3.5, 8.3_
  
  - [x] 13.2 Create task detail panel





    - Implement right-side task detail panel (ftrack-style) using shadcn-vue sheet


    - Add task information display with status and assignment details
    - Create quick action buttons for common operations
    - Add task assignment and status update controls
    - _Requirements: 3.1, 3.3, 3.4_
  
  - [ ] 13.3 Implement task notes and attachments interface
    - Build threaded notes system with rich text editing
    - Create attachment gallery with file type categorization
    - Add reference image viewer with comparison tools
    - Implement file upload with drag-and-drop functionality
    - _Requirements: 3.3, 6.4_

- [ ] 14. Implement submission and review workflow frontend
  - [ ] 14.1 Create work submission interface
    - Build file upload interface for work submissions with progress tracking
    - Implement version control and submission history display
    - Add submission status tracking for artists with visual indicators
    - Create submission notes and metadata input forms
    - Integrate global upload size limit for movie file size validation
    - Display project frame rate and delivery resolution requirements during submission
    - Show department-specific delivery movie format and codec requirements during submission
    - Add validation for file sizes based on global upload limits and project technical specifications
    - Add validation for movie format and codec compliance with department specifications
    - _Requirements: 4.1, 4.2, 4.3, 4.5, 14.5, 14.6_
  
  - [ ] 14.2 Create review and approval interface
    - Implement media player with playback controls for video submissions
    - Build approval/retake interface with feedback forms using shadcn-vue
    - Add notification system for review decisions with toast notifications
    - Create version comparison tools for side-by-side viewing
    - Add image viewer with zoom and annotation capabilities
    - _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5_

- [ ] 15. Implement coordinator tracking and reporting
  - [ ] 15.1 Create production dashboard
    - Build project progress overview with completion percentages using charts
    - Implement workload distribution visualization with user assignment charts
    - Add overdue task identification with visual indicators and alerts
    - Create project status overview with timeline visualization
    - _Requirements: 6.1, 6.2, 6.3_
  
  - [ ] 15.2 Create reporting and analytics
    - Implement task completion rate reports with filtering options
    - Add artist performance tracking with productivity metrics
    - Create production timeline and scheduling views with Gantt-style charts
    - Build export functionality for reports
    - _Requirements: 6.5_

- [x] 16. Implement notification and activity system




  - [x] 16.1 Create notification system


    - Implement real-time notifications for task updates using toast components
    - Add email notification configuration in user settings
    - Create notification preferences for users with granular controls
    - Build notification center with unread indicators
    - _Requirements: 4.4, 5.4_
  


  - [ ] 16.2 Create activity feed and timeline
    - Build project activity stream with real-time updates
    - Implement task activity timeline with chronological events
    - Add user activity tracking with action history
    - Create activity filtering and search functionality
    - _Requirements: 6.4_

- [ ]* 17. Testing and quality assurance
  - [ ]* 17.1 Backend API testing
    - Write unit tests for all API endpoints including API key authentication
    - Create integration tests for workflow scenarios
    - Add authentication and authorization tests for all user roles
    - Test developer role permissions and API key functionality
    - _Requirements: All backend requirements_
  
  - [ ]* 17.2 Frontend component testing
    - Write unit tests for Vue components using Vitest
    - Create integration tests for user workflows
    - Add end-to-end tests for critical paths using Playwright
    - Test shadcn-vue component integration
    - _Requirements: All frontend requirements_
  
  - [ ]* 17.3 Performance and security testing
    - Test file upload performance and limits
    - Validate security measures and access controls
    - Perform load testing on critical endpoints
    - Test API key security and scoping
    - _Requirements: 8.5, Security considerations, 11.7, 11.8_

- [ ] 18. Final integration and deployment preparation
  - [ ] 18.1 Complete system integration
    - Connect all frontend components to backend APIs
    - Implement comprehensive error handling and user feedback
    - Add loading states and progress indicators throughout the application
    - Test all user workflows end-to-end
    - Verify API key authentication integration
    - _Requirements: All requirements_
  
  - [ ] 18.2 Production deployment setup
    - Configure production database settings with proper indexing
    - Set up file storage and backup systems
    - Create deployment documentation and scripts
    - Configure environment variables for production
    - Set up monitoring and logging systems
    - _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5_

- [-] 19. Custom task type management


  - [x] 19.1 Implement backend API for custom task types



    - Add custom_asset_task_types and custom_shot_task_types columns to projects table
    - Create migration script for new database columns
    - Implement GET endpoint to retrieve all task types (standard + custom) for a project
    - Implement POST endpoint to add new custom task types
    - Implement PUT endpoint to update custom task type names
    - Implement DELETE endpoint to remove custom task types
    - Add validation for task type names (alphanumeric with underscores, 3-50 chars)
    - Add check to prevent deletion of task types currently in use
    - Add authorization checks (coordinators and admins only)
    - _Requirements: 21.1, 21.2, 21.3, 21.4, 21.5, 21.8_

  - [x] 19.2 Create custom task type manager component





    - Build CustomTaskTypeManager.vue component for project settings
    - Create separate sections for asset and shot task types
    - Display list of all task types with visual distinction between standard and custom
    - Add "Add Task Type" button and dialog for creating new custom types
    - Implement edit functionality with inline editing or dialog
    - Add delete button with confirmation dialog
    - Show warning when attempting to delete task types in use
    - Validate task type names on frontend before submission
    - Integrate with project settings service layer
    - _Requirements: 21.1, 21.2, 21.3, 21.4, 21.5, 21.6, 21.9_

  - [x] 19.3 Integrate custom task types with task template editor





    - Update DefaultTaskTemplatesEditor to dynamically load task types from API
    - Add custom task type rows to asset task templates table
    - Add custom task type rows to shot task templates table
    - Show edit/delete icons for custom task rows only
    - Update template save logic to include custom task types
    - Refresh task type list when custom types are added/edited/deleted
    - Handle task type name changes in existing templates
    - _Requirements: 21.6, 21.7, 21.9, 21.10_

  - [x] 19.4 Update asset and shot creation to use custom task types





    - Modify asset creation logic to include custom task types from templates
    - Modify shot creation logic to include custom task types from templates
    - Update task generation to handle both standard and custom task types
    - Ensure custom task types appear in task lists and filters
    - Update task type dropdowns and selectors to include custom types
    - Test end-to-end workflow with custom task types
    - _Requirements: 21.7, 21.10_


- [x] 20. Shot table view with task status display




  - [x] 20.1 Enhance backend shot list endpoint with task status


    - Update ShotListResponse schema to include task_status dict and task_details list
    - Modify list_shots endpoint to query and include task information for each shot
    - Add task status filtering parameter to list_shots endpoint
    - Implement logic to build task_status dictionary with all task types
    - Add task_details list with TaskStatusInfo for each task
    - Test endpoint returns correct task status data for shots
    - Verify filtering works correctly for different task statuses
    - _Requirements: Shot table display, Task status visibility_

  - [x] 20.2 Create shot table view component


    - Build ShotsTableView.vue component with table layout
    - Implement table header with sortable columns
    - Add columns for: Shot Name, Episode, Frame Range, Status, Task Status columns, Description
    - Render task status badges in individual columns for each task type
    - Implement row click handler to open shot detail panel
    - Add hover states and selected row highlighting
    - Ensure table is responsive with horizontal scroll for many columns
    - Style table to match asset table design consistency
    - _Requirements: Shot table display, Shot selection_

  - [x] 20.3 Implement column visibility control for shots


    - Create or adapt ColumnVisibilityControl component for shots
    - Add dropdown menu with checkboxes for each column
    - Implement separate sections for info columns and task columns
    - Add "Show All" / "Hide All" quick actions
    - Implement column show/hide logic in table component
    - Store column visibility preferences in session storage
    - Load saved preferences on component mount
    - Test column visibility persists across page refreshes
    - _Requirements: Column visibility control_

  - [x] 20.4 Add task status filtering and sorting


    - Create or adapt TaskStatusFilter component for shots
    - Add dropdown with status options (All, Not Started, In Progress, Submitted, Approved, Retake)
    - Implement filtering logic to show shots matching selected status
    - Add column sorting functionality for all columns
    - Implement sort indicators on column headers
    - Add sort order toggle (ascending/descending)
    - Test filter and sort work correctly together
    - Ensure performance is acceptable with 100+ shots
    - _Requirements: Task status filtering, Sortable columns_

  - [x] 20.5 Integrate shot table with project shots view


    - Update ProjectShotsView.vue to include table view option
    - Add view toggle between grid and table views (optional)
    - Ensure episode filtering works with table view
    - Wire up shot selection to existing detail panel
    - Maintain table scroll position when opening/closing detail panel
    - Test complete workflow from table to detail panel
    - Verify all CRUD operations work with table view
    - _Requirements: Shot selection and detail view, Integration_


- [x] 17. Implement comprehensive admin user management interface





  - [x] 17.1 Create admin user management backend endpoints



    - Add POST /users/admin/create endpoint for admin user creation
    - Add PUT /users/{user_id}/admin endpoint for admin user editing
    - Add PUT /users/{user_id}/password endpoint for admin password reset
    - Add DELETE /users/{user_id}/admin endpoint for admin user deletion with association checks
    - Add validation to prevent admins from removing their own admin permission
    - Add validation to prevent deletion of users with project memberships or task assignments
    - Implement email uniqueness validation across all user operations
    - _Requirements: 1.1.2, 1.1.3, 1.1.6, 1.1.7, 1.1.8, 1.1.9, 1.1.10, 1.1.11_

  - [x] 17.2 Create user management table component



    - Build UserManagementTable.vue component with data table layout
    - Implement columns for: Name, Email, Role, Admin Status, Approval Status, Last Login, Actions
    - Add sortable column headers with sort indicators
    - Implement search functionality for name and email
    - Add filter dropdowns for role, approval status, and admin permission
    - Display status badges (Approved/Pending, Admin, Role)
    - Add actions dropdown menu for each user (Edit, Reset Password, Delete)
    - Implement row selection for bulk operations
    - Add pagination for large user lists
    - _Requirements: 1.1.1, 1.1.12_

  - [x] 17.3 Create user creation and edit dialogs



    - Build UserCreateDialog.vue component with form fields
    - Add fields: first name, last name, email, password, confirm password, role, approval, admin permission
    - Implement real-time validation for email format and password strength
    - Add password requirements display and strength indicator
    - Build UserEditDialog.vue component with editable fields
    - Pre-populate edit form with current user data
    - Highlight modified fields in edit dialog
    - Prevent admins from removing their own admin permission in edit dialog
    - Add success/error toast notifications for all operations
    - _Requirements: 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.9_



  - [ ] 17.4 Implement password reset functionality

    - Build PasswordResetDialog.vue component
    - Add new password and confirm password fields with validation
    - Implement password strength indicator
    - Add "Generate Password" button for secure password generation
    - Add "Copy to Clipboard" functionality for generated passwords
    - Display security notice about password change
    - Integrate password reset with user management table actions


    - _Requirements: 1.1.7_

  - [ ] 17.5 Implement user deletion with safety checks

    - Build UserDeleteConfirmDialog.vue component
    - Check for project memberships and task assignments before deletion
    - Display warning message if user has associations
    - Require typing user email to confirm deletion
    - Add prominent cancel button to prevent accidental deletion


    - Show success message after successful deletion
    - Refresh user list after deletion
    - _Requirements: 1.1.10, 1.1.11_

  - [ ] 17.6 Update user management page and navigation

    - Update UsersView.vue to include admin user management interface
    - Add "Add User" button in page header for admins
    - Integrate UserManagementTable component
    - Add tab or section toggle between pending approvals and all users
    - Ensure proper permission checks (admin-only access)
    - Update sidebar navigation to highlight user management for admins
    - Add breadcrumb navigation for user management page
    - _Requirements: 1.1.1, 1.1.2_


- [-] 18. Implement user profile management with avatar upload and password change



  - [x] 18.1 Add avatar field to user model and create upload endpoints



    - Add avatar_url field to User model in database
    - Create migration script to add avatar_url column
    - Add POST /users/me/avatar endpoint for avatar upload
    - Add DELETE /users/me/avatar endpoint for avatar removal
    - Implement image validation (format, size, dimensions)
    - Implement image processing (resize, crop to 200x200)
    - Store uploaded avatars in uploads/avatars directory
    - Generate unique filenames to prevent conflicts
    - Return avatar URL in user profile responses
    - _Requirements: 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.13_

  - [x] 18.2 Create password change endpoint


    - Add PUT /users/me/password endpoint for password changes
    - Require current password for authentication
    - Validate new password meets security requirements
    - Hash new password with bcrypt before storing
    - Return success message after password update
    - Add error handling for incorrect current password
    - _Requirements: 1.2.7, 1.2.8, 1.2.9, 1.2.10, 1.2.12_

  - [x] 18.3 Create avatar upload component



    - Build AvatarUpload.vue component with drag-and-drop support
    - Add file input with click-to-browse functionality
    - Implement image preview before upload
    - Add client-side validation for file size (5MB max)
    - Add client-side validation for file format (jpg, jpeg, png, gif, webp)
    - Implement image cropping interface using a cropping library
    - Add upload progress indicator
    - Display current avatar with remove button
    - Show initials-based placeholder when no avatar exists
    - Add success/error toast notifications
    - _Requirements: 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.13_

  - [x] 18.4 Create password change component



    - Build PasswordChangeForm.vue component
    - Add current password field with show/hide toggle
    - Add new password field with show/hide toggle
    - Add confirm password field with real-time matching validation
    - Display password requirements list
    - Implement password strength indicator (weak, medium, strong)
    - Add real-time validation for all fields
    - Disable submit button until all validations pass
    - Show success toast after password change
    - Display clear error messages for validation failures
    - _Requirements: 1.2.7, 1.2.8, 1.2.9, 1.2.10, 1.2.11, 1.2.12_

  - [x] 18.5 Update profile page with avatar and password management



    - Update ProfileView.vue to include avatar management section
    - Add AvatarUpload component to profile page
    - Add PasswordChangeForm component to profile page
    - Update profile header to display user avatar
    - Ensure avatar displays in application header (AppHeader.vue)
    - Update user menu to show avatar instead of initials
    - Add section separators for visual organization
    - Implement unsaved changes warning
    - Add loading states for all async operations
    - _Requirements: 1.2.1, 1.2.6_

  - [x] 18.6 Update user service and store for avatar and password




    - Add uploadAvatar method to user service
    - Add removeAvatar method to user service
    - Add changePassword method to user service
    - Update user store to handle avatar URL
    - Update auth store to refresh user data after avatar/password changes
    - Add error handling for all service methods
    - Update user types to include avatar_url field
    - _Requirements: 1.2.2, 1.2.7, 1.2.13_


## Recently Completed Features

- [x] 22. Avatar Display System
- [x] 22.1 Implement avatar display across all user components
  - Added avatar support to UserManagementTable, UserApprovalCard, UserEditDialog, UserDeleteConfirmDialog
  - Added avatar support to ProjectMemberManagement for team members
  - Added avatar support to TaskList and TaskDetailPanel for assignments
  - Added avatar support to SubmissionCard, NoteItem, AttachmentCard
  - Added avatar support to ActivityFeed
  - Implemented 3-tier fallback: uploaded avatar → Dicebear generated → initials
  - Created standardized helper functions for avatar URL handling and initials generation
  - _Requirements: 22.1, 22.2, 22.3, 22.4, 22.5_

- [x] 23. Shot Detail Panel Enhancement with Tabbed Interface
- [x] 23.1 Implement tabbed shot detail panel with five tabs
  - Created comprehensive shot detail panel with header, progress overview, and tabbed interface
  - Implemented Notes tab with "Add Note" action button and empty state
  - Implemented Tasks tab with task list display, loading states, and task selection
  - Implemented Assets tab with "Link Asset" action button and empty state
  - Implemented References tab with "Upload Reference" action button and empty state
  - Implemented Design tab with camera, lighting, and animation notes sections
  - Integrated task loading using shot_id filtering
  - Added progress calculation and status breakdown above tabs
  - Added role-based permission checks for all tab actions
  - Created new event emitters for create-note, link-asset, upload-reference, edit-design
  - Fixed shotService.getShot() method call (removed incorrect projectId parameter)
  - _Requirements: 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10, 2.7.11, 2.7.12_

- [x] 24. Task Filtering by Shot and Asset
- [x] 24.1 Add shot_id and asset_id filtering to backend
  - Added shot_id and asset_id query parameters to GET /tasks endpoint
  - Implemented filtering logic in backend router
  - _Requirements: 24.1, 24.2, 24.3, 24.4, 24.5_

- [x] 24.2 Update frontend task service
  - Updated TaskFilters interface to include shotId and assetId
  - Updated getTasks method to pass new filter parameters
  - Implemented task loading in ShotDetailPanel using shot filtering
  - _Requirements: 24.1, 24.2, 24.3, 24.4, 24.5_

- [x] 25. File Handler Path Resolution Fix
- [x] 25.1 Fix upload directory path resolution
  - Changed from relative to absolute path resolution
  - Used __file__ location to determine backend directory
  - Added parents=True to mkdir calls for proper directory creation
  - Ensures uploads directory works regardless of working directory
  - _Technical Debt_


- [x] 25. Implement Project Tasks Tab with Unified Task View




  - [x] 25.1 Create ProjectTasksView component


    - Create new view component at `frontend/src/views/project/ProjectTasksView.vue`
    - Set up basic layout with data table container
    - Add route configuration for `/projects/:projectId/tasks`
    - _Requirements: 25.1, 25.2_



  - [ ] 25.2 Add Tasks tab to ProjectTabs component
    - Update `frontend/src/components/project/ProjectTabs.vue` to include Tasks tab
    - Add navigation link for Tasks tab alongside Overview, Shots, and Assets
    - Ensure proper routing when Tasks tab is clicked


    - _Requirements: 25.1_

  - [ ] 25.3 Create TasksDataTable component
    - Create `frontend/src/components/task/TasksDataTable.vue` component
    - Implement TanStack Table for data table functionality


    - Define column structure with Task Name, Type, Status, Context, Shot/Asset, Episode, Assignee, Deadline, Created
    - Add row click handler to open task detail panel
    - _Requirements: 25.3, 25.4, 25.11, 25.12_

  - [x] 25.4 Implement task data fetching and state management


    - Update task service to fetch all project tasks with project_id filter
    - Fetch tasks from both shots and assets
    - Store tasks in Pinia store with proper typing
    - Handle loading and error states
    - _Requirements: 25.2, 25.3_

  - [ ] 25.5 Create TaskTableToolbar component with filters
    - Create toolbar component with filter controls

    - Implement status filter (multi-select dropdown)
    - Implement task type filter (multi-select dropdown)
    - Implement episode filter (dropdown)
    - Implement assignee filter (multi-select dropdown)
    - Add search input with debouncing
    - Add context filter toggle (All/Shots/Assets)

    - _Requirements: 25.5, 25.6, 25.7, 25.8, 25.9_

  - [ ] 25.6 Implement column visibility controls
    - Add column visibility dropdown menu
    - Allow toggling visibility for each column
    - Persist column visibility preferences in session storage

    - Ensure minimum required columns remain visible
    - _Requirements: 25.16, 25.17_

  - [ ] 25.7 Implement sorting functionality
    - Enable sorting for all columns
    - Add sort indicators (ascending/descending arrows)

    - Set default sort to Created date (newest first)
    - Support multi-column sorting
    - _Requirements: 25.10_

  - [ ] 25.8 Add status badges and visual indicators
    - Create color-coded status badges for task status

    - Add task type badges
    - Display context icons (shot/asset indicators)
    - Add urgency indicators for deadlines
    - _Requirements: 25.11, 25.4_

  - [ ] 25.9 Display shot/asset and episode information
    - Show shot name or asset name in dedicated column
    - Display episode information for shot tasks
    - Add context indicator (Shot/Asset) with icon
    - Handle null/empty episode gracefully for asset tasks
    - _Requirements: 25.13, 25.14, 25.15_

  - [ ] 25.10 Integrate TaskDetailPanel
    - Reuse existing TaskDetailPanel component
    - Implement slide-in animation from right
    - Handle task selection and panel opening
    - Add close functionality
    - _Requirements: 25.12_

  - [ ]* 25.11 Implement bulk operations for coordinators
    - Add row selection checkboxes
    - Create bulk action toolbar


    - Implement bulk status update
    - Implement bulk reassignment
    - Implement bulk deadline modification
    - Restrict to coordinator and admin roles
    - _Requirements: 25.19_

  - [ ]* 25.12 Add export functionality
    - Implement CSV export for filtered tasks
    - Implement Excel export for filtered tasks
    - Include all visible columns in export
    - Add export button to toolbar
    - _Requirements: 25.20_

  - [ ] 25.13 Add task count display
    - Show total task count in table header
    - Show filtered task count when filters are active
    - Update counts dynamically as filters change
    - _Requirements: 25.18_

  - [ ]* 25.14 Implement pagination
    - Add pagination controls at table bottom
    - Support page size selection (25, 50, 100, 200)
    - Show current page and total pages
    - Persist page size preference

  - [ ]* 25.15 Add responsive design
    - Implement responsive table for desktop
    - Hide less critical columns on tablet
    - Switch to card layout on mobile
    - Test on various screen sizes

  - [ ]* 25.16 Implement virtual scrolling for performance
    - Add virtual scrolling for large task lists (1000+ tasks)
    - Optimize rendering performance
    - Test with large datasets

  - [ ]* 25.17 Add loading and empty states
    - Create loading skeleton for table
    - Design empty state when no tasks exist
    - Design empty state when filters return no results
    - Add helpful messages and actions


## Project Thumbnail Upload Feature

- [x] 21. Implement backend support for project thumbnails





  - Add thumbnail_path field to Project model
  - Create database migration for new field
  - _Requirements: 2.1_


- [x] 21.1 Create thumbnail upload API endpoint

  - Implement POST /projects/{project_id}/thumbnail endpoint
  - Add file validation (type, size)
  - Implement image processing and resizing using Pillow
  - Store original and resized thumbnail versions
  - _Requirements: 2.1, 2.1.3, 2.1.4, 2.1.5, 2.1.6_


- [x] 21.2 Create thumbnail deletion API endpoint

  - Implement DELETE /projects/{project_id}/thumbnail endpoint
  - Remove thumbnail files from filesystem
  - Update database to clear thumbnail_path
  - _Requirements: 2.1.10_

- [x] 21.3 Create thumbnail serving endpoint


  - Implement GET /files/projects/{project_id}/thumbnail endpoint
  - Add authentication check for thumbnail access
  - Serve thumbnail file with proper content-type
  - _Requirements: 2.1.7_

- [x] 21.4 Update project API responses to include thumbnail URL


  - Add thumbnail_url property to Project model
  - Include thumbnail_url in project list and detail responses
  - _Requirements: 2.1.7_

- [x] 22. Implement frontend project thumbnail upload component





  - Create ProjectThumbnailUpload component
  - Implement drag-and-drop upload interface
  - Add file selection via click
  - _Requirements: 2.1.1, 2.1.2_

- [x] 22.1 Add thumbnail preview and management


  - Display current thumbnail with preview
  - Add replace thumbnail functionality
  - Add remove thumbnail button
  - Show upload progress indicator
  - _Requirements: 2.1.9, 2.1.10, 2.1.11, 2.1.12_



- [x] 22.2 Integrate thumbnail upload in project settings






  - Add thumbnail upload section to project settings page
  - Wire up upload/delete API calls
  - Handle upload success and error states
  - Display toast notifications for user feedback


  - _Requirements: 2.1.1, 2.1.12_

- [x] 22.3 Update project card to display thumbnails






  - Add thumbnail image display to project cards
  - Implement fallback to default placeholder
  - Use project initials for default display
  - Add loading skeleton for thumbnails
  - Implement lazy loading for performance
  - _Requirements: 2.1.7, 2.1.8_

- [x] 22.4 Update project type definitions
  - Add thumbnail_url field to Project interface
  - Update project service to handle thumbnail URLs
  - _Requirements: 2.1.7_

- [ ]* 22.5 Write tests for thumbnail functionality
  - Write backend tests for upload/delete endpoints
  - Write frontend tests for upload component
  - Test project card thumbnail display
  - Test authentication and access control
  - _Requirements: 2.1_


## Asset Detail Panel Feature

- [x] 26. Implement asset detail panel with tabbed interface
  - Create comprehensive asset detail panel similar to shot detail panel
  - Implement tabbed interface for organizing asset information
  - Integrate with asset browser for seamless navigation
  - _Requirements: 26_

- [x] 26.1 Create AssetDetailPanel component structure


  - Create AssetDetailPanel.vue component in frontend/src/components/asset/
  - Implement panel header with asset name, category badge, and status badge
  - Add asset information section (description, dates)
  - Add progress overview section with task completion statistics
  - Implement tabbed interface with four tabs (Tasks, Notes, References, Versions)
  - Add close button and click-outside-to-close functionality
  - Implement slide-in animation from right side
  - _Requirements: 26.1, 26.2, 26.7, 26.8, 26.11_


- [x] 26.2 Implement Tasks tab
  - Set Tasks as the default tab
  - Integrate existing TaskList component with asset_id filter
  - Load tasks automatically when panel opens
  - Add "Add Task" action button (coordinators/admins only)
  - Implement task selection to open TaskDetailPanel
  - Add loading states and error handling
  - Display empty state when no tasks exist
  - _Requirements: 26.3, 26.9, 26.10_

- [x] 26.3 Implement Notes tab

  - Create notes display section using existing note components
  - Add "Add Note" action button (coordinators/admins only)
  - Display threaded notes with timestamps and user avatars
  - Implement note creation dialog
  - Add loading states and empty state
  - _Requirements: 26.4, 26.10_

- [x] 26.4 Implement References tab

  - Create reference files gallery view
  - Add "Upload Reference" action button (all users)
  - Implement file upload functionality
  - Display reference files with thumbnails
  - Add file preview, download, and delete actions
  - Add loading states and empty state
  - _Requirements: 26.5, 26.10_

- [x] 26.5 Implement Versions tab

  - Create version history display
  - Add "Publish Version" action button (artists/coordinators/admins)
  - Display version list with timestamps and user info
  - Implement version comparison functionality
  - Add download previous versions feature
  - Add loading states and empty state
  - _Requirements: 26.6, 26.10_



- [x] 26.6 Integrate AssetDetailPanel with AssetBrowser
  - Update AssetBrowser to handle asset card clicks
  - Implement panel open/close state management
  - Update URL with asset ID when panel opens
  - Maintain asset browser state when panel is open
  - Handle browser back button to close panel
  - Ensure proper z-index layering
  - _Requirements: 26.1, 26.8, 26.12_

- [x] 26.7 Add role-based permissions to action buttons

  - Implement permission checks for "Add Task" button
  - Implement permission checks for "Add Note" button
  - Implement permission checks for "Upload Reference" button
  - Implement permission checks for "Publish Version" button
  - Hide/disable buttons based on user role
  - _Requirements: 26.10_

- [ ]* 26.8 Add asset detail panel tests
  - Write component tests for AssetDetailPanel
  - Test tab switching functionality
  - Test task loading and display
  - Test permission-based button visibility
  - Test panel open/close behavior
  - _Requirements: 26_
