docs: create milestone v2.0 roadmap (3 phases)

Phases:
7. GitOps Foundation: ArgoCD installation and configuration
8. Observability Stack: Prometheus/Grafana/Loki + alerts
9. CI Pipeline Hardening: Vitest, Playwright, type checking

All 17 requirements mapped to phases.
This commit is contained in:
Thomas Richter
2026-02-03 14:41:43 +01:00
parent 34b1c05146
commit 27ed813413
3 changed files with 134 additions and 136 deletions

View File

@@ -73,29 +73,29 @@ Which phases cover which requirements. Updated during roadmap creation.
| Requirement | Phase | Status | | Requirement | Phase | Status |
|-------------|-------|--------| |-------------|-------|--------|
| GITOPS-01 | | Pending | | GITOPS-01 | Phase 7 | Pending |
| GITOPS-02 | | Pending | | GITOPS-02 | Phase 7 | Pending |
| GITOPS-03 | | Pending | | GITOPS-03 | Phase 7 | Pending |
| GITOPS-04 | | Pending | | GITOPS-04 | Phase 7 | Pending |
| OBS-01 | | Pending | | OBS-01 | Phase 8 | Pending |
| OBS-02 | | Pending | | OBS-02 | Phase 8 | Pending |
| OBS-03 | | Pending | | OBS-03 | Phase 8 | Pending |
| OBS-04 | | Pending | | OBS-04 | Phase 8 | Pending |
| OBS-05 | | Pending | | OBS-05 | Phase 8 | Pending |
| OBS-06 | | Pending | | OBS-06 | Phase 8 | Pending |
| OBS-07 | | Pending | | OBS-07 | Phase 8 | Pending |
| OBS-08 | | Pending | | OBS-08 | Phase 8 | Pending |
| CI-01 | | Pending | | CI-01 | Phase 9 | Pending |
| CI-02 | | Pending | | CI-02 | Phase 9 | Pending |
| CI-03 | | Pending | | CI-03 | Phase 9 | Pending |
| CI-04 | | Pending | | CI-04 | Phase 9 | Pending |
| CI-05 | | Pending | | CI-05 | Phase 9 | Pending |
**Coverage:** **Coverage:**
- v2.0 requirements: 17 total - v2.0 requirements: 17 total
- Mapped to phases: 0 - Mapped to phases: 17
- Unmapped: 17 ⚠️ - Unmapped: 0
--- ---
*Requirements defined: 2026-02-03* *Requirements defined: 2026-02-03*
*Last updated: 2026-02-03 after initial definition* *Last updated: 2026-02-03 — Traceability updated after roadmap creation*

View File

