7.1 KiB
Roadmap Archive: v2.0 Platform Foundation
Archived: 2026-04-08 Status: SHIPPED Phases: 14-23 (10 phases, 32 plans) Timeline: 2026-03-17 to 2026-04-08
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):
- Application starts and serves all existing features using PostgreSQL as the sole database
- All service-level and route-level tests pass using PGlite in-memory Postgres (no SQLite test infrastructure remains)
- A one-time migration script converts existing SQLite data into the Postgres database without data loss
- Docker Compose brings up Postgres alongside the app with a single command for local development Plans: 6/6 plans complete
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):
- A new user can register an account through the external auth provider and land on their empty GearBox dashboard
- A returning user can log in via the auth provider and see their previously saved data
- API keys continue to work for MCP tools and programmatic access without involving the auth provider
- E2E tests run successfully using API key authentication, with no dependency on the external auth provider being available
- The auth provider runs self-hosted in Docker Compose alongside Postgres and the application Plans: 3/3 plans complete
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):
- User A cannot see or modify items, categories, threads, or setups created by User B
- Two users can each have a category with the same name without conflict
- Existing data from the single-user era is assigned to the original user account after migration
- MCP tools return only data belonging to the authenticated API key's owner
- Each user has independent settings (weight unit, onboarding state) that do not affect other users Plans: 4/4 plans complete
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):
- Uploading an image for an item or candidate stores it in MinIO, not on the local filesystem
- All previously uploaded images are accessible after migration to MinIO (no broken images)
- Image URLs work correctly in all views (collection, planning, setups, comparison table)
- Docker Compose includes MinIO for local development with no manual bucket setup required Plans: 3/3 plans complete
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):
- A global item catalog exists with brand, model, category, specs, and images, seeded with initial manufacturer data
- User can search the global catalog by name or brand and link a personal collection item to a global entry
- A global item page shows basic info and how many users own it
- User can edit their profile (display name, avatar, bio) and view their own public profile page
- 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: 5/5 plans complete
Phase 19: Reference Item Model & Tags Schema
Goal: Collection items can be references to global catalog entries, and global items support tags for discovery Depends on: Phase 18 Requirements: CATFLOW-03, CATFLOW-04, CATFLOW-05, CATFLOW-06, TAG-01, TAG-02 Success Criteria (what must be TRUE):
- A collection item can reference a global item and displays merged data (global base + personal fields)
- Global items can have multiple tags, searchable via API
- Thread candidates can link to a global item via globalItemId
- Resolving a thread with a catalog-linked candidate creates a reference item with auto-link Plans: 3/3 plans complete
Phase 20: FAB & Full-Screen Catalog Search
Goal: Users discover and add gear through a catalog-first search experience with tag filtering Depends on: Phase 19 Requirements: CATFLOW-01, CATFLOW-02 Success Criteria (what must be TRUE):
- FAB visible on all pages with mini menu showing "Add to Collection" and "Start Thread"
- "New Setup" option appears in FAB on setups page only
- Full-screen catalog search overlay opens from either add option
- Search results display catalog items with name, weight, price, owner count
- Tag chips filter search results Plans: 2/2 plans complete
Phase 21: Item & Catalog Detail Pages
Goal: Collection items and catalog entries have full detail pages, replacing the slide-out panel pattern Depends on: Phase 20 Requirements: DETAIL-01, DETAIL-02, DETAIL-03, DETAIL-04, DETAIL-05 Success Criteria (what must be TRUE):
- Clicking a collection item card navigates to
/items/:idshowing full item details with edit toggle - Clicking a catalog search result card navigates to
/global-items/:idshowing public catalog details with "Add to Collection" button - Thread candidates navigate to detail pages instead of opening slide-out panels
- Item slide-out panel and candidate slide-out panel are removed from the root layout
- No visual distinction between reference items and standalone items — same layout, some fields may be empty Plans: 3/3 plans complete
Phase 22: Add-from-Catalog & Thread Integration
Goal: Users can add catalog items to their collection and to threads directly from search Depends on: Phase 21 Requirements: CATFLOW-03, CATFLOW-05, CATFLOW-06 Success Criteria (what must be TRUE):
- User can add a catalog item to collection with one confirmation step (category picker + notes)
- User can add catalog items as thread candidates instantly from search
- Resolving a catalog-linked candidate creates a properly linked reference item in collection Plans: 2/2 plans complete
Phase 23: Manual Entry Fallback
Goal: Users can still add items not found in the catalog via manual entry Depends on: Phase 22 Requirements: CATFLOW-07, CATFLOW-08 Success Criteria (what must be TRUE):
- User can fall back to manual entry from catalog search via "Add Manually" link
- Manual entry saves a standalone collection item (no globalItemId)
- "Submit to catalog?" prompt appears after manual save but takes no backend action Plans: 1/1 plans complete