schema: spec-driven

# Project context (optional)
# This is shown to AI when creating artifacts.
# Add your tech stack, conventions, style guides, domain knowledge, etc.
context: |
  # VFX Project Management System
  # Similar to ftrack or ShotGrid - a comprehensive project management system for the animation and VFX industry

  ## Tech Stack
  ### Backend
  - FastAPI (Python web framework)
  - SQLAlchemy (ORM)
  - SQLite (Database)
  - JWT authentication
  - Pydantic (Data validation)

  ### Frontend
  - Vue.js 3 with Composition API
  - TypeScript
  - Vite (Build tool)
  - Tailwind CSS
  - shadcn-vue components
  - Pinia (State management)

  ## Domain Knowledge
  - Role-based access control: Admin, Director, Coordinator, Artist
  - Entity hierarchy: Project → Episode → Shot
  - Asset management with categories
  - Task assignment and tracking
  - Review and approval workflows
  - File upload and version control
  - Real-time notifications
  - Soft deletion for data recovery

  ## Conventions
  - API endpoints follow RESTful patterns
  - Database migrations use timestamp-based naming (e.g., migrate_*.py)
  - Test files named as test_*.py
  - Component naming: PascalCase for Vue components
  - API response format: standardized JSON with success/data/error structure
  - Soft deletion is the default (deleted_at timestamp)
  - Custom task statuses are per-project configurable

  ## File Structure
  backend/
    models/      - SQLAlchemy ORM models
    routers/     - FastAPI route handlers
    schemas/     - Pydantic validation schemas
    services/     - Business logic layer
    migrate_*.py - Database migration scripts
    test_*.py    - Test files
  
  frontend/src/
    components/  - Vue components
    views/       - Page components
    stores/      - Pinia state management
    services/    - API services
    types/       - TypeScript types
    router/      - Vue Router configuration

# Per-artifact rules (optional)
# Add custom rules for specific artifacts.
# Example:
#   rules:
#     proposal:
#       - Keep proposals under 500 words
#       - Always include a "Non-goals" section
#     tasks:
#       - Break tasks into chunks of max 2 hours
