docs: create milestone v2.0 roadmap (5 phases)
This commit is contained in:
@@ -116,42 +116,42 @@ Which phases cover which requirements. Updated during roadmap creation.
|
|||||||
|
|
||||||
| Requirement | Phase | Status |
|
| Requirement | Phase | Status |
|
||||||
|-------------|-------|--------|
|
|-------------|-------|--------|
|
||||||
| DB-01 | — | Pending |
|
| DB-01 | Phase 14 | Pending |
|
||||||
| DB-02 | — | Pending |
|
| DB-02 | Phase 14 | Pending |
|
||||||
| DB-03 | — | Pending |
|
| DB-03 | Phase 14 | Pending |
|
||||||
| DB-04 | — | Pending |
|
| DB-04 | Phase 14 | Pending |
|
||||||
| DB-05 | — | Pending |
|
| DB-05 | Phase 14 | Pending |
|
||||||
| AUTH-01 | — | Pending |
|
| AUTH-01 | Phase 15 | Pending |
|
||||||
| AUTH-02 | — | Pending |
|
| AUTH-02 | Phase 15 | Pending |
|
||||||
| AUTH-03 | — | Pending |
|
| AUTH-03 | Phase 15 | Pending |
|
||||||
| AUTH-04 | — | Pending |
|
| AUTH-04 | Phase 15 | Pending |
|
||||||
| AUTH-05 | — | Pending |
|
| AUTH-05 | Phase 15 | Pending |
|
||||||
| MULTI-01 | — | Pending |
|
| MULTI-01 | Phase 16 | Pending |
|
||||||
| MULTI-02 | — | Pending |
|
| MULTI-02 | Phase 16 | Pending |
|
||||||
| MULTI-03 | — | Pending |
|
| MULTI-03 | Phase 16 | Pending |
|
||||||
| MULTI-04 | — | Pending |
|
| MULTI-04 | Phase 16 | Pending |
|
||||||
| MULTI-05 | — | Pending |
|
| MULTI-05 | Phase 16 | Pending |
|
||||||
| MULTI-06 | — | Pending |
|
| MULTI-06 | Phase 16 | Pending |
|
||||||
| IMG-01 | — | Pending |
|
| IMG-01 | Phase 17 | Pending |
|
||||||
| IMG-02 | — | Pending |
|
| IMG-02 | Phase 17 | Pending |
|
||||||
| IMG-03 | — | Pending |
|
| IMG-03 | Phase 17 | Pending |
|
||||||
| IMG-04 | — | Pending |
|
| IMG-04 | Phase 17 | Pending |
|
||||||
| GLOB-01 | — | Pending |
|
| GLOB-01 | Phase 18 | Pending |
|
||||||
| GLOB-02 | — | Pending |
|
| GLOB-02 | Phase 18 | Pending |
|
||||||
| GLOB-03 | — | Pending |
|
| GLOB-03 | Phase 18 | Pending |
|
||||||
| GLOB-04 | — | Pending |
|
| GLOB-04 | Phase 18 | Pending |
|
||||||
| GLOB-05 | — | Pending |
|
| GLOB-05 | Phase 18 | Pending |
|
||||||
| PROF-01 | — | Pending |
|
| PROF-01 | Phase 18 | Pending |
|
||||||
| PROF-02 | — | Pending |
|
| PROF-02 | Phase 18 | Pending |
|
||||||
| PROF-03 | — | Pending |
|
| PROF-03 | Phase 18 | Pending |
|
||||||
| PROF-04 | — | Pending |
|
| PROF-04 | Phase 18 | Pending |
|
||||||
| PROF-05 | — | Pending |
|
| PROF-05 | Phase 18 | Pending |
|
||||||
|
|
||||||
**Coverage:**
|
**Coverage:**
|
||||||
- v2.0 requirements: 30 total
|
- v2.0 requirements: 30 total
|
||||||
- Mapped to phases: 0
|
- Mapped to phases: 30
|
||||||
- Unmapped: 30
|
- Unmapped: 0
|
||||||
|
|
||||||
---
|
---
|
||||||
*Requirements defined: 2026-04-03*
|
*Requirements defined: 2026-04-03*
|
||||||
*Last updated: 2026-04-03 after initial definition*
|
*Last updated: 2026-04-03 after roadmap creation*
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
- ✅ **v1.1 Fixes & Polish** — Phases 4-6 (shipped 2026-03-15)
|
- ✅ **v1.1 Fixes & Polish** — Phases 4-6 (shipped 2026-03-15)
|
||||||
- ✅ **v1.2 Collection Power-Ups** — Phases 7-9 (shipped 2026-03-16)
|
- ✅ **v1.2 Collection Power-Ups** — Phases 7-9 (shipped 2026-03-16)
|
||||||
- 🚧 **v1.3 Research & Decision Tools** — Phases 10-13 (in progress)
|
- 🚧 **v1.3 Research & Decision Tools** — Phases 10-13 (in progress)
|
||||||
|
- 📋 **v2.0 Platform Foundation** — Phases 14-18 (planned)
|
||||||
|
|
||||||
## Phases
|
## Phases
|
||||||
|
|
||||||
@@ -45,6 +46,16 @@
|
|||||||
- [x] **Phase 12: Comparison View** — Side-by-side tabular comparison with relative deltas (completed 2026-03-17)
|
- [x] **Phase 12: Comparison View** — Side-by-side tabular comparison with relative deltas (completed 2026-03-17)
|
||||||
- [ ] **Phase 13: Setup Impact Preview** — Per-candidate weight and cost delta against a selected setup
|
- [ ] **Phase 13: Setup Impact Preview** — Per-candidate weight and cost delta against a selected setup
|
||||||
|
|
||||||
|
### v2.0 Platform Foundation (Planned)
|
||||||
|
|
||||||
|
**Milestone Goal:** Transform GearBox from a single-user gear tracker into a multi-user platform where people discover gear, research purchases using crowd-verified data, and share their setups.
|
||||||
|
|
||||||
|
- [ ] **Phase 14: PostgreSQL Migration** — Replace SQLite with Postgres, make all operations async, establish new test infrastructure
|
||||||
|
- [ ] **Phase 15: External Authentication** — Integrate self-hosted OIDC auth provider for user registration and login
|
||||||
|
- [ ] **Phase 16: Multi-User Data Model** — Add user ownership to all entities with cross-user data isolation
|
||||||
|
- [ ] **Phase 17: Object Storage** — Move images from local filesystem to MinIO (S3-compatible)
|
||||||
|
- [ ] **Phase 18: Global Items & Public Profiles** — Global item catalog, user profiles, and public setup sharing
|
||||||
|
|
||||||
## Phase Details
|
## Phase Details
|
||||||
|
|
||||||
### Phase 10: Schema Foundation + Pros/Cons Fields
|
### Phase 10: Schema Foundation + Pros/Cons Fields
|
||||||
@@ -101,6 +112,65 @@ Plans:
|
|||||||
- [ ] 13-01-PLAN.md — TDD pure impact delta computation, uiStore state, ThreadWithCandidates type fix, useImpactDeltas hook
|
- [ ] 13-01-PLAN.md — TDD pure impact delta computation, uiStore state, ThreadWithCandidates type fix, useImpactDeltas hook
|
||||||
- [ ] 13-02-PLAN.md — SetupImpactSelector + ImpactDeltaBadge components, wire into thread detail and all candidate views
|
- [ ] 13-02-PLAN.md — SetupImpactSelector + ImpactDeltaBadge components, wire into thread detail and all candidate views
|
||||||
|
|
||||||
|
### Phase 14: PostgreSQL Migration
|
||||||
|
**Goal**: The application runs entirely on PostgreSQL with async operations, and all existing tests pass against the new database
|
||||||
|
**Depends on**: Phase 13
|
||||||
|
**Requirements**: DB-01, DB-02, DB-03, DB-04, DB-05
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. Application starts and serves all existing features using PostgreSQL as the sole database
|
||||||
|
2. All service-level and route-level tests pass using PGlite in-memory Postgres (no SQLite test infrastructure remains)
|
||||||
|
3. A one-time migration script converts existing SQLite data into the Postgres database without data loss
|
||||||
|
4. Docker Compose brings up Postgres alongside the app with a single command for local development
|
||||||
|
**Plans**: TBD
|
||||||
|
|
||||||
|
### Phase 15: External Authentication
|
||||||
|
**Goal**: Users can register and log in via a self-hosted OIDC auth provider, replacing the built-in single-user auth system
|
||||||
|
**Depends on**: Phase 14
|
||||||
|
**Requirements**: AUTH-01, AUTH-02, AUTH-03, AUTH-04, AUTH-05
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. A new user can register an account through the external auth provider and land on their empty GearBox dashboard
|
||||||
|
2. A returning user can log in via the auth provider and see their previously saved data
|
||||||
|
3. API keys continue to work for MCP tools and programmatic access without involving the auth provider
|
||||||
|
4. E2E tests run successfully using API key authentication, with no dependency on the external auth provider being available
|
||||||
|
5. The auth provider runs self-hosted in Docker Compose alongside Postgres and the application
|
||||||
|
**Plans**: TBD
|
||||||
|
|
||||||
|
### Phase 16: Multi-User Data Model
|
||||||
|
**Goal**: Every piece of user-created data is owned by a specific user, with complete isolation between users
|
||||||
|
**Depends on**: Phase 15
|
||||||
|
**Requirements**: MULTI-01, MULTI-02, MULTI-03, MULTI-04, MULTI-05, MULTI-06
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. User A cannot see or modify items, categories, threads, or setups created by User B
|
||||||
|
2. Two users can each have a category with the same name without conflict
|
||||||
|
3. Existing data from the single-user era is assigned to the original user account after migration
|
||||||
|
4. MCP tools return only data belonging to the authenticated API key's owner
|
||||||
|
5. Each user has independent settings (weight unit, onboarding state) that do not affect other users
|
||||||
|
**Plans**: TBD
|
||||||
|
|
||||||
|
### Phase 17: Object Storage
|
||||||
|
**Goal**: Images are stored in and served from MinIO instead of the local filesystem
|
||||||
|
**Depends on**: Phase 16
|
||||||
|
**Requirements**: IMG-01, IMG-02, IMG-03, IMG-04
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. Uploading an image for an item or candidate stores it in MinIO, not on the local filesystem
|
||||||
|
2. All previously uploaded images are accessible after migration to MinIO (no broken images)
|
||||||
|
3. Image URLs work correctly in all views (collection, planning, setups, comparison table)
|
||||||
|
4. Docker Compose includes MinIO for local development with no manual bucket setup required
|
||||||
|
**Plans**: TBD
|
||||||
|
|
||||||
|
### Phase 18: Global Items & Public Profiles
|
||||||
|
**Goal**: Users can discover gear through a global catalog and share their setups publicly via profile pages
|
||||||
|
**Depends on**: Phase 17
|
||||||
|
**Requirements**: GLOB-01, GLOB-02, GLOB-03, GLOB-04, GLOB-05, PROF-01, PROF-02, PROF-03, PROF-04, PROF-05
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. A global item catalog exists with brand, model, category, specs, and images, seeded with initial manufacturer data
|
||||||
|
2. User can search the global catalog by name or brand and link a personal collection item to a global entry
|
||||||
|
3. A global item page shows basic info and how many users own it
|
||||||
|
4. User can edit their profile (display name, avatar, bio) and view their own public profile page
|
||||||
|
5. User can toggle a setup between public and private; public setups are viewable by anyone without logging in and appear on the owner's public profile
|
||||||
|
**Plans**: TBD
|
||||||
|
**UI hint**: yes
|
||||||
|
|
||||||
## Progress
|
## Progress
|
||||||
|
|
||||||
| Phase | Milestone | Plans Complete | Status | Completed |
|
| Phase | Milestone | Plans Complete | Status | Completed |
|
||||||
@@ -115,6 +185,11 @@ Plans:
|
|||||||
| 8. Search, Filter, and Candidate Status | v1.2 | 2/2 | Complete | 2026-03-16 |
|
| 8. Search, Filter, and Candidate Status | v1.2 | 2/2 | Complete | 2026-03-16 |
|
||||||
| 9. Weight Classification and Visualization | v1.2 | 2/2 | Complete | 2026-03-16 |
|
| 9. Weight Classification and Visualization | v1.2 | 2/2 | Complete | 2026-03-16 |
|
||||||
| 10. Schema Foundation + Pros/Cons Fields | v1.3 | 1/1 | Complete | 2026-03-16 |
|
| 10. Schema Foundation + Pros/Cons Fields | v1.3 | 1/1 | Complete | 2026-03-16 |
|
||||||
| 11. Candidate Ranking | 2/2 | Complete | 2026-03-16 | - |
|
| 11. Candidate Ranking | v1.3 | 2/2 | Complete | 2026-03-16 |
|
||||||
| 12. Comparison View | 1/1 | Complete | 2026-03-17 | - |
|
| 12. Comparison View | v1.3 | 1/1 | Complete | 2026-03-17 |
|
||||||
| 13. Setup Impact Preview | v1.3 | 0/2 | Not started | - |
|
| 13. Setup Impact Preview | v1.3 | 0/2 | Not started | - |
|
||||||
|
| 14. PostgreSQL Migration | v2.0 | 0/? | Not started | - |
|
||||||
|
| 15. External Authentication | v2.0 | 0/? | Not started | - |
|
||||||
|
| 16. Multi-User Data Model | v2.0 | 0/? | Not started | - |
|
||||||
|
| 17. Object Storage | v2.0 | 0/? | Not started | - |
|
||||||
|
| 18. Global Items & Public Profiles | v2.0 | 0/? | Not started | - |
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ milestone_name: Platform Foundation
|
|||||||
status: planning
|
status: planning
|
||||||
stopped_at: null
|
stopped_at: null
|
||||||
last_updated: "2026-04-03"
|
last_updated: "2026-04-03"
|
||||||
last_activity: 2026-04-03 — Milestone v2.0 started
|
last_activity: 2026-04-03 — v2.0 roadmap created (Phases 14-18)
|
||||||
progress:
|
progress:
|
||||||
total_phases: 0
|
total_phases: 5
|
||||||
completed_phases: 0
|
completed_phases: 0
|
||||||
total_plans: 0
|
total_plans: 0
|
||||||
completed_plans: 0
|
completed_plans: 0
|
||||||
@@ -21,21 +21,23 @@ progress:
|
|||||||
See: .planning/PROJECT.md (updated 2026-04-03)
|
See: .planning/PROJECT.md (updated 2026-04-03)
|
||||||
|
|
||||||
**Core value:** Help people make better gear decisions — discover what others use, compare real-world data, and see how a potential buy affects your setup before committing.
|
**Core value:** Help people make better gear decisions — discover what others use, compare real-world data, and see how a potential buy affects your setup before committing.
|
||||||
**Current focus:** v2.0 Platform Foundation — Defining requirements
|
**Current focus:** v2.0 Platform Foundation — Phase 14 (PostgreSQL Migration)
|
||||||
|
|
||||||
## Current Position
|
## Current Position
|
||||||
|
|
||||||
Phase: Not started (defining requirements)
|
Phase: 14 of 18 (PostgreSQL Migration)
|
||||||
Plan: —
|
Plan: 0 of ? in current phase
|
||||||
Status: Defining requirements
|
Status: Ready to plan
|
||||||
Last activity: 2026-04-03 — Milestone v2.0 started
|
Last activity: 2026-04-03 — v2.0 roadmap created (Phases 14-18)
|
||||||
|
|
||||||
|
Progress: [----------] 0% (v2.0 milestone)
|
||||||
|
|
||||||
## Performance Metrics
|
## Performance Metrics
|
||||||
|
|
||||||
**Velocity:**
|
**Velocity:**
|
||||||
- Total plans completed: 0
|
- Total plans completed: 0 (v2.0 milestone)
|
||||||
- Average duration: —
|
- Average duration: --
|
||||||
- Total execution time: —
|
- Total execution time: --
|
||||||
|
|
||||||
*Updated after each plan completion*
|
*Updated after each plan completion*
|
||||||
|
|
||||||
@@ -44,11 +46,11 @@ Last activity: 2026-04-03 — Milestone v2.0 started
|
|||||||
### Decisions
|
### Decisions
|
||||||
|
|
||||||
Key decisions made during v2.0 planning:
|
Key decisions made during v2.0 planning:
|
||||||
- Platform pivot: single-user → multi-user with discovery-first approach
|
- Platform pivot: single-user to multi-user with discovery-first approach
|
||||||
- External auth provider (self-hosted, open-source) — avoid in-house auth burden
|
- External auth provider (self-hosted, open-source) — Logto vs Authentik OPEN decision
|
||||||
- SQLite → Postgres migration — multi-user concurrency + auth provider dependency
|
- SQLite to Postgres migration — required by auth provider and multi-user concurrency
|
||||||
- Structured UGC only — ratings and predefined fields, no freeform text until moderation exists
|
- Structured UGC only — ratings and predefined fields, no freeform text until moderation
|
||||||
- Global item database seeded from manufacturer data, enriched by user contributions
|
- Separate globalItems table — not a flag on user items table
|
||||||
- Single-user SQLite mode diverges at v2.0 boundary
|
- Single-user SQLite mode diverges at v2.0 boundary
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
@@ -57,10 +59,11 @@ None active.
|
|||||||
|
|
||||||
### Blockers/Concerns
|
### Blockers/Concerns
|
||||||
|
|
||||||
None active.
|
- Auth provider decision (Logto vs Authentik) must be resolved before Phase 15 planning
|
||||||
|
- Phase 14 is a full schema rewrite touching 6 services, 7 routes, 19 MCP tools, all tests
|
||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-04-03
|
Last session: 2026-04-03
|
||||||
Stopped at: Defining requirements for v2.0
|
Stopped at: v2.0 roadmap created with 5 phases (14-18) covering 30 requirements
|
||||||
Resume file: None
|
Resume file: None
|
||||||
|
|||||||
Reference in New Issue
Block a user