# Feature Research: v1.2 Collection Power-Ups **Domain:** Gear management -- search/filter, weight classification, weight visualization, candidate status tracking, weight unit selection **Researched:** 2026-03-16 **Confidence:** HIGH **Scope:** New features only. v1.0/v1.1 features (item CRUD, categories, threads, setups, dashboard, onboarding, images, icons) are already shipped. ## Table Stakes Features that gear management users expect. Missing these makes the app feel incomplete for collections beyond ~20 items. | Feature | Why Expected | Complexity | Dependencies on Existing | |---------|--------------|------------|--------------------------| | Search items by name | Every competitor with an inventory concept has search. Hikt highlights "searchable digital closet." PackLight Supporter Edition has inventory search. Once a collection exceeds 30 items, scrolling to find something is painful. LighterPack notably lacks this and users complain. | LOW | Items query (`useItems`), collection view. Client-side only -- no API changes needed for <500 items. | | Filter items by category | Already partially exists in Planning view (category dropdown for threads). Collection view groups by category visually but has no filter. Users need to quickly narrow to "show me just my shelter items." | LOW | Categories query (`useCategories`), collection view. Client-side filtering of already-fetched items. | | Weight unit selection (g, oz, lb, kg) | Universal across all competitors. LighterPack supports toggling between g/oz/lb/kg. Packrat offers per-item input in any unit with display conversion. Backpacking Light forum users specifically praise apps that let you "enter item weights in grams and switch the entire display to lbs & oz." Gear specs come in mixed units -- a sleeping bag in lbs/oz, a fuel canister in grams. | LOW | `formatWeight()` in `lib/formatters.ts`, `settings` table (already exists with key/value store), TotalsBar, ItemCard, CandidateCard, SetupCard -- every weight display. | | Weight classification (base/worn/consumable) | LighterPack pioneered this three-way split and it is now universal. Hikt, PackLight, Packstack, HikeLite, 99Boulders spreadsheet -- all support it. "Base weight" is the core metric of the ultralight community. Without classification, weight totals are a single number with no actionable insight. | MEDIUM | `setup_items` join table (needs new column), setup detail view, setup service, totals computation. Schema migration required. | ## Differentiators Features that set GearBox apart or add meaningful value beyond what competitors offer. | Feature | Value Proposition | Complexity | Dependencies on Existing | |---------|-------------------|------------|--------------------------| | Weight distribution visualization (donut/pie chart) | LighterPack's pie chart is iconic and widely cited as its best feature. "The pie chart at the top is a great way to visualize how your pack weight breaks down by category." PackLight uses bar graphs. GearBox can do this per-setup with a modern donut chart that also shows base/worn/consumable breakdown -- a combination no competitor offers cleanly. | MEDIUM | Totals data (already computed server-side per category), weight classification (new), a chart library (react-minimal-pie-chart at 2kB or Recharts). | | Candidate status tracking (researching/ordered/arrived) | No competitor has this. Research confirmed: the specific workflow of tracking purchase status through stages does not exist in any gear management app. This is unique to GearBox's planning thread concept. It makes threads a living document of the purchase lifecycle, not just a comparison tool. | LOW | `thread_candidates` table (needs new `status` column), CandidateCard, CandidateForm. Simple text field migration. | | Planning category filter with icon-aware dropdown | Already partially built as a plain `` without icons. Since categories now have Lucide icons (v1.1), the filter should show them. **Recommended implementation:** - Replace the native `` with a custom dropdown component. ## Feature Dependencies ``` [Weight Unit Selection] --independent-- (affects all displays, no schema changes) | +-- should ship first (all other features benefit from correct unit display) [Search & Filter] --independent-- (pure client-side, no schema changes) | +-- no dependencies on other v1.2 features [Candidate Status Tracking] --independent-- (schema change on thread_candidates only) | +-- no dependencies on other v1.2 features [Weight Classification] --depends-on--> [existing setup_items table] | +-- schema migration on setup_items +-- enables [Weight Distribution Visualization] [Weight Distribution Visualization] --depends-on--> [Weight Classification] | +-- needs classification data to show base/worn/consumable breakdown +-- can show by-category chart without classification (partial value) +-- new dependency: react-minimal-pie-chart [Planning Category Filter Icons] --depends-on--> [existing CategoryPicker pattern] | +-- pure UI enhancement ``` ### Implementation Order Rationale 1. **Weight Unit Selection** first -- touches formatting everywhere, foundational for all subsequent weight displays 2. **Search & Filter** second -- standalone, immediately useful, low risk 3. **Candidate Status Tracking** third -- standalone schema change, simple 4. **Planning Category Filter** fourth -- quick UI polish 5. **Weight Classification** fifth -- most complex schema change, affects setup data model 6. **Weight Distribution Visualization** last -- depends on classification, needs chart library, highest UI complexity ## Complexity Summary | Feature | Schema Change | API Change | New Dependency | UI Scope | Overall | |---------|---------------|------------|----------------|----------|---------| | Search & Filter | None | None | None | Collection view only | LOW | | Weight Unit Selection | None (uses settings) | None (settings API exists) | None | All weight displays (~8 components) | LOW | | Candidate Status Tracking | `thread_candidates.status` column | Update candidate CRUD | None | CandidateCard, CandidateForm | LOW | | Planning Category Filter | None | None | None | PlanningView dropdown | LOW | | Weight Classification | `setup_items.classification` column | Update setup sync + detail endpoints | None | Setup detail view | MEDIUM | | Weight Distribution Chart | None | Possibly new totals endpoint | react-minimal-pie-chart (~2kB) | New chart component | MEDIUM | ## Sources - [LighterPack](https://lighterpack.com/) -- weight classification and pie chart visualization patterns - [LighterPack Tutorial (99Boulders)](https://www.99boulders.com/lighterpack-tutorial) -- detailed feature walkthrough - [LighterPack Tutorial (Backpackers.com)](https://backpackers.com/blog/how-to-calculate-backpack-weight-with-lighterpack/) -- base/worn/consumable definitions - [Hikt](https://hikt.app/) -- searchable gear closet, base vs worn weight display - [PackLight (iOS)](https://apps.apple.com/us/app/packlight-for-backpacking/id1054845207) -- search, custom categories, bar graph visualization - [Packstack](https://www.packstack.io/) -- base/worn/consumable weight separation - [HikeLite](https://hikeliteapp.com/) -- worn weight marking, CSV import format - [Packrat](https://www.packrat.app/) -- flexible weight unit input and display conversion - [BPL Calculator Forum Discussion](https://backpackinglight.com/forums/topic/new-backpacking-hiking-weight-calculator-app/) -- unit conversion UX, search filter patterns - [react-minimal-pie-chart (GitHub)](https://github.com/toomuchdesign/react-minimal-pie-chart) -- 2kB lightweight chart library - [Best React Chart Libraries 2025 (LogRocket)](https://blog.logrocket.com/best-react-chart-libraries-2025/) -- chart library comparison - [LighterPack GitHub Issues](https://github.com/galenmaly/lighterpack/issues) -- user feature requests - [OutPack](https://outpack.app/) -- modern LighterPack alternative with category breakdown graphs - [Pack Weight Calculator Guide (BackpackPeek)](https://backpackpeek.com/blog/pack-weight-calculator-base-weight-guide) -- base weight calculation methodology --- *Feature research for: v1.2 Collection Power-Ups (search/filter, weight classification, visualization, candidate status, weight units)* *Researched: 2026-03-16*