# Tasks: Git Integration Plugin for Dashboard Development Feature: 011-git-integration-dashboard ## Phase 1: Setup Goal: Initialize project structure and dependencies. - [ ] T001 Add `GitPython` to `backend/requirements.txt` - [ ] T002 Create git plugin directory structure in `backend/src/plugins/git/` and `frontend/src/components/git/` ## Phase 2: Foundational Goal: Define data models and base classes for Git integration. - [ ] T003 [P] Create SQLAlchemy models for `GitServerConfig` and `GitRepository` in `backend/src/models/git.py` - [ ] T004 [P] Create Pydantic schemas for Git entities in `backend/src/api/routes/git_schemas.py` - [ ] T005 Implement `GitService` base logic (init, clone) in `backend/src/services/git_service.py` - [ ] T006 Implement `GitPlugin(PluginBase)` skeleton in `backend/src/plugins/git_plugin.py` ## Phase 3: User Story 1 - Configure Git Server Connection (P1) Goal: Enable connection to Git servers (GitHub, GitLab, Gitea) via PAT. Independent Test: Configure a Git server connection and verify "Test Connection" succeeds. - [ ] T007 [US1] Implement Git provider connection validation logic in `backend/src/services/git_service.py` - [ ] T008 [US1] Implement `/api/git/config` and `/api/git/config/test` endpoints in `backend/src/api/routes/git.py` - [ ] T009 [P] [US1] Create Git configuration service in `frontend/src/services/gitService.js` - [ ] T010 [US1] Implement Git server settings page in `frontend/src/routes/settings/git/+page.svelte` ## Phase 4: User Story 2 - Dashboard Branch Management (P1) Goal: Manage branches for dashboard repositories. Independent Test: Create a new branch, switch to it, and verify the local repository state updates. - [ ] T011 [US2] Implement branch listing and creation logic in `backend/src/services/git_service.py` - [ ] T012 [US2] Implement branch checkout logic in `backend/src/services/git_service.py` - [ ] T013 [US2] Implement branch management endpoints in `backend/src/api/routes/git.py` - [ ] T014 [P] [US2] Create `BranchSelector` component in `frontend/src/components/git/BranchSelector.svelte` - [ ] T015 [US2] Integrate branch management into Dashboard view in `frontend/src/pages/Dashboard.svelte` ## Phase 5: User Story 3 - Dashboard Synchronization with Git (P1) Goal: Commit, push, and pull dashboard changes. Independent Test: Modify a dashboard, commit changes, push to remote, and verify changes on the Git server. - [ ] T016 [US3] Implement Superset export unpacking logic (YAML files) in `backend/src/plugins/git_plugin.py` - [ ] T017 [US3] Implement commit, push, and pull logic in `backend/src/services/git_service.py` - [ ] T018 [US3] Implement sync endpoints (commit, push, pull) in `backend/src/api/routes/git.py` - [ ] T019 [P] [US3] Create `CommitModal` component in `frontend/src/components/git/CommitModal.svelte` - [ ] T020 [US3] Implement sync controls (Commit/Push/Pull) in `frontend/src/pages/Dashboard.svelte` - [ ] T021 [US3] Implement conflict detection and resolution logic in `backend/src/services/git_service.py` - [ ] T022 [US3] Implement conflict resolution endpoints in `backend/src/api/routes/git.py` - [ ] T023 [P] [US3] Create `ConflictResolver` component in `frontend/src/components/git/ConflictResolver.svelte` ## Phase 6: User Story 4 - Environment Deployment (P2) Goal: Deploy dashboard changes to target environments. Independent Test: Select a target environment and trigger deployment, verifying the dashboard is updated on the target Superset instance. - [ ] T024 [P] [US4] Implement `DeploymentEnvironment` model in `backend/src/models/git.py` - [ ] T025 [US4] Implement deployment logic (Superset Import API) in `backend/src/plugins/git_plugin.py` - [ ] T026 [US4] Implement deployment endpoints in `backend/src/api/routes/git.py` - [ ] T027 [US4] Create environment management UI in `frontend/src/routes/settings/environments/+page.svelte` - [ ] T028 [US4] Implement deployment trigger in `frontend/src/pages/Dashboard.svelte` ## Phase 7: User Story 5 - Git History and Change Tracking (P3) Goal: View dashboard commit history and changes. Independent Test: Open the history view and verify the list of commits matches the Git repository history. - [ ] T029 [US5] Implement commit history retrieval in `backend/src/services/git_service.py` - [ ] T030 [US5] Implement history endpoint in `backend/src/api/routes/git.py` - [ ] T031 [P] [US5] Create `CommitHistory` component in `frontend/src/components/git/CommitHistory.svelte` ## Phase 8: Polish & Cross-cutting Concerns - [ ] T032 Add error handling and loading states to all Git UI components - [ ] T033 Implement offline mode checks for Git operations - [ ] T034 Final integration testing of the complete Git workflow ## Dependencies - US1 is a prerequisite for all other stories. - US2 and US3 are closely related; US2 (branches) should precede US3 (sync). - US4 depends on US3 (changes must be committed to be deployed). - US5 is independent but requires commits to exist. ## Implementation Strategy 1. **MVP**: Complete Phase 1-3 (Setup, Foundational, and US1) to allow Git server configuration. 2. **Core Workflow**: Complete Phase 4-5 (Branches and Sync) to enable version control. 3. **Extension**: Complete Phase 6-7 (Deployment and History).