# Tasks: Git Integration Plugin **Feature**: Git Integration for Dashboard Development **Status**: Completed **Total Tasks**: 35 ## Phase 1: Setup **Goal**: Initialize project structure and dependencies. - [x] T001 Install GitPython dependency in `backend/requirements.txt` - [x] T002 Create backend directory structure (routes, models, plugins, services) - [x] T003 Create frontend directory structure (components, routes, services) ## Phase 2: Foundational **Goal**: Implement core data models and service skeletons. **Prerequisites**: Phase 1 - [x] T004 Create Git Pydantic models (Branch, Commit, DashboardChange) in `backend/src/api/routes/git_schemas.py` - [x] T005 Create GitServerConfig and Environment SQLAlchemy models in `backend/src/models/git.py` - [x] T006 Implement GitService class skeleton with GitPython init in `backend/src/services/git_service.py` - [x] T007 Implement GitPlugin class skeleton inheriting PluginBase in `backend/src/plugins/git_plugin.py` ## Phase 3: User Story 1 - Configure Git Server (P1) **Goal**: Enable users to configure and validate Git server connections. **Prerequisites**: Phase 2 - [x] T008 [US1] Implement `GitService.test_connection` method in `backend/src/services/git_service.py` - [x] T009 [US1] Implement GET/POST `/api/git/config` endpoints in `backend/src/api/routes/git.py` - [x] T010 [US1] Create `frontend/src/services/gitService.js` API client - [x] T011 [US1] Create `frontend/src/components/tools/ConnectionForm.svelte` (or similar) for Git config - [x] T012 [US1] Implement Settings page at `frontend/src/routes/settings/git/+page.svelte` ## Phase 4: User Story 2 - Branch Management (P1) **Goal**: Enable creating and switching branches for dashboards. **Prerequisites**: Phase 3 - [x] T013 [US2] Implement `GitService` branch operations (list, create, checkout) in `backend/src/services/git_service.py` - [x] T014 [US2] Implement `GitService.init_repo` (clone/init strategy) in `backend/src/services/git_service.py` - [x] T015 [US2] Implement GET/POST `/api/git/branches` endpoints in `backend/src/api/routes/git.py` - [x] T016 [US2] Implement POST `/api/git/checkout` endpoint in `backend/src/api/routes/git.py` - [x] T017 [US2] Create `frontend/src/components/git/BranchSelector.svelte` component - [x] T018 [US2] Update Dashboard page to include Git controls container ## Phase 5: User Story 3 - Synchronization (P1) **Goal**: Enable committing, pushing, and pulling changes. **Prerequisites**: Phase 4 - [x] T019 [US3] Implement Dashboard export/unpack logic (using SupersetClient/superset_tool) in `backend/src/plugins/git_plugin.py` - [x] T020 [US3] Implement `GitService` status and diff generation methods in `backend/src/services/git_service.py` - [x] T021 [US3] Implement `GitService` commit, push, and pull methods in `backend/src/services/git_service.py` - [x] T022 [US3] Implement `/api/git/sync`, `/commit`, `/push`, `/pull` endpoints in `backend/src/api/routes/git.py` - [x] T023 [US3] Create `frontend/src/components/git/CommitModal.svelte` with diff viewer - [x] T024 [US3] Create `frontend/src/components/git/ConflictResolver.svelte` (Keep Mine/Theirs UI) ## Phase 6: User Story 4 - Deployment (P2) **Goal**: Deploy dashboard versions to target environments. **Prerequisites**: Phase 5 - [x] T025 [US4] Implement Environment CRUD endpoints in `backend/src/api/routes/git.py` - [x] T026 [US4] Implement deployment logic (zip packing + Import API) in `backend/src/plugins/git_plugin.py` - [x] T027 [US4] Implement POST `/api/git/deploy` endpoint in `backend/src/api/routes/git.py` - [x] T028 [US4] Create Deployment modal/interface in `frontend/src/components/git/DeploymentModal.svelte` ## Phase 7: User Story 5 - History (P3) **Goal**: View commit history and audit changes. **Prerequisites**: Phase 5 - [x] T029 [US5] Implement `GitService.get_history` method in `backend/src/services/git_service.py` - [x] T030 [US5] Implement GET `/api/git/history` endpoint in `backend/src/api/routes/git.py` - [x] T031 [US5] Create `frontend/src/components/git/CommitHistory.svelte` component - [x] T032 [US5] Integrate History viewer into Dashboard page ## Phase 8: Polish & Cross-Cutting **Goal**: Finalize error handling, UI feedback, and performance. - [x] T033 Add comprehensive error handling for Git operations (timeouts, auth failures) - [x] T034 Add loading states and progress indicators to all Git UI components - [x] T035 Verify offline mode behavior and graceful degradation ## Dependencies - US1 -> US2 -> US3 -> US4 - US3 -> US5 - US1 is the critical path. ## Implementation Strategy - MVP: Complete US1, US2, and US3 (Configure, Branch, Sync). This allows local-only versioning if remote is optional, or full sync if remote is configured. - Incremental: Add Deployment (US4) and History (US5) after core sync workflow is stable.