@@ -1,8 +1,13 @@
# Roadmap: TaskPlanner # Roadmap: TaskPlanner
## Milestones
-**v1.0 MVP** - Phases 1-6 (shipped 2026-02-01)
- 🚧 **v2.0 Production Operations** - Phases 7-9 (in progress)
## Overview ## Overview
TaskPlanner delivers personal task and notes management with image attachments, accessible from any device via web browser. The roadmap progresses from data foundation through core features (entries, images, tags, search) to containerized deployment, with each phase delivering complete, verifiable functionality that enables the next. TaskPlanner delivers personal task and notes management with image attachments, accessible from any device via web browser. v1.0 established core functionality. v2.0 adds production-grade operations: GitOps deployment automation via ArgoCD, comprehensive observability via Prometheus/Grafana/Loki, and CI pipeline hardening with automated testing.
## Phases ## Phases
@@ -12,137 +17,121 @@ TaskPlanner delivers personal task and notes management with image attachments,
Decimal phases appear between their surrounding integers in numeric order. Decimal phases appear between their surrounding integers in numeric order.
- [x] **Phase 1: Foundation** - Data model, repository layer, and project structure ✓ <details>
- [x] **Phase 2: Core CRUD** - Entry management, quick capture, and responsive UI ✓ <summary>v1.0 MVP (Phases 1-6) - SHIPPED 2026-02-01</summary>
- [x] **Phase 3: Images** - Image attachments with mobile camera support ✓
- [x] **Phase 4: Tags & Organization** - Tagging system with pinning and due dates ✓
- [x] **Phase 5: Search** - Full-text search and filtering ✓
- [x] **Phase 6: Deployment** - Docker containerization and production configuration ✓
## Phase Details - [x] **Phase 1: Foundation** - Data model, repository layer, and project structure
- [x] **Phase 2: Core CRUD** - Entry management, quick capture, and responsive UI
- [x] **Phase 3: Images** - Image attachments with mobile camera support
- [x] **Phase 4: Tags & Organization** - Tagging system with pinning and due dates
- [x] **Phase 5: Search** - Full-text search and filtering
- [x] **Phase 6: Deployment** - Docker containerization and production configuration
### Phase 1: Foundation ### Phase 1: Foundation
**Goal**: Data persistence and project structure are ready for feature development **Goal**: Data persistence and project structure are ready for feature development
**Depends on**: Nothing (first phase) **Plans**: 2/2 complete
**Requirements**: None (foundational — enables all other requirements)
**Success Criteria** (what must be TRUE):
1. SQLite database initializes with schema on first run
2. Unified entries table supports both tasks and thoughts via type field
3. Repository layer provides typed CRUD operations for entries
4. Filesystem storage directory structure exists for future images
5. Development server starts and serves a basic page
**Plans**: 2 plans
Plans:
- [x] 01-01-PLAN.md — SvelteKit project setup with Drizzle schema and unified entries table
- [x] 01-02-PLAN.md — Repository layer with typed CRUD and verification page
### Phase 2: Core CRUD ### Phase 2: Core CRUD
**Goal**: Users can create, manage, and view entries with a responsive, accessible UI **Goal**: Users can create, manage, and view entries with a responsive, accessible UI
**Depends on**: Phase 1 **Plans**: 4/4 complete
**Requirements**: CORE-01, CORE-02, CORE-03, CORE-04, CORE-05, CORE-06, CAPT-01, CAPT-02, CAPT-03, UX-01, UX-02, UX-03
**Success Criteria** (what must be TRUE):
1. User can create a new entry specifying task or thought type
2. User can edit entry title, content, and type
3. User can delete an entry with confirmation
4. User can mark a task as complete and see visual indicator
5. User can add notes to an existing entry
6. Quick capture input is visible on main view with one-click submission
7. UI is usable on mobile devices with adequate touch targets
8. Text is readable for older eyes (minimum 16px base font)
**Plans**: 4 plans
Plans:
- [x] 02-01-PLAN.md — Form actions for CRUD operations and accessible base styling
- [x] 02-02-PLAN.md — Entry list, entry cards, and quick capture components
- [x] 02-03-PLAN.md — Inline editing with expand/collapse, auto-save, and completed toggle
- [x] 02-04-PLAN.md — Swipe-to-delete gesture and mobile UX verification
### Phase 3: Images ### Phase 3: Images
**Goal**: Users can attach, view, and manage images on entries from any device **Goal**: Users can attach, view, and manage images on entries from any device
**Depends on**: Phase 2 **Plans**: 4/4 complete
**Requirements**: IMG-01, IMG-02, IMG-03, IMG-04
**Success Criteria** (what must be TRUE):
1. User can attach images via file upload on desktop
2. User can attach images via camera capture on mobile
3. User can view attached images inline with entry
4. User can remove image attachments from an entry
5. Images are stored on filesystem (not in database)
**Plans**: 4 plans
Plans:
- [x] 03-01-PLAN.md — Database schema, file storage, thumbnail generation, and API endpoints
- [x] 03-02-PLAN.md — File upload form action and ImageUpload component with drag-drop
- [x] 03-03-PLAN.md — CameraCapture component with getUserMedia and preview/confirm flow
- [x] 03-04-PLAN.md — EntryCard integration with gallery, lightbox, and delete functionality
### Phase 4: Tags & Organization ### Phase 4: Tags & Organization
**Goal**: Users can organize entries with tags and quick access features **Goal**: Users can organize entries with tags and quick access features
**Depends on**: Phase 2 **Plans**: 3/3 complete
**Requirements**: TAG-01, TAG-02, TAG-03, TAG-04, ORG-01, ORG-02, ORG-03
**Success Criteria** (what must be TRUE):
1. User can add multiple tags to an entry
2. User can remove tags from an entry
3. Tag input shows autocomplete suggestions from existing tags
4. Tags are case-insensitive ("work" matches "Work" and "WORK")
5. User can pin/favorite an entry for quick access
6. User can set a due date on a task
7. Pinned entries appear in a dedicated section at top of list
**Plans**: 3 plans
Plans:
- [x] 04-01-PLAN.md — Tags schema with case-insensitive index and tagRepository
- [x] 04-02-PLAN.md — Pin/favorite and due date UI (uses existing schema columns)
- [x] 04-03-PLAN.md — Tag input component with Svelecte autocomplete
### Phase 5: Search ### Phase 5: Search
**Goal**: Users can find entries through search and filtering **Goal**: Users can find entries through search and filtering
**Depends on**: Phase 2, Phase 4 (tags for filtering) **Plans**: 3/3 complete
**Requirements**: SRCH-01, SRCH-02, SRCH-03, SRCH-04
**Success Criteria** (what must be TRUE):
1. User can search entries by text in title and content
2. User can filter entries by tag (single or multiple)
3. User can filter entries by date range
4. User can filter to show only tasks or only thoughts
5. Search results show relevant matches with highlighting
**Plans**: 3 plans
Plans:
- [x] 05-01-PLAN.md — SearchBar and FilterBar components with type definitions
- [x] 05-02-PLAN.md — Filtering logic and text highlighting utilities
- [x] 05-03-PLAN.md — Integration with recent searches and "/" keyboard shortcut
### Phase 6: Deployment ### Phase 6: Deployment
**Goal**: Application runs in Docker with persistent data and easy configuration **Goal**: Application runs in Docker with persistent data and easy configuration
**Depends on**: Phase 1-5 (all features complete) **Plans**: 2/2 complete
**Requirements**: DEPLOY-01, DEPLOY-02, DEPLOY-03, DEPLOY-04
</details>
### 🚧 v2.0 Production Operations (In Progress)
**Milestone Goal:** Production-grade operations with GitOps deployment, observability stack, and CI test pipeline
- [ ] **Phase 7: GitOps Foundation** - ArgoCD deployment automation with Git as source of truth
- [ ] **Phase 8: Observability Stack** - Metrics, dashboards, logs, and alerting
- [ ] **Phase 9: CI Pipeline Hardening** - Automated testing before build
## Phase Details
### Phase 7: GitOps Foundation
**Goal**: Deployments are fully automated via Git - push triggers deploy, manual changes self-heal
**Depends on**: Phase 6 (running deployment)
**Requirements**: GITOPS-01, GITOPS-02, GITOPS-03, GITOPS-04
**Success Criteria** (what must be TRUE): **Success Criteria** (what must be TRUE):
1. Application runs in a Docker container 1. ArgoCD server is running and accessible at argocd.tricnet.be
2. Configuration is provided via environment variables 2. TaskPlanner Application shows "Synced" status in ArgoCD UI
3. Data persists across container restarts via named volumes 3. Pushing a change to helm/taskplaner/values.yaml triggers automatic deployment within 3 minutes
4. Single docker-compose.yml starts the entire application 4. Manually deleting a pod results in ArgoCD restoring it to match Git state
5. Backup of data directory preserves all entries and images 5. ArgoCD UI shows deployment history with sync status for each revision
**Plans**: 2 plans **Plans**: TBD
Plans: Plans:
- [x] 06-01-PLAN.md — Docker configuration with adapter-node, Dockerfile, and docker-compose.yml - [ ] 07-01: ArgoCD Helm installation with Traefik ingress
- [x] 06-02-PLAN.md — Health endpoint, environment documentation, and backup script - [ ] 07-02: Application sync and self-heal verification
### Phase 8: Observability Stack
**Goal**: Full visibility into cluster and application health via metrics, logs, and dashboards
**Depends on**: Phase 7 (ArgoCD can deploy observability stack)
**Requirements**: OBS-01, OBS-02, OBS-03, OBS-04, OBS-05, OBS-06, OBS-07, OBS-08
**Success Criteria** (what must be TRUE):
1. Grafana is accessible at grafana.tricnet.be with pre-built Kubernetes dashboards
2. Prometheus scrapes metrics from TaskPlanner, Traefik, and k3s nodes
3. Logs from all pods are queryable in Grafana Explore via Loki
4. Alert fires when a pod crashes or restarts repeatedly (KubePodCrashLooping)
5. TaskPlanner /metrics endpoint returns Prometheus-format metrics
**Plans**: TBD
Plans:
- [ ] 08-01: kube-prometheus-stack installation (Prometheus + Grafana)
- [ ] 08-02: Loki + Alloy installation for log aggregation
- [ ] 08-03: Critical alerts and TaskPlanner metrics endpoint
### Phase 9: CI Pipeline Hardening
**Goal**: Tests run before build - type errors and test failures block deployment
**Depends on**: Phase 8 (observability shows test/build failures)
**Requirements**: CI-01, CI-02, CI-03, CI-04, CI-05
**Success Criteria** (what must be TRUE):
1. `npm run test:unit` runs Vitest and reports pass/fail
2. `npm run check` runs svelte-check and catches type errors
3. Pipeline fails before Docker build when unit tests fail
4. Pipeline fails before Docker build when type checking fails
5. E2E tests run in pipeline using Playwright Docker image
**Plans**: TBD
Plans:
- [ ] 09-01: Vitest setup and unit test structure
- [ ] 09-02: Pipeline integration with fail-fast behavior
## Progress ## Progress
**Execution Order:** **Execution Order:**
Phases execute in numeric order: 1 -> 2 -> 3 -> 4 -> 5 -> 6 Phases execute in numeric order: 7 -> 8 -> 9
| Phase | Plans Complete | Status | Completed | | Phase | Milestone | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------| |-------|-----------|----------------|--------|-----------|
| 1. Foundation | 2/2 | Complete | 2026-01-29 | | 1. Foundation | v1.0 | 2/2 | Complete | 2026-01-29 |
| 2. Core CRUD | 4/4 | Complete | 2026-01-29 | | 2. Core CRUD | v1.0 | 4/4 | Complete | 2026-01-29 |
| 3. Images | 4/4 | Complete | 2026-01-31 | | 3. Images | v1.0 | 4/4 | Complete | 2026-01-31 |
| 4. Tags & Organization | 3/3 | Complete | 2026-01-31 | | 4. Tags & Organization | v1.0 | 3/3 | Complete | 2026-01-31 |
| 5. Search | 3/3 | Complete | 2026-01-31 | | 5. Search | v1.0 | 3/3 | Complete | 2026-01-31 |
| 6. Deployment | 2/2 | Complete | 2026-02-01 | | 6. Deployment | v1.0 | 2/2 | Complete | 2026-02-01 |
| 7. GitOps Foundation | v2.0 | 0/2 | Not started | - |
| 8. Observability Stack | v2.0 | 0/3 | Not started | - |
| 9. CI Pipeline Hardening | v2.0 | 0/2 | Not started | - |
--- ---
*Roadmap created: 2026-01-29* *Roadmap created: 2026-01-29*
*Depth: standard (5-8 phases)* *v2.0 phases added: 2026-02-03*
*Coverage: 31/31 v1 requirements mapped* *Depth: standard*
*v1.0 Coverage: 31/31 requirements mapped*
*v2.0 Coverage: 17/17 requirements mapped*

