docs: archive v1.3 and v2.0 milestones with roadmap, requirements, and retrospective
This commit is contained in:
@@ -39,22 +39,25 @@ Help people make better gear decisions — discover what others use, compare rea
|
||||
- ✓ Chart hover tooltips with weight and percentage — v1.2
|
||||
- ✓ Candidate status tracking (researching/ordered/arrived) — v1.2
|
||||
- ✓ Planning category filter with Lucide icons — v1.2
|
||||
- ✓ Candidate pros/cons annotation and ranking with drag-to-reorder — v1.3
|
||||
- ✓ Side-by-side candidate comparison table with weight/price deltas — v1.3
|
||||
- ✓ Setup impact preview for candidates (replacement vs addition detection) — v1.3
|
||||
- ✓ PostgreSQL database with async operations, PGlite test infra, Docker Compose — v2.0
|
||||
- ✓ External OIDC auth via Logto with three-way auth middleware — v2.0
|
||||
- ✓ Multi-user data model with userId isolation on all entities — v2.0
|
||||
- ✓ S3 object storage (MinIO) for images replacing local filesystem — v2.0
|
||||
- ✓ Global item catalog with search, owner count, and 18-item seed — v2.0
|
||||
- ✓ User profiles with avatar/bio, public setup sharing — v2.0
|
||||
- ✓ Reference item model with COALESCE merge for global-to-personal overlay — v2.0
|
||||
- ✓ Tag system for catalog discovery with AND-filtered search — v2.0
|
||||
- ✓ Global FAB with catalog search overlay and tag chip filtering — v2.0
|
||||
- ✓ Item and catalog detail pages replacing slide-out panels — v2.0
|
||||
- ✓ Add-from-catalog flow for collection items and thread candidates — v2.0
|
||||
- ✓ Manual entry fallback with catalog submission prompt stub — v2.0
|
||||
|
||||
### Active
|
||||
|
||||
## Current Milestone: v2.0 Platform Foundation
|
||||
|
||||
**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.
|
||||
|
||||
**Target features:**
|
||||
- External auth provider (self-hosted, open-source) for multi-user registration
|
||||
- Migrate from SQLite to Postgres
|
||||
- Multi-user data model (user ownership on all entities, public/private visibility)
|
||||
- Global item database (seeded from manufacturer data, enrichable by users)
|
||||
- Public user profiles with shared setups
|
||||
- Structured item reviews (ratings + predefined fields, not freeform text)
|
||||
- Discovery feed (browse setups, new items, popular gear)
|
||||
- Item detail pages with aggregated specs, owner count, setup appearances
|
||||
No active milestone. v2.0 shipped 2026-04-08. Next milestone TBD.
|
||||
|
||||
### Future
|
||||
|
||||
@@ -78,12 +81,13 @@ Help people make better gear decisions — discover what others use, compare rea
|
||||
|
||||
## Context
|
||||
|
||||
Shipped through v1.4 with 11,333 LOC TypeScript across 90 files. Starting v2.0 platform transformation.
|
||||
Tech stack: React 19, Hono, Drizzle ORM, SQLite (migrating to Postgres), TanStack Router/Query, Tailwind CSS v4, Lucide React, Recharts, framer-motion, all on Bun.
|
||||
Shipped through v2.0 with 23,970 LOC TypeScript across 210+ files. All milestones v1.0-v2.0 complete.
|
||||
Tech stack: React 19, Hono, Drizzle ORM, PostgreSQL, TanStack Router/Query, Tailwind CSS v4, Lucide React, Recharts, framer-motion, all on Bun.
|
||||
Primary use case is bikepacking gear but data model is hobby-agnostic.
|
||||
Existing auth: single-user with cookie sessions + API keys. Will be replaced by external auth provider.
|
||||
Existing features: MCP server (19 tools), E2E tests (Playwright), CSV import/export, item comparison, candidate ranking, setup impact preview.
|
||||
21 test files (service-level, route-level integration, and E2E).
|
||||
Auth: External OIDC via Logto (browser sessions) + API keys (programmatic) + MCP OAuth (Claude).
|
||||
Infrastructure: PostgreSQL, MinIO (S3-compatible image storage), Docker Compose for dev/prod.
|
||||
Features: MCP server (19 tools), global item catalog, user profiles, public setup sharing, catalog-driven gear flow, item/candidate detail pages, candidate ranking/comparison/impact preview.
|
||||
18+ test files (service-level, route-level integration, MCP). E2E tests pending rewrite for OIDC auth (backlog 999.1).
|
||||
|
||||
## Constraints
|
||||
|
||||
@@ -91,7 +95,7 @@ Existing features: MCP server (19 tools), E2E tests (Playwright), CSV import/exp
|
||||
- **Design**: Light, airy, minimalist — white/light backgrounds, lots of whitespace, no visual clutter
|
||||
- **Navigation**: Dashboard-based home page, not sidebar or top-nav tabs
|
||||
- **Auth**: External self-hosted provider — no in-house auth maintenance
|
||||
- **Database**: Postgres for platform deployment
|
||||
- **Database**: PostgreSQL with Drizzle ORM
|
||||
- **UGC**: Structured input only (ratings, predefined fields) — no freeform text until moderation exists
|
||||
- **Scope**: Multi-user platform with public discovery
|
||||
|
||||
@@ -118,12 +122,15 @@ Existing features: MCP server (19 tools), E2E tests (Playwright), CSV import/exp
|
||||
| Hero image area at top of forms | Image-first UX, 4:3 aspect ratio consistent with cards | ✓ Good |
|
||||
| Emoji-to-icon automatic migration | One-time schema rename + data conversion via Drizzle migration | ✓ Good |
|
||||
| ALTER TABLE RENAME COLUMN for SQLite | Simpler than table recreation for column rename | ✓ Good |
|
||||
| Platform pivot at v2.0 | Single-user model proven, now build for multi-user discovery | — Pending |
|
||||
| External auth provider | Avoid in-house auth security burden, self-hosted + open-source | — Pending |
|
||||
| SQLite → Postgres | Multi-user platform needs proper concurrent DB; auth provider needs Postgres anyway | — Pending |
|
||||
| Single-user mode diverges at v2.0 | Platform features irrelevant for solo use; maintain as separate artifact if needed | — Pending |
|
||||
| Structured UGC only (no freeform) | Minimize moderation burden; ratings + predefined fields cover 80% of value | — Pending |
|
||||
| Discovery-first, not social-first | Users come to research gear decisions, not to build social graphs | — Pending |
|
||||
| Platform pivot at v2.0 | Single-user model proven, now build for multi-user discovery | ✓ Good |
|
||||
| External auth provider (Logto) | Avoid in-house auth security burden, self-hosted + open-source | ✓ Good |
|
||||
| SQLite to Postgres | Multi-user platform needs proper concurrent DB; auth provider needs Postgres anyway | ✓ Good |
|
||||
| Single-user mode diverges at v2.0 | Platform features irrelevant for solo use; maintained as separate artifact if needed | ✓ Good |
|
||||
| Structured UGC only (no freeform) | Minimize moderation burden; ratings + predefined fields cover 80% of value | ✓ Good |
|
||||
| Discovery-first, not social-first | Users come to research gear decisions, not to build social graphs | ✓ Good |
|
||||
| COALESCE merge for reference items | Global base + personal overlay without data duplication | ✓ Good |
|
||||
| Catalog-first add flow with manual fallback | Encourages catalog usage while preserving flexibility | ✓ Good |
|
||||
| Detail pages replacing slide-out panels | Better UX for complex data, shareable URLs | ✓ Good |
|
||||
| Weight conversion precision: g=0dp, oz=1dp, lb=2dp, kg=2dp | Matches common usage conventions | ✓ Good |
|
||||
| Unit toggle in TotalsBar (not settings page) | Visible, quick access for frequent switching | ✓ Good |
|
||||
| CategoryFilterDropdown separate from CategoryPicker | Filter vs form concerns are different | ✓ Good |
|
||||
@@ -152,4 +159,4 @@ This document evolves at phase transitions and milestone boundaries.
|
||||
4. Update Context with current state
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-03 after v2.0 milestone start*
|
||||
*Last updated: 2026-04-08 after v2.0 milestone completion*
|
||||
|
||||
Reference in New Issue
Block a user