Files
GearBox/.planning/milestones/v2.0-REQUIREMENTS.md
Jean-Luc Makiola f564e8cb54
All checks were successful
CI / ci (push) Successful in 1m7s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 7s
docs: archive v1.3 and v2.0 milestones with roadmap, requirements, and retrospective
2026-04-08 23:10:50 +02:00

6.0 KiB

Requirements Archive: v2.0 Platform Foundation

Archived: 2026-04-08 Status: SHIPPED


Requirements: GearBox v2.0 Platform Foundation

Defined: 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.

v2.0 Requirements

Database Migration

  • DB-01: Application runs on PostgreSQL instead of SQLite
  • DB-02: All service functions use async database operations
  • DB-03: Test infrastructure uses PGlite instead of bun:sqlite in-memory databases
  • DB-04: Existing SQLite data can be migrated to Postgres via a one-time script
  • DB-05: Docker Compose provides Postgres for local development

Authentication

  • AUTH-01: User can register an account via external OIDC auth provider
  • AUTH-02: User can log in via external auth provider and access their data
  • AUTH-03: API keys remain functional for programmatic access (MCP, scripts)
  • AUTH-04: Auth provider runs self-hosted alongside the application
  • AUTH-05: E2E tests authenticate via API keys without depending on the auth provider

Multi-User Data Model

  • MULTI-01: Every item, category, thread, and setup is owned by a specific user
  • MULTI-02: User can only see and modify their own data (cross-user isolation)
  • MULTI-03: Categories use composite unique constraint (userId + name)
  • MULTI-04: Existing data is assigned to the original user during migration
  • MULTI-05: MCP tools operate within the authenticated user's scope
  • MULTI-06: Settings are per-user rather than global

Image Storage

  • IMG-01: Images are stored in MinIO (S3-compatible) instead of local filesystem
  • IMG-02: Existing uploaded images are migrated to MinIO
  • IMG-03: Image upload and retrieval work through the new storage layer
  • IMG-04: Docker Compose provides MinIO for local development

Global Item Database

  • GLOB-01: A global item catalog exists with brand, model, category, manufacturer specs, and image
  • GLOB-02: Global catalog is seeded with initial items from manufacturer data
  • GLOB-03: User can search the global catalog by name or brand
  • GLOB-04: User can link a personal collection item to a global catalog entry
  • GLOB-05: Global item pages show basic info and owner count

Catalog-Driven Gear Flow

  • CATFLOW-01: FAB shows mini menu with "Add to Collection" and "Start Thread" globally, plus "New Setup" on setups page
  • CATFLOW-02: Full-screen catalog search with tag chip filtering
  • CATFLOW-03: User can add a catalog item to collection as a reference item with personal fields
  • CATFLOW-04: Collection items referencing global items display merged data (global base + personal overlay)
  • CATFLOW-05: Thread candidates can be added from catalog with global item link
  • CATFLOW-06: Thread resolution with catalog-linked candidate creates reference item with auto-link
  • CATFLOW-07: Manual entry fallback when item not in catalog
  • CATFLOW-08: Non-functional "Submit to catalog?" prompt shown after manual save

Item & Catalog Detail Pages

  • DETAIL-01: Clicking a collection item navigates to a full detail page (/items/:id)
  • DETAIL-02: Clicking a catalog search result navigates to a public detail page (/global-items/:id)
  • DETAIL-03: Item detail page has edit mode toggle for modifying personal fields
  • DETAIL-04: Thread candidates navigate to detail pages instead of opening slide-out panels
  • DETAIL-05: Slide-out panels for items and candidates are removed from the application

Tags

  • TAG-01: Tags table seeded with curated tag set for outdoor/adventure gear
  • TAG-02: Global items have multiple tags, searchable and filterable via API

User Profiles & Sharing

  • PROF-01: User has a profile with display name, avatar, and bio
  • PROF-02: User can view their own public profile page
  • PROF-03: User can set a setup as public or private
  • PROF-04: Public setups are viewable by anyone without authentication
  • PROF-05: Public profile page lists the user's public setups

Traceability

Requirement Phase Status
DB-01 Phase 14 Complete
DB-02 Phase 14 Complete
DB-03 Phase 14 Complete
DB-04 Phase 14 Complete
DB-05 Phase 14 Complete
AUTH-01 Phase 15 Complete
AUTH-02 Phase 15 Complete
AUTH-03 Phase 15 Complete
AUTH-04 Phase 15 Complete
AUTH-05 Phase 15 Complete
MULTI-01 Phase 16 Complete
MULTI-02 Phase 16 Complete
MULTI-03 Phase 16 Complete
MULTI-04 Phase 16 Complete
MULTI-05 Phase 16 Complete
MULTI-06 Phase 16 Complete
IMG-01 Phase 17 Complete
IMG-02 Phase 17 Complete
IMG-03 Phase 17 Complete
IMG-04 Phase 17 Complete
GLOB-01 Phase 18 Complete
GLOB-02 Phase 18 Complete
GLOB-03 Phase 18 Complete
GLOB-04 Phase 18 Complete
GLOB-05 Phase 18 Complete
PROF-01 Phase 18 Complete
PROF-02 Phase 18 Complete
PROF-03 Phase 18 Complete
PROF-04 Phase 18 Complete
PROF-05 Phase 18 Complete
CATFLOW-01 Phase 20 Complete
CATFLOW-02 Phase 20 Complete
CATFLOW-03 Phase 19, 22 Complete
CATFLOW-04 Phase 19 Complete
CATFLOW-05 Phase 19, 22 Complete
CATFLOW-06 Phase 19, 22 Complete
CATFLOW-07 Phase 23 Complete
CATFLOW-08 Phase 23 Complete
TAG-01 Phase 19 Complete
TAG-02 Phase 19 Complete
DETAIL-01 Phase 21 Complete
DETAIL-02 Phase 21 Complete
DETAIL-03 Phase 21 Complete
DETAIL-04 Phase 21 Complete
DETAIL-05 Phase 21 Complete

Coverage:

  • v2.0 requirements: 45 total
  • Mapped to phases: 45
  • Complete: 45
  • Unmapped: 0

Requirements defined: 2026-04-03 Archived: 2026-04-08