# Catalog-Driven Gear Flow

**Date:** 2026-04-05
**Status:** Draft
**Scope:** Conceptual vision — how users discover, add, research, and contribute gear through the global catalog.

---

## Product Focus

GearBox is focused on **bikepacking, cycling, adventure, and outdoor gear**. The global catalog, tags, and all curated content target this vertical. Other gear types (sim racing, etc.) may be supported later via multi-collection, but are out of scope for this design.

---

## The Three Pillars

1. **Collection Management** — Track what you own, see weight/cost totals, organize into setups
2. **Research & Purchase** — Find new gear, compare options in threads, make informed decisions
3. **Community & Sharing** — Public profiles, shared setups, reviews, discussions (future: feed)

The **global catalog** is the connective tissue between all three. It's the shared source of truth for "what gear exists in the outdoor/adventure world."

---

## Global Catalog

### What It Is

A curated, community-contributed database of outdoor/adventure gear. Think of it as a gear encyclopedia — every item has specs, images, ratings, review links, and community data.

### Data Model

Each catalog item has:

- **Brand & Model** — the identity (e.g., "Revelate Designs Pika")
- **Specs** — weight, price (MSRP), dimensions where relevant
- **Image** — product photo
- **Description** — short summary of what it is
- **Tags** — flexible, combinable labels (see Tag System below)
- **Rating** — aggregated from user reviews (future)
- **Review Links** — links to trusted publications (bikepacking.com, etc.)
- **Owner Count** — how many GearBox users have this in their collection
- **Submission Status** — `approved`, `pending_review`, `rejected`

### Tag System

Tags replace rigid category hierarchies. They're flat, combinable, and natural-language friendly.

**Tag types:**
- **Gear type:** handlebar-bag, framebag, tent, stove, headlamp, wheel
- **Activity:** bikepacking, touring, hiking, camping, ultralight
- **Property:** waterproof, ultralight, budget, premium, durable
- **Mounting/fit:** handlebar-mount, fork-mount, seatpost, frame

**How tags work:**
- Each catalog item has multiple tags
- Users search with natural language — "waterproof handlebar bag under 200g" matches items tagged `waterproof` + `handlebar-bag` with weight < 200g
- Tags are suggested during search as refinement chips
- Tags are admin-curated to prevent fragmentation (users suggest, admins approve)

---

## Core Flows

### Flow 1: Adding Gear (FAB → Search → Add)

**Entry point:** The floating action button (+) on the collection view.

1. **Click +** → A mini menu appears near the button with two options:
   - 📦 **Add to Collection** — for gear you already own
   - 🔍 **Start New Thread** — to research a purchase

2. **Full-screen search opens** — regardless of which option was chosen:
   - Large search bar at top with back arrow
   - Quick tag chips below for common filters (Bags, Shelter, Lights, Cooking, etc.)
   - Context indicator: "Adding to Collection" or "Starting Thread"
   - "Add manually" link for items not in catalog

3. **Type and search** → Full-screen results:
   - Each result shows: name, rating badge, weight, price, owner count
   - Active tag filters shown as chips above results, with suggested refinements
   - Each result has an **"+ Add"** button

4. **Click "+ Add"** on a catalog result:
   - **For Collection:** Quick confirmation step — item details pre-filled from catalog, user picks their category and optionally adds notes. One tap to confirm.
   - **For Thread:** Instant add as candidate. No confirmation needed — it's just being added to a comparison list.

5. **Item not found → "Add Manually":**
   - Opens the manual entry form (existing ItemForm)
   - User fills in all fields themselves
   - After saving, a non-intrusive opt-in prompt: "Submit this to the global catalog? Other users could find it too."
   - If they dismiss it, don't ask again. The item works in their collection regardless.

### Flow 2: Research Thread (Catalog-Driven)

The existing thread concept, but powered by the catalog:

1. User looks at their collection → "I need a new handlebar bag"
2. Clicks + → "Start New Thread"
3. Searches catalog: "handlebar bag"
4. Browses results — sees specs, ratings, owner counts, review links
5. Adds promising options as thread candidates (instant add)
6. Goes to thread view — candidates are there with all catalog data
7. Reads review links, compares specs, adds personal notes/pros/cons
8. Picks a winner → item moves to collection (existing resolution flow)

### Flow 3: Catalog Submission

When a user manually adds an item that isn't in the catalog:

1. After saving, a subtle prompt appears: "Submit to catalog?"
2. If accepted, the item data (name, weight, price, image, etc.) becomes a **pending submission**
3. The item is usable in the user's collection immediately — submission is async
4. Admin reviews pending submissions — approve, reject, or merge with existing entry
5. On approval, the user's item automatically links to the new catalog entry

**Submission states:** `pending_review` → `approved` / `rejected`

**Review is admin-only for now.** No community moderation. Keep it simple — one person curates the catalog quality.

---

## Navigation

The catalog is accessed **through the add flow** (FAB → search), not as a standalone page. There is no "Browse Catalog" link in the main nav. Discovery happens through:

- The add/thread flow (primary)
- Future: community feed showing what others are adding/reviewing
- Future: "Popular in category" sections

The existing `/global-items` route can remain as a direct URL for power users but doesn't need prominent navigation.

---

## What Changes From Current State

### New
- FAB mini menu (replace direct "add item" panel open)
- Full-screen catalog search overlay
- Search results page with catalog items
- Quick-add confirmation step (category picker + notes)
- Tag system on global items
- Catalog submission flow (manual entry → submit for review)
- Admin review queue for submissions
- Review links on catalog items (trusted publications)

### Modified
- Thread creation — starts from catalog search instead of blank form
- Thread candidates �� can be added from catalog (linked to global item)
- Global items schema — add tags, rating, review links, submission status

### Unchanged
- Collection view, setup management, existing item editing
- Thread comparison view, resolution flow
- Public profiles and setup sharing
- Single collection per user (multi-collection deferred)

---

## Data Model Changes (Conceptual)

**global_items** gains:
- `tags` — array or join table for flexible tagging
- `rating` — aggregated score (future, when reviews exist)
- `reviewLinks` — JSON array of `{ title, url, source }` for publication reviews
- `submissionStatus` — pending_review / approved / rejected
- `submittedBy` — user who submitted (for pending items)

**New: tags table** (or similar):
- Curated list of allowed tags
- Tag-to-global-item many-to-many relationship

**thread_candidates** gains:
- `globalItemId` — optional link to catalog item (like items have via itemGlobalLinks)

---

## Future (Out of Scope)

These are acknowledged as part of the larger vision but not designed here:

- **Community feed** — Instagram/Reddit-style discovery of gear and setups
- **User reviews and ratings** — per-item reviews that aggregate into catalog rating
- **Discussion threads** — comment sections on catalog items
- **Multi-collection** — separate collections per activity (bikepacking, hiking, etc.)
- **AI-powered search** — natural language → structured query translation
- **Price tracking** — historical price data, deal alerts
