Coordinators can configure, per task type, accepted file extensions, a
naming convention, and (for video files) required resolution/format/
codec/frame rate. All checking happens entirely client-side in the
browser before upload - the backend only stores and validates the
configuration itself, never inspects submitted files.
- backend: submission_config_by_task_type JSON column on Project,
schemas/submission_config.py for validation, GET/PUT
/projects/{id}/submission-config endpoints. Added .mxf/.ma/.usd(a/c)
to the supported file formats.
- frontend: new Submissions tab in Project Settings
(SubmissionConfigManager.vue) to configure rules per task type.
TaskSubmissions.vue enforces them before upload: extension/naming
checks via regex, and real video resolution/codec/frame rate
detection via mediainfo.js (parses container metadata directly,
so it works for formats browsers can't play natively like MXF,
ProRes, or DNxHD).
VFX Project Management System
A comprehensive project management system designed specifically for the animation and VFX industry, similar to ftrack or ShotGrid.
Features
- Role-based access control (Admin, Director, Coordinator, Artist)
- Project, episode, and shot management
- Asset management with categories
- Task assignment and tracking
- Review and approval workflows
- File upload and version control
- Real-time notifications
Technology 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)
Development Setup
Prerequisites
- Python 3.9+
- Node.js 18+
- npm or yarn
Backend Setup
-
Navigate to the backend directory:
cd backend -
Create a virtual environment:
python -m venv venv -
Activate the virtual environment:
- Windows:
venv\Scripts\activate - macOS/Linux:
source venv/bin/activate
- Windows:
-
Install dependencies:
pip install -r requirements.txt -
Copy environment file:
cp .env.example .env -
Run the development server:
uvicorn main:app --reload --host 0.0.0.0 --port 8000
The API will be available at http://localhost:8000
Frontend Setup
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install -
Copy environment file:
cp .env.example .env -
Run the development server:
npm run dev
The frontend will be available at http://localhost:5173
API Documentation
Once the backend is running, you can access the interactive API documentation at:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Project Structure
├── backend/ # FastAPI backend
│ ├── models/ # SQLAlchemy models
│ ├── routers/ # API route handlers
│ ├── schemas/ # Pydantic schemas
│ ├── services/ # Business logic
│ ├── main.py # FastAPI application
│ ├── database.py # Database configuration
│ └── requirements.txt # Python dependencies
├── frontend/ # Vue.js frontend
│ ├── src/
│ │ ├── components/ # Vue components
│ │ ├── views/ # Page components
│ │ ├── stores/ # Pinia stores
│ │ ├── services/ # API services
│ │ ├── types/ # TypeScript types
│ │ └── router/ # Vue Router configuration
│ ├── package.json # Node.js dependencies
│ └── vite.config.ts # Vite configuration
└── README.md # This file
Development Workflow
- Start the backend server:
cd backend && uvicorn main:app --reload - Start the frontend server:
cd frontend && npm run dev - Access the application at http://localhost:5173
- API documentation at http://localhost:8000/docs
Contributing
This project follows the spec-driven development methodology. See the .kiro/specs/vfx-project-management/ directory for detailed requirements, design, and implementation tasks.