[ { "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" } ]