7f7da15965
Completed: - Phase 0: Project Setup (T001-T003) - Docker Compose, FastAPI skeleton, React SPA - Phase 1: Auth System (T004-T008) - DB models, JWT auth, RBAC middleware, user management - Phase 2: Contacts & Tags (T009-T011) - CRUD API + UI - Phase 3: Equipment Catalog (T012-T014) - Models, API, UI with barcode/QR - Phase 4: Crew Management (T015-T017) - Models, availability, UI - Phase 5: Vehicle Fleet (T018-T020) - Models, assignments, UI - Phase 6: Projects (T021-T023) - Project hierarchy models, CRUD API, list/detail UI
483 lines
20 KiB
JSON
483 lines
20 KiB
JSON
[
|
|
{
|
|
"id": "T001",
|
|
"title": "Initialize project repository and Docker Compose",
|
|
"description": "Create project root with backend/ and frontend/ directories. Set up Docker Compose with services: backend (FastAPI), frontend (Vite React), PostgreSQL, Redis, MinIO. Create .env.example with required env vars.",
|
|
"dependencies": [],
|
|
"estimated_hours": 4,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T002",
|
|
"title": "Set up FastAPI skeleton with SQLAlchemy and Alembic",
|
|
"description": "Initialize FastAPI app with async support, configure SQLAlchemy 2.0 engine and async session, set up Alembic for migrations, create initial migration with Account and User tables.",
|
|
"dependencies": ["T001"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T003",
|
|
"title": "Set up React SPA with Vite, Tailwind CSS, routing and Zustand",
|
|
"description": "Initialize Vite React project with TypeScript, add React Router, Zustand store, React Query, Tailwind CSS with Radix UI primitives. Create basic layout and routing structure.",
|
|
"dependencies": ["T001"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T004",
|
|
"title": "Create database models for Account, User, Role",
|
|
"description": "Implement SQLAlchemy models: Account, User (with password hashing), Role (with permissions JSON). Define relationships and tenant_id on User.",
|
|
"dependencies": ["T002"],
|
|
"estimated_hours": 4,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T005",
|
|
"title": "Implement user authentication (login, refresh, register)",
|
|
"description": "Build auth endpoints: POST /auth/login (JWT access+refresh tokens), POST /auth/refresh, POST /auth/register (create tenant+admin). Use bcrypt, JWT handling.",
|
|
"dependencies": ["T004"],
|
|
"estimated_hours": 10,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T006",
|
|
"title": "Implement RBAC middleware and permission check dependencies",
|
|
"description": "Create FastAPI dependency that extracts user from JWT, loads role permissions, and checks required permission. Add tenant filtering (account_id) to all queries.",
|
|
"dependencies": ["T005"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T007",
|
|
"title": "Create user and role management API (admin)",
|
|
"description": "CRUD endpoints for users: GET /users, POST /users, GET/PUT/DELETE /users/{id}. Role management: GET/PUT roles. Invitation workflow with email activation link.",
|
|
"dependencies": ["T006"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T008",
|
|
"title": "Login and user management UI",
|
|
"description": "Build login page, registration page, password reset flow. Admin pages for user list, create/edit user, role matrix editor. Route guards based on auth state.",
|
|
"dependencies": ["T003", "T005", "T007"],
|
|
"estimated_hours": 12,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T009",
|
|
"title": "Create database models for Contacts and Tags",
|
|
"description": "SQLAlchemy models for Contact (company/person) and Tag. Create Alembic migration.",
|
|
"dependencies": ["T004"],
|
|
"estimated_hours": 3,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T010",
|
|
"title": "Implement contacts CRUD API",
|
|
"description": "REST endpoints for contacts: GET /contacts (with search/filter), POST /contacts, GET/PUT/DELETE /contacts/{id}. Return associated projects.",
|
|
"dependencies": ["T009", "T006"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T011",
|
|
"title": "Contacts management UI (list, detail, form)",
|
|
"description": "Pages: contact list with search/filter, contact detail page showing linked projects, create/edit form for company/person.",
|
|
"dependencies": ["T010"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T012",
|
|
"title": "Create database models for Equipment catalog and StockLocation",
|
|
"description": "SQLAlchemy models: Equipment (with barcode, qr_code, category, status), StockLocation, and EquipmentGroup (Bundle) with M2M items. Migrations.",
|
|
"dependencies": ["T004"],
|
|
"estimated_hours": 4,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T013",
|
|
"title": "Implement Equipment catalog API",
|
|
"description": "CRUD for equipment: GET /equipment (search, filter, pagination), POST /equipment, GET/PUT/DELETE /equipment/{id}. Auto-generate barcode/QR code. Batch import/export CSV.",
|
|
"dependencies": ["T012", "T006"],
|
|
"estimated_hours": 10,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T014",
|
|
"title": "Equipment catalog UI",
|
|
"description": "Equipment list with grid/table toggle, search/filter by category, status, location. Detail page with image, edit form. Barcode/QR code display and print label.",
|
|
"dependencies": ["T013"],
|
|
"estimated_hours": 12,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T015",
|
|
"title": "Create database models for Crew and CrewAvailability",
|
|
"description": "SQLAlchemy models: Crew (internal/freelancer, skills JSON), CrewAvailability (availability/block periods). Migrations.",
|
|
"dependencies": ["T004"],
|
|
"estimated_hours": 3,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T016",
|
|
"title": "Implement Crew catalog and availability API",
|
|
"description": "CRUD for crew members, GET /crew/{id}/availability (timeline). Endpoints to manage availability slots.",
|
|
"dependencies": ["T015", "T006"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T017",
|
|
"title": "Crew management UI",
|
|
"description": "Crew list, detail page, edit form. Availability calendar per crew member. Skill tags editor.",
|
|
"dependencies": ["T016"],
|
|
"estimated_hours": 10,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T018",
|
|
"title": "Create database models for Vehicles and VehicleAssignment",
|
|
"description": "SQLAlchemy models: Vehicle (type, payload, volume), VehicleAssignment (project, period, driver). Migrations.",
|
|
"dependencies": ["T004"],
|
|
"estimated_hours": 3,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T019",
|
|
"title": "Implement Vehicle catalog and assignment API",
|
|
"description": "CRUD for vehicles, GET /vehicles/{id}/assignments. Endpoint for availability check.",
|
|
"dependencies": ["T018", "T006"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T020",
|
|
"title": "Vehicle management UI",
|
|
"description": "Vehicle list, detail, edit form. Calendar for assignments. Drag-and-drop to project (later).",
|
|
"dependencies": ["T019"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T021",
|
|
"title": "Create database models for Project hierarchy",
|
|
"description": "SQLAlchemy models: Project, Subproject, ProjectFunctionGroup, ProjectFunction (with type enum). Migrations. Define cascades.",
|
|
"dependencies": ["T004"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T022",
|
|
"title": "Implement Project CRUD API",
|
|
"description": "Endpoints: GET/POST /projects (filter, sort, paginate), GET/PUT/DELETE /projects/{id}. Include subproject endpoints, function group and function endpoints within project. Auto-generate project number. Status workflow with history.",
|
|
"dependencies": ["T021", "T006", "T010"],
|
|
"estimated_hours": 16,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T023",
|
|
"title": "Project list and detail UI",
|
|
"description": "Project list page with advanced filters (status, customer, date range), sortable columns, pagination. Detail page with tabs: Overview, Functions, Equipment, Crew, Vehicles, Financial, Documents. Inline editing for some fields.",
|
|
"dependencies": ["T022"],
|
|
"estimated_hours": 20,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T024",
|
|
"title": "Project function group and function editor UI",
|
|
"description": "Inside project detail, allow CRUD of function groups and functions (crew/equipment/transport). Drag-and-drop reordering. Time period inheritance from group. Amount, rate fields.",
|
|
"dependencies": ["T023"],
|
|
"estimated_hours": 14,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T025",
|
|
"title": "Create database models for ProjectEquipment and ProjectCrew",
|
|
"description": "Models: ProjectEquipmentGroup, ProjectEquipment (with equipment link, quantity, price, discount), ProjectCrew (with function link, crew_id, period). Migrations.",
|
|
"dependencies": ["T021"],
|
|
"estimated_hours": 4,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T026",
|
|
"title": "Implement project equipment group and items API",
|
|
"description": "Endpoints for project equipment groups: CRUD under /projects/{id}/equipmentgroups. Add equipment items to group (select from catalog or free-text). Include availability check.",
|
|
"dependencies": ["T025", "T022", "T013"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T027",
|
|
"title": "Project equipment management UI",
|
|
"description": "Within project, manage equipment groups and items. Search/autocomplete from catalog, set quantity, price, discount. Visual availability indicator. Drag-and-drop to add items (future).",
|
|
"dependencies": ["T026"],
|
|
"estimated_hours": 12,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T028",
|
|
"title": "Implement crew assignment API",
|
|
"description": "Endpoints for assigning crew to project functions. POST /projects/{id}/functiongroups/{gid}/functions/{fid}/crew (assign crew member). Availability conflict detection.",
|
|
"dependencies": ["T025", "T016"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T029",
|
|
"title": "Crew assignment UI in project",
|
|
"description": "In project crew tab, show crew functions and assigned crew. Search/select crew, show availability conflicts. Drag-and-drop crew onto function.",
|
|
"dependencies": ["T028"],
|
|
"estimated_hours": 10,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T030",
|
|
"title": "Implement vehicle assignment API and UI",
|
|
"description": "Endpoints to assign vehicles to project (similar to crew). UI under project transport tab.",
|
|
"dependencies": ["T025", "T019"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T031",
|
|
"title": "Create database models for Quotes, Invoices, Templates",
|
|
"description": "SQLAlchemy models: Quote, Invoice, Template. Migrations.",
|
|
"dependencies": ["T004"],
|
|
"estimated_hours": 3,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T032",
|
|
"title": "Implement Quote and Invoice API",
|
|
"description": "Endpoints: POST /projects/{id}/quotes (generate from project items), GET/PUT quotes. POST invoices from quotes. Status transitions. Number auto-generation.",
|
|
"dependencies": ["T031", "T022"],
|
|
"estimated_hours": 10,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T033",
|
|
"title": "Financial documents UI",
|
|
"description": "Quote list, create/edit form, PDF preview download. Invoice list with status badges. Payment status tracking. Email sending dialog.",
|
|
"dependencies": ["T032"],
|
|
"estimated_hours": 14,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T034",
|
|
"title": "Template engine for quotes/invoices",
|
|
"description": "Backend: HTML template with placeholders, fill with project data, render to PDF (WeasyPrint). Admin UI for template CRUD with editor.",
|
|
"dependencies": ["T031"],
|
|
"estimated_hours": 10,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T035",
|
|
"title": "Create database models for ProjectRequest",
|
|
"description": "Models: ProjectRequest, ProjectRequestEquipment. Migrations.",
|
|
"dependencies": ["T004"],
|
|
"estimated_hours": 2,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T036",
|
|
"title": "Implement project request API and conversion",
|
|
"description": "Public endpoint POST /requests (without auth). Authenticated endpoints to list, update status, and convert request to project (copy fields, equipment items).",
|
|
"dependencies": ["T035", "T022"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T037",
|
|
"title": "Project request public form and admin UI",
|
|
"description": "Public page with form to submit a project request. Admin page to view requests, convert to project with confirmation dialog.",
|
|
"dependencies": ["T036"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T038",
|
|
"title": "Create database models for Documents",
|
|
"description": "SQLAlchemy model: Document (file metadata). Migrations. Configure file storage (local for dev, S3 for prod).",
|
|
"dependencies": ["T004"],
|
|
"estimated_hours": 3,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T039",
|
|
"title": "Implement document upload/download API",
|
|
"description": "Endpoints: POST /documents (multipart upload), GET /documents/{id} (download or signed URL), DELETE. Associate with project.",
|
|
"dependencies": ["T038", "T006"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T040",
|
|
"title": "Document management UI",
|
|
"description": "File list within project, drag-and-drop upload, file preview (images, PDFs), delete with confirmation.",
|
|
"dependencies": ["T039"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T041",
|
|
"title": "Implement scheduling and timeline API",
|
|
"description": "Endpoints to fetch project timelines (Gantt data), resource utilization timelines (equipment, crew, vehicles availability overlaps).",
|
|
"dependencies": ["T022", "T013", "T016", "T019"],
|
|
"estimated_hours": 10,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T042",
|
|
"title": "Gantt timeline and resource views UI",
|
|
"description": "Interactive Gantt chart for projects (horizontal bars, drag-resize to change dates). Resource utilization view with colored blocks. Zoom/pan.",
|
|
"dependencies": ["T041"],
|
|
"estimated_hours": 18,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T043",
|
|
"title": "Implement iCal feed and external calendar integration",
|
|
"description": "Generate per-user iCal feed URL containing project events. Allow subscribing in Google Calendar etc.",
|
|
"dependencies": ["T022"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T044",
|
|
"title": "Create Task and TaskAssignment models and API",
|
|
"description": "Models for to-do tasks inside projects. CRUD endpoints with status (open, in progress, done), assignee.",
|
|
"dependencies": ["T004", "T021"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T045",
|
|
"title": "Task management UI",
|
|
"description": "Task list in project, personal to-do page, drag to change status, email reminders for due tasks.",
|
|
"dependencies": ["T044"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T046",
|
|
"title": "Reporting and analytics API",
|
|
"description": "Endpoints for financial KPIs, equipment utilization stats, project statistics. Use aggregation queries.",
|
|
"dependencies": ["T032", "T013"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T047",
|
|
"title": "Dashboard and reports UI",
|
|
"description": "Dashboard with configurable widgets (active projects, revenue, equipment utilization, open invoices). Drill-down links. Report pages with charts (using recharts). Export to CSV.",
|
|
"dependencies": ["T046"],
|
|
"estimated_hours": 16,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T048",
|
|
"title": "Implement webhook management and dispatch",
|
|
"description": "Webhook CRUD for admins. Background task (Celery) to dispatch webhooks on configured events (project created, status changed, invoice created, etc.). Retry logic and log.",
|
|
"dependencies": ["T006", "T005"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T049",
|
|
"title": "Webhook configuration UI",
|
|
"description": "Admin page to manage webhooks: add URL, select events, secret key, test trigger, view delivery logs.",
|
|
"dependencies": ["T048"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T050",
|
|
"title": "Create audit log model and middleware",
|
|
"description": "AuditLog model. Middleware or event hook to record all CUD operations with user, action, entity, details. API to retrieve audit log (admin only).",
|
|
"dependencies": ["T004", "T006"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T051",
|
|
"title": "Audit log UI",
|
|
"description": "Admin page with searchable, filterable audit log table. Show who did what and when.",
|
|
"dependencies": ["T050"],
|
|
"estimated_hours": 4,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T052",
|
|
"title": "Internationalization (i18n) setup",
|
|
"description": "Set up i18next in frontend, add DE and EN translation files. Backend: serve translations or use frontend-only. Implement language switcher.",
|
|
"dependencies": ["T003"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T053",
|
|
"title": "PWA (Progressive Web App) configuration and offline support for mobile",
|
|
"description": "Add Service Worker with Workbox, manifest.json, offline caching for project data, equipment lists, pack lists. Use IndexedDB for local storage. Implement sync logic.",
|
|
"dependencies": ["T003", "T022"],
|
|
"estimated_hours": 16,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T054",
|
|
"title": "Barcode/QR scanning on mobile (PWA)",
|
|
"description": "Integrate Capacitor Barcode Scanner plugin. Implement camera scanning UI. On scan: show equipment info and allow status change, packing/unpacking.",
|
|
"dependencies": ["T053", "T014"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T055",
|
|
"title": "Mobile-specific UI (pack list, availability check)",
|
|
"description": "Build mobile-optimized views: pack list with checkboxes (offline capable), quick availability search. Use responsive design.",
|
|
"dependencies": ["T053"],
|
|
"estimated_hours": 10,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T056",
|
|
"title": "Backend API documentation (OpenAPI/Swagger)",
|
|
"description": "Ensure all endpoints have proper Pydantic schemas, descriptions, and examples. Generate OpenAPI spec. Write developer README.",
|
|
"dependencies": ["T002"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T057",
|
|
"title": "Integration tests for critical flows",
|
|
"description": "Write pytest tests for auth, project workflow, equipment assignment, quote/invoice generation. Use test database (SQLite).",
|
|
"dependencies": ["T005", "T022", "T026", "T032"],
|
|
"estimated_hours": 16,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T058",
|
|
"title": "CI/CD pipeline (GitHub Actions)",
|
|
"description": "Set up GitHub Actions workflow: run linting, type checks, tests, build Docker images, push to registry. (Optional) deploy to Coolify via webhook.",
|
|
"dependencies": ["T001"],
|
|
"estimated_hours": 8,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T059",
|
|
"title": "Production deployment configuration (Coolify)",
|
|
"description": "Create Coolify service with Docker Compose, SSL, environment variables, database backup schedule. Document deployment steps.",
|
|
"dependencies": ["T001"],
|
|
"estimated_hours": 6,
|
|
"owner_agent": "implementation_engineer"
|
|
},
|
|
{
|
|
"id": "T060",
|
|
"title": "Performance optimization and final review",
|
|
"description": "Add database indexes missing, optimize heavy queries, implement Redis caching for dashboard stats, add pagination to all list endpoints. Final code review and cleanup.",
|
|
"dependencies": ["T047", "T041"],
|
|
"estimated_hours": 12,
|
|
"owner_agent": "implementation_engineer"
|
|
}
|
|
]
|