71 lines
2.1 KiB
YAML
71 lines
2.1 KiB
YAML
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
|