3.0 KiB
Implementation Plan: Backup Scheduler & Unified Task UI
Branch: 009-backup-scheduler | Date: 2025-12-30 | Spec: link
Input: Feature specification from /specs/009-backup-scheduler/spec.md
Note: This template is filled in by the /speckit.plan command. See .specify/templates/commands/plan.md for the execution workflow.
Summary
Implement a robust backup scheduling system using APScheduler and a unified "Tasks" UI in SvelteKit to manage and monitor all background operations (backups, migrations).
Technical Context
Language/Version: Python 3.9+, Node.js 18+
Primary Dependencies: FastAPI, APScheduler, SQLAlchemy, SvelteKit, Tailwind CSS
Storage: SQLite (tasks.db), JSON (config.json)
Testing: pytest
Target Platform: Linux server
Project Type: Web application
Performance Goals: UI latency < 200ms, Backup trigger < 1s
Constraints: Minimal resource footprint for background scheduler
Scale/Scope: ~10 environments, ~1000 historical tasks
Constitution Check
GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.
- Library-First: N/A (Feature integration)
- CLI Interface: N/A (Web UI focus)
- Test-First: Mandatory for Scheduler logic and API endpoints. PASS.
- Integration Testing: Required for Scheduler -> TaskManager interaction. PASS.
Result: PASS
Project Structure
Documentation (this feature)
specs/009-backup-scheduler/
├── plan.md # This file (/speckit.plan command output)
├── research.md # Phase 0 output (/speckit.plan command)
├── data-model.md # Phase 1 output (/speckit.plan command)
├── quickstart.md # Phase 1 output (/speckit.plan command)
├── contracts/ # Phase 1 output (/speckit.plan command)
└── tasks.md # Phase 2 output (/speckit.tasks command - NOT created by /speckit.plan)
Source Code (repository root)
backend/
├── src/
│ ├── api/
│ │ └── routes/
│ │ └── tasks.py # NEW: Task management endpoints
│ ├── core/
│ │ ├── scheduler.py # NEW: APScheduler integration
│ │ └── task_manager/ # EXISTING: Updates for DB persistence
│ ├── models/
│ │ └── task.py # NEW: SQLAlchemy model
│ └── services/
└── tests/
frontend/
├── src/
│ ├── components/
│ │ └── TaskList.svelte # NEW: Task display component
│ │ └── TaskLogViewer.svelte # NEW: Detailed log view
│ ├── routes/
│ │ └── tasks/ # NEW: Tasks page
│ │ └── +page.svelte
│ └── types/
Structure Decision: Standard FastAPI + SvelteKit structure.
Complexity Tracking
Fill ONLY if Constitution Check has violations that must be justified
| Violation | Why Needed | Simpler Alternative Rejected Because |
|---|---|---|