View File

@@ -5,16 +5,16 @@
See: .planning/PROJECT.md (updated 2026-02-01) See: .planning/PROJECT.md (updated 2026-02-01)
**Core value:** Capture and find anything from any device — especially laptop. If cross-device capture with images doesn't work, nothing else matters. **Core value:** Capture and find anything from any device — especially laptop. If cross-device capture with images doesn't work, nothing else matters.
**Current focus:** v2.0 Production Operations — CI/CD pipeline and observability **Current focus:** v2.0 Production Operations — Phase 7 (GitOps Foundation)
## Current Position ## Current Position
Phase: Not started (researching) Phase: 7 of 9 (GitOps Foundation)
Plan: Plan: 0 of 2 in current phase
Status: Defining requirements Status: Ready to plan
Last activity: 2026-02-03 — Milestone v2.0 started Last activity: 2026-02-03 — Roadmap created for v2.0
Progress: Research → Requirements → Roadmap Progress: [██████████████████░░░░░░░░░░░░] 67% (v1.0 complete, v2.0 starting)
## Performance Metrics ## Performance Metrics
@@ -25,6 +25,11 @@ Progress: Research → Requirements → Roadmap
- Phases: 6 - Phases: 6
- Requirements satisfied: 31/31 - Requirements satisfied: 31/31
**v2.0 Target:**
- Phases: 3 (7-9)
- Plans estimated: 7
- Requirements: 17
**By Phase (v1.0):** **By Phase (v1.0):**
| Phase | Plans | Total | Avg/Plan | | Phase | Plans | Total | Avg/Plan |
@@ -42,11 +47,15 @@ Progress: Research → Requirements → Roadmap
Key decisions from v1.0 are preserved in PROJECT.md. Key decisions from v1.0 are preserved in PROJECT.md.
For v2, new decisions will be logged here as work progresses. For v2.0, key decisions from research:
- Use Grafana Alloy (not Promtail - EOL March 2026)
- ArgoCD needs server.insecure: true for Traefik TLS termination
- Loki monolithic mode with 7-day retention
- Vitest for unit tests (official Svelte recommendation)
### Pending Todos ### Pending Todos
None — ready for next milestone. None — ready for Phase 7 planning.
### Blockers/Concerns ### Blockers/Concerns
@@ -54,10 +63,10 @@ None.
## Session Continuity ## Session Continuity
Last session: 2026-02-01 Last session: 2026-02-03
Stopped at: Completed milestone v1.0 Stopped at: Roadmap v2.0 created
Resume file: None Resume file: None
--- ---
*State initialized: 2026-01-29* *State initialized: 2026-01-29*
*Last updated: 2026-02-01Milestone v1.0 archived* *Last updated: 2026-02-03v2.0 roadmap created*