303 lines
23 KiB
Markdown
303 lines
23 KiB
Markdown
# Feature Research
|
|
|
|
**Domain:** Multi-user gear management and discovery platform
|
|
**Researched:** 2026-04-03
|
|
**Confidence:** MEDIUM-HIGH
|
|
|
|
---
|
|
|
|
## Context
|
|
|
|
This is the feature research for **v2.0 Platform Foundation** -- transforming GearBox from a single-user gear tracker into a multi-user platform with discovery, global item database, structured reviews, and setup sharing.
|
|
|
|
**Existing features (already built through v1.4):**
|
|
- Gear collection CRUD with categories, weight/price, images, quantity
|
|
- Planning threads with candidate comparison, ranking, pros/cons, impact preview
|
|
- Named setups (loadouts) with classification, donut chart visualization
|
|
- Search/filter, CSV import/export, item duplication
|
|
- Dashboard home page, onboarding wizard
|
|
- Single-user auth (cookie sessions + API keys), MCP server (19 tools)
|
|
|
|
**Key project constraints:**
|
|
- No freeform UGC until moderation infrastructure exists (structured input only)
|
|
- Discovery-first, not social-first
|
|
- External auth provider (self-hosted, open-source)
|
|
- Postgres for multi-user platform
|
|
|
|
---
|
|
|
|
## Feature Landscape
|
|
|
|
### Table Stakes (Users Expect These)
|
|
|
|
Features users assume exist on any multi-user gear platform. Missing these makes the platform feel broken or pointless.
|
|
|
|
| Feature | Why Expected | Complexity | Notes |
|
|
|---------|--------------|------------|-------|
|
|
| **User registration and authentication** | Cannot have multi-user without accounts. Every platform has sign-up/login. | HIGH | External auth provider integration (Authentik, Keycloak, or similar). Replaces current single-user cookie auth. All existing entities need userId FK. |
|
|
| **User profiles (public)** | Every community platform has profiles. Users need identity to share and be discovered. | LOW | Minimal: display name, avatar URL, bio text, joined date. Public profile page lists user's public setups. No follower counts needed. |
|
|
| **Setup visibility controls** | Users will not share setups if they cannot control what is public. Privacy is table stakes for any sharing platform. | LOW | Binary public/private toggle per setup. Default to private (opt-in sharing). Existing setups migrated as private. |
|
|
| **Public setup detail pages** | Shared setup links must resolve to a readable page. If sharing is a feature, the shared thing must be viewable. | MEDIUM | Read-only view with item list, weight/cost totals, donut chart, creator attribution. No auth required for public setups. Extends existing setup detail view. |
|
|
| **Global item database (searchable)** | Users expect to find gear by name rather than entering specs from scratch every time. LighterPack's weakness is fully manual data entry. | HIGH | Central product catalog with brand, model, category, manufacturer weight, MSRP, product URL, image. Users search and link rather than re-enter. Seed with 200-500 items in core categories to bootstrap. This is the foundational dependency for reviews, aggregation, and item detail pages. |
|
|
| **Link personal items to global items** | Once a global DB exists, users expect to connect their gear to canonical entries for richer data. | MEDIUM | Optional FK from user items to global items. Enables aggregation (owner count, avg weight, reviews). Must handle items not yet in global DB gracefully. |
|
|
| **Item detail page (aggregated)** | When browsing gear, clicking an item should show consolidated info: specs, who owns it, ratings. Standard on any product platform. | HIGH | Aggregated view combining: manufacturer specs from global DB, owner count, setup appearances, average ratings, crowd-reported weights. This is the integration hub for all platform features. |
|
|
| **Structured reviews (ratings)** | Any product-oriented community needs evaluation. Users expect to rate gear and see what others think. | MEDIUM | Overall 1-5 star rating plus 3-5 dimension ratings (varies by product category). Attached to global items, not personal items. One review per user per global item. No freeform text per project constraint. |
|
|
| **Discovery browse page** | Users expect a way to find interesting setups and gear beyond their own collection. Without this, multi-user adds no value. | MEDIUM | Not algorithmic for v2.0. Three sections: recent public setups, recently reviewed items, popular gear (most owned). Simple sorted lists with pagination. |
|
|
| **Search global items** | Must be able to find products by name/brand in the global database. Powers linking, browsing, and review discovery. | MEDIUM | Full-text search on name, brand, category. Used in "link my item" flow, discovery browsing, and review lookup. Postgres full-text search or trigram index. |
|
|
|
|
### Differentiators (Competitive Advantage)
|
|
|
|
Features that set GearBox apart from LighterPack, GearGrams, Trailspace, and MyGear. Aligned with core value: "help people make better gear decisions."
|
|
|
|
| Feature | Value Proposition | Complexity | Notes |
|
|
|---------|-------------------|------------|-------|
|
|
| **Crowd-verified specs** | LighterPack trusts user-entered data blindly. GearBox can show "manufacturer says 450g, 12 owners measured avg 478g." Real-world weight verification is unique and high-value for weight-conscious users. | MEDIUM | Aggregate weightGrams from all user items linked to a global item. Compare against manufacturer spec. Display on item detail page. Needs sufficient linked items to be meaningful (threshold: 3+ owners). |
|
|
| **Review dimensions per product category** | Trailspace and OutdoorGearLab use editorial ratings with fixed dimensions. GearBox crowd-sources structured ratings with category-specific dimensions: a tent gets "weather protection, ventilation, setup ease" while a stove gets "boil time, fuel efficiency, packability." More relevant than one-size-fits-all. | MEDIUM | Define 3-5 rating dimensions per product category via admin config. Store dimension ratings alongside overall rating. Display as radar chart or bar chart on item detail page. |
|
|
| **"X people own this" social proof** | Shows popularity and real adoption. No gear tracker does this because they lack a global item database. Simple count, powerful signal. | LOW | Count of users who linked a collection item to this global item. Displayed prominently on item detail page and in search results. Zero implementation complexity once linking exists. |
|
|
| **Setup composition insights** | "This item appears in 47 bikepacking setups, commonly paired with Y and Z." Cross-setup analysis no competitor offers. Answers "what do people use this with?" | MEDIUM | Query across all public setups containing a given global item. Show co-occurrence patterns. Powerful but can be deferred to v2.x if query performance is a concern. |
|
|
| **Setup impact preview with global items** | Already built for personal items. Extending to global items lets users preview "adding this from the store to my setup changes weight by X." Bridges research and collection management. | LOW | Already exists for personal items. Add "preview in my setup" button on global item detail pages. Reuse existing impact preview logic. |
|
|
| **Planning threads with global item integration** | Research threads that pull in specs, reviews, and owner data from the global DB. Candidates link to global items for richer comparison than manual data entry. | MEDIUM | Add optional globalItemId to thread candidates. Auto-populate weight, price, image from global item. Show community ratings and owner count inline on candidates. |
|
|
| **Real-world weight distribution** | Histogram showing "owners report weights between 440g-490g" for a product. Beats a single manufacturer number. Valuable for ultralight community. | LOW | Aggregate weightGrams from all linked items. Display min/max/avg. Histogram if 10+ data points. |
|
|
| **Copy/fork public setups** | Use someone else's setup as a starting template. LighterPack has clunky CSV-based copying. One-click fork is much better UX. | LOW | Create new setup copying all items from a public setup. Items must exist in user's collection (or be linked to same global items). Clear UX for "items you do not own yet." |
|
|
|
|
### Anti-Features (Commonly Requested, Often Problematic)
|
|
|
|
| Feature | Why Requested | Why Problematic | Alternative |
|
|
|---------|---------------|-----------------|-------------|
|
|
| **Freeform text reviews** | Users want to explain their experience in detail | Requires moderation, spam filtering, content policy, reporting infrastructure. PROJECT.md explicitly defers until moderation exists. | Structured ratings with predefined dimensions. Short predefined tags for pros/cons (e.g., "lightweight", "durable", "runs small"). |
|
|
| **Comments on setups** | Social engagement, questions about gear choices | Moderation burden, notification system, spam, harassment risk. Deferred in PROJECT.md. | Link to user profile. Contact happens outside platform. |
|
|
| **Follow users / activity feed** | Social graph, staying updated on people | Turns a gear tool into a social network. Notification infrastructure, feed ranking, engagement metrics, retention loops. Project decision: discovery-first, not social-first. | Discovery feed shows popular/recent content without requiring social connections. |
|
|
| **Marketplace / buy-sell** | Users want to trade used gear | Payment processing, fraud prevention, disputes, shipping logistics, tax compliance. Massive liability. | Link to product URLs on global items. Users buy through retailers. |
|
|
| **AI gear recommendations** | "What tent should I buy for bikepacking?" | Training data requirements, bias, liability for bad recommendations, hallucination risk. | Global item pages with ratings, owner counts, and setup co-occurrence do implicit recommendation. "People who own X also own Y." |
|
|
| **Wiki-style open item editing** | Community wants to correct/enrich global item specs | Edit wars, vandalism, quality degradation, dispute resolution. PROJECT.md explicitly rules this out. | Structured contributions only: report measured weight, submit rating. Admin approval for spec corrections. Trusted contributor program later. |
|
|
| **Price tracking / deal alerts** | Users want to know when gear goes on sale | Requires scraping retailer sites, fragile, legal gray area, maintenance burden. PROJECT.md rules this out. | Store product URL so users can check prices manually. |
|
|
| **Real-time collaborative setups** | "Plan a group trip together" | WebSocket infrastructure, conflict resolution, permissions model, presence indicators. Massive complexity for niche use case. | Each user builds their own setup. Fork public setups as templates. |
|
|
| **Gamification (badges, points, levels)** | Drive engagement and contributions | Incentivizes quantity over quality. Users game systems for points rather than providing genuine data. Creates toxic dynamics. | Soft social proof: "contributed X reviews" on profile. No points, no leaderboards. |
|
|
| **Instagram-style infinite scroll feed** | Addictive browsing experience | Engagement-maximizing design conflicts with utility-focused tool. Users come to research decisions, not scroll endlessly. | Paginated, filterable discovery page. Browse with intent, not addiction. |
|
|
|
|
---
|
|
|
|
## Feature Dependencies
|
|
|
|
```
|
|
[External Auth Provider]
|
|
|
|
|
v
|
|
[Multi-User Data Model (userId FK on all entities)]
|
|
|
|
|
+---> [Postgres Migration] (concurrent access, auth provider needs Postgres)
|
|
|
|
|
+---> [User Profiles (public)]
|
|
| |
|
|
| +---> [Public Profile Pages]
|
|
| | |
|
|
| | +---> [Discovery Feed (browse users' public content)]
|
|
| |
|
|
| +---> [Setup Visibility Controls (public/private)]
|
|
| |
|
|
| +---> [Public Setup Detail Pages]
|
|
| |
|
|
| +---> [Copy/Fork Public Setups]
|
|
|
|
|
+---> [Global Item Database]
|
|
|
|
|
+---> [Search Global Items]
|
|
|
|
|
+---> [Link Personal Items to Global Items]
|
|
| |
|
|
| +---> [Owner Count ("X people own this")]
|
|
| |
|
|
| +---> [Crowd-Verified Specs (aggregated weight)]
|
|
| |
|
|
| +---> [Setup Appearances Count]
|
|
| |
|
|
| +---> [Real-World Weight Distribution]
|
|
|
|
|
+---> [Structured Reviews]
|
|
| |
|
|
| +---> [Review Dimensions per Category]
|
|
| |
|
|
| +---> [Average Ratings Display]
|
|
|
|
|
+---> [Item Detail Pages (aggregated hub)]
|
|
| |
|
|
| +---> [Setup Composition Insights]
|
|
|
|
|
+---> [Planning Thread Global Item Integration]
|
|
|
|
|
+---> [Candidate Auto-populate from Global DB]
|
|
```
|
|
|
|
### Dependency Notes
|
|
|
|
- **Multi-user data model is the absolute foundation.** Every feature depends on userId ownership. Items, setups, threads, categories, reviews -- all need user scoping. This is the biggest single migration.
|
|
- **Postgres migration is coupled with auth.** The external auth provider (Authentik, Keycloak) needs Postgres. Migrating the app DB at the same time avoids running two databases. Do these together.
|
|
- **Global item database is the second foundation.** Reviews, item detail pages, owner counts, crowd-verified specs, and planning thread integration all depend on canonical global item records. Without this, multi-user is just "LighterPack with accounts."
|
|
- **Structured reviews require global items.** Reviews attach to global items, not personal collection items. Otherwise reviews fragment across duplicate user-entered items with no way to aggregate.
|
|
- **Item detail pages are the integration point.** They combine global item specs, aggregated user data, reviews, owner count, and setup appearances. Should be built after all data sources exist.
|
|
- **Discovery feed requires profiles + public content.** Cannot browse without user identity and visibility controls producing public content to show.
|
|
- **Linking is the bridge.** Personal items link to global items. This single FK enables owner count, crowd-verified specs, weight distribution, and setup appearances. Prioritize this flow.
|
|
|
|
---
|
|
|
|
## MVP Definition
|
|
|
|
### Launch With (v2.0 Platform Foundation)
|
|
|
|
- [ ] **External auth provider integration** -- Nothing works without multi-user identity
|
|
- [ ] **Postgres migration** -- Required for concurrent access; auth provider dependency
|
|
- [ ] **Multi-user data model** -- userId on items, setups, threads, categories; data isolation
|
|
- [ ] **User profiles (minimal)** -- Display name, avatar, bio; public profile page
|
|
- [ ] **Setup visibility controls** -- Public/private toggle, default private
|
|
- [ ] **Public setup detail pages** -- Shareable read-only view with attribution
|
|
- [ ] **Global item database with seed data** -- Schema, admin seeding, search
|
|
- [ ] **Link personal items to global items** -- Association flow in collection UI
|
|
- [ ] **Structured reviews** -- Overall rating + dimension ratings on global items
|
|
- [ ] **Item detail pages** -- Aggregated specs, owner count, average ratings
|
|
- [ ] **Discovery browse page** -- Recent public setups, recently reviewed, popular items
|
|
|
|
### Add After Validation (v2.x)
|
|
|
|
- [ ] **Crowd-verified specs display** -- "Manufacturer: 450g, Community avg: 478g" (needs 3+ owners per item to be meaningful)
|
|
- [ ] **Setup composition insights** -- "Commonly paired with" co-occurrence analysis
|
|
- [ ] **Planning thread global item integration** -- Candidates auto-populate from global DB
|
|
- [ ] **Popular gear rankings by category** -- Most owned, highest rated per category
|
|
- [ ] **Copy/fork public setups** -- One-click template from public setups
|
|
- [ ] **Review dimension customization** -- Admin configures rating dimensions per product category
|
|
- [ ] **Real-world weight distribution** -- Histogram on item detail pages
|
|
- [ ] **Global item suggestion workflow** -- Users propose new items for admin review
|
|
|
|
### Future Consideration (v3+)
|
|
|
|
- [ ] **Freeform reviews with moderation** -- After moderation infrastructure exists
|
|
- [ ] **Comments on setups** -- After moderation infrastructure exists
|
|
- [ ] **Follow users / activity feed** -- After discovery model is validated
|
|
- [ ] **OAuth / social login** -- After external auth provider is stable
|
|
- [ ] **Trusted contributor program** -- Verified users can edit global item specs
|
|
|
|
---
|
|
|
|
## Feature Prioritization Matrix
|
|
|
|
| Feature | User Value | Implementation Cost | Priority |
|
|
|---------|------------|---------------------|----------|
|
|
| External auth provider | HIGH | HIGH | P1 |
|
|
| Postgres migration | HIGH | HIGH | P1 |
|
|
| Multi-user data model (userId on entities) | HIGH | HIGH | P1 |
|
|
| User profiles (basic) | HIGH | LOW | P1 |
|
|
| Setup visibility controls | HIGH | LOW | P1 |
|
|
| Public setup detail pages | HIGH | MEDIUM | P1 |
|
|
| Global item database (schema + seed) | HIGH | HIGH | P1 |
|
|
| Link personal items to global items | HIGH | MEDIUM | P1 |
|
|
| Search global items | HIGH | MEDIUM | P1 |
|
|
| Structured reviews | HIGH | MEDIUM | P1 |
|
|
| Item detail pages (aggregated) | HIGH | HIGH | P1 |
|
|
| Discovery browse page | MEDIUM | MEDIUM | P1 |
|
|
| Crowd-verified specs | HIGH | LOW | P2 |
|
|
| Setup composition insights | MEDIUM | MEDIUM | P2 |
|
|
| Planning thread global DB integration | MEDIUM | MEDIUM | P2 |
|
|
| Copy/fork public setups | MEDIUM | LOW | P2 |
|
|
| Popular gear rankings | MEDIUM | LOW | P2 |
|
|
| Freeform reviews + moderation | MEDIUM | HIGH | P3 |
|
|
| Follow users | LOW | MEDIUM | P3 |
|
|
| Setup comments | LOW | MEDIUM | P3 |
|
|
|
|
**Priority key:**
|
|
- P1: Must have for v2.0 platform launch
|
|
- P2: Should have, add in v2.x once core is validated
|
|
- P3: Future consideration, requires new infrastructure (moderation, notifications)
|
|
|
|
---
|
|
|
|
## Competitor Feature Analysis
|
|
|
|
| Feature | LighterPack | GearGrams | Trailspace | MyGear | GearBox v2.0 |
|
|
|---------|-------------|-----------|------------|--------|-------------|
|
|
| Gear lists/setups | Yes, drag-and-drop | Yes, trip-based | No (review only) | Yes, "Locker" | Yes, named setups with classification |
|
|
| Weight tracking | Base/worn/consumable | Carried/worn/consumable | No | Basic | Base/worn/consumable + unit conversion + donut charts |
|
|
| User profiles | Minimal (no bio) | Minimal | Review history page | Full social profile | Display name, avatar, bio, public setups |
|
|
| Sharing | Public link, embed code | Public link | N/A | Social feed posts | Public/private toggle, shareable URLs |
|
|
| Global item database | No (all user-entered) | No | Yes (editorial catalog) | No | Yes, seeded + crowd-enriched with verified specs |
|
|
| Structured reviews | No | No | Yes (summary/pros/cons + rating) | Basic star rating | Dimension ratings per product category |
|
|
| Item aggregation | No | No | Editorial scores only | No | Owner count, avg weight, setup appearances, crowd specs |
|
|
| Discovery/browse | No | No | Browse by category | AI-tagged social feed | Browse setups, items, popular gear (intent-driven, not feed) |
|
|
| Purchase research | No | No | Price comparison links | No | Planning threads with candidates, ranking, impact preview |
|
|
| Crowd-verified specs | No | No | No | No | Manufacturer vs. community-measured weight comparison |
|
|
| Mobile app | No | Yes (iOS/Android) | No | Yes (iOS/Android) | No (responsive web, per project constraint) |
|
|
|
|
### Competitive Positioning
|
|
|
|
GearBox occupies a unique niche: the only platform combining **gear management** (LighterPack's strength), **structured community reviews** (Trailspace's strength), and **crowd-verified specs** (nobody does this). The planning threads feature has no direct competitor equivalent in the gear domain.
|
|
|
|
**Key advantages over each competitor:**
|
|
- **vs. LighterPack:** Global item database eliminates manual spec entry. Multi-user with profiles and sharing. Structured reviews provide community intelligence.
|
|
- **vs. GearGrams:** Richer comparison tools (planning threads). Crowd-verified specs. Item detail pages with aggregated data.
|
|
- **vs. Trailspace:** Not just reviews -- full gear management and setup composition. Users own and track their gear, not just review it. Crowd ratings, not editorial-only.
|
|
- **vs. MyGear:** Not social-first (no engagement loops, no AI tagging gimmicks). Utility-focused: research decisions, verify specs, compare options. Hobby-agnostic data model.
|
|
|
|
**Accepted gaps:**
|
|
- No mobile native app (web-first, responsive design sufficient per project constraints)
|
|
- No social feed in the Instagram sense (intentional: discovery-first, not social-first)
|
|
- No freeform text content (intentional: structured input only until moderation exists)
|
|
|
|
---
|
|
|
|
## Implementation Notes for Key Features
|
|
|
|
### Global Item Database Schema
|
|
|
|
The global item table is distinct from user items. It represents canonical products:
|
|
|
|
- `globalItems`: id, brand, model, name (display), categoryId, manufacturerWeightGrams, manufacturerPriceCents, productUrl, imageFilename, description, createdAt, updatedAt, createdByUserId
|
|
- User items get optional `globalItemId` FK for linking
|
|
- Admin-seeded initially; later users can suggest additions via a proposal workflow
|
|
|
|
### Structured Review Schema
|
|
|
|
- `reviews`: id, userId, globalItemId, overallRating (1-5), createdAt, updatedAt
|
|
- `reviewDimensionRatings`: id, reviewId, dimensionId, rating (1-5)
|
|
- `reviewDimensions`: id, categoryId, name (e.g., "durability", "packability"), sortOrder
|
|
- Unique constraint: one review per user per global item
|
|
- Dimensions are per-category, admin-defined
|
|
|
|
### Discovery Feed Approach
|
|
|
|
Not a personalized algorithmic feed. Three content streams, each a simple sorted query:
|
|
|
|
1. **Recent public setups** -- ORDER BY createdAt DESC, paginated
|
|
2. **Recently reviewed items** -- Global items with recent reviews, ORDER BY latest review date
|
|
3. **Popular gear** -- Global items ORDER BY linked owner count DESC
|
|
|
|
No recommendation engine. No engagement scoring. Users browse with intent.
|
|
|
|
### User Profile Data
|
|
|
|
Minimal profile extending the auth provider's user record:
|
|
|
|
- Display name (from auth provider or custom)
|
|
- Avatar URL (from auth provider or uploaded)
|
|
- Bio (short text, 280 char limit)
|
|
- Joined date
|
|
- Public setups list (derived from setup visibility)
|
|
- Review count (derived)
|
|
- Collection size (count of items, public stat)
|
|
|
|
---
|
|
|
|
## Sources
|
|
|
|
- [LighterPack](https://lighterpack.com/) -- Gear list builder, community standard for ultralight hikers. Public sharing via link, no profiles or reviews.
|
|
- [LighterPack tutorial (99Boulders)](https://www.99boulders.com/lighterpack-tutorial) -- Feature overview including sharing, linking, limitations.
|
|
- [GearGrams](https://www.geargrams.com/) -- Trip-based gear list tracker with weight classification.
|
|
- [Trailspace](https://www.trailspace.com/) -- User gear reviews with structured Summary/Pros/Cons format and Review Corps program.
|
|
- [Trailspace Review Form](https://www.trailspace.com/blog/2012/02/29/new-gear-review-form.html) -- Details on structured review fields with category-specific suggestions.
|
|
- [MyGear](https://mygear.world/) -- Social app for sports gear with Locker, feed, AI gear recognition, challenges.
|
|
- [Outdoor Gear Lab](https://www.outdoorgearlab.com/) -- Professional structured gear reviews with side-by-side comparison methodology.
|
|
- [Ultralight App](https://trailsmag.net/blogs/hiker-box/ultralight-the-gear-tracking-app-i-m-leaving-lighterpack-for) -- LighterPack alternative analysis showing community pain points.
|
|
- [Ready Set Sim](https://www.readysetsim.com/) -- Sim racing gear profiles and build sharing (cross-domain reference for hobby-agnostic patterns).
|
|
- [GetStream Social Feed Architecture](https://getstream.io/blog/social-media-feed/) -- Feed implementation patterns and anti-patterns.
|
|
|
|
---
|
|
*Feature research for: GearBox v2.0 Platform Foundation -- multi-user gear discovery platform*
|
|
*Researched: 2026-04-03*
|