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

This commit is contained in:
2026-04-03 22:24:24 +02:00
parent 64403f6977
commit 1344f2f87f
3 changed files with 130 additions and 52 deletions

View File

@@ -116,42 +116,42 @@ Which phases cover which requirements. Updated during roadmap creation.
| Requirement | Phase | Status |
|-------------|-------|--------|
| DB-01 | | Pending |
| DB-02 | | Pending |
| DB-03 | | Pending |
| DB-04 | | Pending |
| DB-05 | | Pending |
| AUTH-01 | | Pending |
| AUTH-02 | | Pending |
| AUTH-03 | | Pending |
| AUTH-04 | | Pending |
| AUTH-05 | | Pending |
| MULTI-01 | | Pending |
| MULTI-02 | | Pending |
| MULTI-03 | | Pending |
| MULTI-04 | | Pending |
| MULTI-05 | | Pending |
| MULTI-06 | | Pending |
| IMG-01 | | Pending |
| IMG-02 | | Pending |
| IMG-03 | | Pending |
| IMG-04 | | Pending |
| GLOB-01 | | Pending |
| GLOB-02 | | Pending |
| GLOB-03 | | Pending |
| GLOB-04 | | Pending |
| GLOB-05 | | Pending |
| PROF-01 | | Pending |
| PROF-02 | | Pending |
| PROF-03 | | Pending |
| PROF-04 | | Pending |
| PROF-05 | | Pending |
| DB-01 | Phase 14 | Pending |
| DB-02 | Phase 14 | Pending |
| DB-03 | Phase 14 | Pending |
| DB-04 | Phase 14 | Pending |
| DB-05 | Phase 14 | Pending |
| AUTH-01 | Phase 15 | Pending |
| AUTH-02 | Phase 15 | Pending |
| AUTH-03 | Phase 15 | Pending |
| AUTH-04 | Phase 15 | Pending |
| AUTH-05 | Phase 15 | Pending |
| MULTI-01 | Phase 16 | Pending |
| MULTI-02 | Phase 16 | Pending |
| MULTI-03 | Phase 16 | Pending |
| MULTI-04 | Phase 16 | Pending |
| MULTI-05 | Phase 16 | Pending |
| MULTI-06 | Phase 16 | Pending |
| IMG-01 | Phase 17 | Pending |
| IMG-02 | Phase 17 | Pending |
| IMG-03 | Phase 17 | Pending |
| IMG-04 | Phase 17 | Pending |
| GLOB-01 | Phase 18 | Pending |
| GLOB-02 | Phase 18 | Pending |
| GLOB-03 | Phase 18 | Pending |
| GLOB-04 | Phase 18 | Pending |
| GLOB-05 | Phase 18 | Pending |
| PROF-01 | Phase 18 | Pending |
| PROF-02 | Phase 18 | Pending |
| PROF-03 | Phase 18 | Pending |
| PROF-04 | Phase 18 | Pending |
| PROF-05 | Phase 18 | Pending |
**Coverage:**
- v2.0 requirements: 30 total
- Mapped to phases: 0
- Unmapped: 30
- Mapped to phases: 30
- Unmapped: 0
---
*Requirements defined: 2026-04-03*
*Last updated: 2026-04-03 after initial definition*
*Last updated: 2026-04-03 after roadmap creation*

View File

@@ -6,6 +6,7 @@
-**v1.1 Fixes & Polish** — Phases 4-6 (shipped 2026-03-15)
-**v1.2 Collection Power-Ups** — Phases 7-9 (shipped 2026-03-16)
- 🚧 **v1.3 Research & Decision Tools** — Phases 10-13 (in progress)
- 📋 **v2.0 Platform Foundation** — Phases 14-18 (planned)
## Phases
@@ -45,6 +46,16 @@
- [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
### 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 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-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
| 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 |
| 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 |
| 11. Candidate Ranking | 2/2 | Complete | 2026-03-16 | - |
| 12. Comparison View | 1/1 | Complete | 2026-03-17 | - |
| 11. Candidate Ranking | v1.3 | 2/2 | Complete | 2026-03-16 |
| 12. Comparison View | v1.3 | 1/1 | Complete | 2026-03-17 |
| 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 | - |

View File

@@ -5,9 +5,9 @@ milestone_name: Platform Foundation
status: planning
stopped_at: null
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:
total_phases: 0
total_phases: 5
completed_phases: 0
total_plans: 0
completed_plans: 0
@@ -21,21 +21,23 @@ progress:
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.
**Current focus:** v2.0 Platform Foundation — Defining requirements
**Current focus:** v2.0 Platform Foundation — Phase 14 (PostgreSQL Migration)
## Current Position
Phase: Not started (defining requirements)
Plan:
Status: Defining requirements
Last activity: 2026-04-03 — Milestone v2.0 started
Phase: 14 of 18 (PostgreSQL Migration)
Plan: 0 of ? in current phase
Status: Ready to plan
Last activity: 2026-04-03 — v2.0 roadmap created (Phases 14-18)
Progress: [----------] 0% (v2.0 milestone)
## Performance Metrics
**Velocity:**
- Total plans completed: 0
- Average duration:
- Total execution time:
- Total plans completed: 0 (v2.0 milestone)
- Average duration: --
- Total execution time: --
*Updated after each plan completion*
@@ -44,11 +46,11 @@ Last activity: 2026-04-03 — Milestone v2.0 started
### Decisions
Key decisions made during v2.0 planning:
- Platform pivot: single-user multi-user with discovery-first approach
- External auth provider (self-hosted, open-source) — avoid in-house auth burden
- SQLite Postgres migration — multi-user concurrency + auth provider dependency
- Structured UGC only — ratings and predefined fields, no freeform text until moderation exists
- Global item database seeded from manufacturer data, enriched by user contributions
- Platform pivot: single-user to multi-user with discovery-first approach
- External auth provider (self-hosted, open-source) — Logto vs Authentik OPEN decision
- SQLite to Postgres migration — required by auth provider and multi-user concurrency
- Structured UGC only — ratings and predefined fields, no freeform text until moderation
- Separate globalItems table — not a flag on user items table
- Single-user SQLite mode diverges at v2.0 boundary
### Pending Todos
@@ -57,10 +59,11 @@ None active.
### 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
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