- SUMMARY.md with full task/commit/deviation documentation - STATE.md updated to Phase 18, Plan 2/5 - ROADMAP.md progress updated - REQUIREMENTS.md: GLOB-01 through GLOB-05 marked complete
158 lines
6.5 KiB
Markdown
158 lines
6.5 KiB
Markdown
# 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
|
|
|
|
Requirements for this milestone. Each maps to roadmap phases.
|
|
|
|
### 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
|
|
|
|
- [x] **GLOB-01**: A global item catalog exists with brand, model, category, manufacturer specs, and image
|
|
- [x] **GLOB-02**: Global catalog is seeded with initial items from manufacturer data
|
|
- [x] **GLOB-03**: User can search the global catalog by name or brand
|
|
- [x] **GLOB-04**: User can link a personal collection item to a global catalog entry
|
|
- [x] **GLOB-05**: Global item pages show basic info and owner count
|
|
|
|
### 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
|
|
|
|
## Future Requirements
|
|
|
|
Deferred to future milestones. Tracked but not in current roadmap.
|
|
|
|
### Reviews & Ratings
|
|
|
|
- **REV-01**: User can rate a global item with an overall star rating
|
|
- **REV-02**: User can rate a global item on predefined dimensions (durability, value, etc.)
|
|
- **REV-03**: Item detail pages show average ratings from all reviewers
|
|
|
|
### Discovery
|
|
|
|
- **DISC-01**: User can browse recently shared public setups
|
|
- **DISC-02**: User can browse recently reviewed items
|
|
- **DISC-03**: User can browse popular gear by owner count
|
|
|
|
### Aggregation
|
|
|
|
- **AGG-01**: Item detail pages show crowd-verified specs (manufacturer vs community-measured weight)
|
|
- **AGG-02**: Item detail pages show which setups include this item
|
|
- **AGG-03**: Setup composition insights ("commonly paired with")
|
|
|
|
### Social
|
|
|
|
- **SOCL-01**: User can fork/copy a public setup as a template
|
|
- **SOCL-02**: Planning thread candidates can link to global items for auto-populated specs
|
|
- **SOCL-03**: User can follow other users
|
|
- **SOCL-04**: User can view an activity feed of followed users' content
|
|
|
|
### Content Moderation
|
|
|
|
- **MOD-01**: User can submit freeform text reviews
|
|
- **MOD-02**: User can report inappropriate content
|
|
- **MOD-03**: Admin can review and act on reported content
|
|
|
|
## Out of Scope
|
|
|
|
Explicitly excluded. Documented to prevent scope creep.
|
|
|
|
| Feature | Reason |
|
|
|---------|--------|
|
|
| Freeform text reviews | Requires moderation infrastructure not yet built |
|
|
| Comments on setups | Moderation burden, notification system needed |
|
|
| User-to-user messaging | High moderation burden, not core to discovery |
|
|
| Wiki-style open item editing | Quality control risk; structured contributions only |
|
|
| Marketplace / buy-sell | Payment processing, fraud, legal liability |
|
|
| AI gear recommendations | Training data requirements, hallucination risk |
|
|
| Gamification (badges, points) | Incentivizes quantity over quality |
|
|
| Instagram-style infinite scroll | Engagement-maximizing conflicts with utility focus |
|
|
| Price tracking / deal alerts | Requires scraping, fragile, legal gray area |
|
|
| Mobile native app | Web-first, responsive design sufficient |
|
|
| Real-time collaborative setups | WebSocket complexity for niche use case |
|
|
| Maintaining SQLite single-user mode | Platform features irrelevant for solo use; diverged at v2.0 |
|
|
| Redis infrastructure | Not needed at v2.0 scale; auth provider (Logto) doesn't require it |
|
|
|
|
## Traceability
|
|
|
|
Which phases cover which requirements. Updated during roadmap creation.
|
|
|
|
| Requirement | Phase | Status |
|
|
|-------------|-------|--------|
|
|
| DB-01 | Phase 14 | Pending |
|
|
| DB-02 | Phase 14 | Pending |
|
|
| DB-03 | Phase 14 | Pending |
|
|
| DB-04 | Phase 14 | Pending |
|
|
| DB-05 | Phase 14 | Pending |
|
|
| AUTH-01 | Phase 15 | Pending |
|
|
| AUTH-02 | Phase 15 | Pending |
|
|
| AUTH-03 | Phase 15 | Pending |
|
|
| AUTH-04 | Phase 15 | Pending |
|
|
| AUTH-05 | Phase 15 | Pending |
|
|
| MULTI-01 | Phase 16 | Pending |
|
|
| MULTI-02 | Phase 16 | Pending |
|
|
| MULTI-03 | Phase 16 | Pending |
|
|
| MULTI-04 | Phase 16 | Pending |
|
|
| MULTI-05 | Phase 16 | Pending |
|
|
| MULTI-06 | Phase 16 | Pending |
|
|
| IMG-01 | Phase 17 | Pending |
|
|
| IMG-02 | Phase 17 | Pending |
|
|
| IMG-03 | Phase 17 | Pending |
|
|
| IMG-04 | Phase 17 | Pending |
|
|
| GLOB-01 | Phase 18 | Complete (18-02) |
|
|
| GLOB-02 | Phase 18 | Complete (18-02) |
|
|
| GLOB-03 | Phase 18 | Complete (18-02) |
|
|
| GLOB-04 | Phase 18 | Complete (18-02) |
|
|
| GLOB-05 | Phase 18 | Complete (18-02) |
|
|
| PROF-01 | Phase 18 | Pending |
|
|
| PROF-02 | Phase 18 | Pending |
|
|
| PROF-03 | Phase 18 | Pending |
|
|
| PROF-04 | Phase 18 | Pending |
|
|
| PROF-05 | Phase 18 | Pending |
|
|
|
|
**Coverage:**
|
|
- v2.0 requirements: 30 total
|
|
- Mapped to phases: 30
|
|
- Unmapped: 0
|
|
|
|
---
|
|
*Requirements defined: 2026-04-03*
|
|
*Last updated: 2026-04-03 after roadmap creation*
|