A mobile-first web app to help families track body measurements and get equipment sizing recommendations for sports gear.
Try the app online: https://gearguru-b3bc8.web.app
- Family Member Profiles - Track measurements for each family member
- Equipment Sizing - Auto-calculated sizes for skis, boots, boards, and skates
- Shoe Size Converter - Convert between EU, US, UK, and Mondopoint systems
- Multi-Sport Support - Nordic, Alpine, Snowboard, and Hockey sizing
| Sport | Equipment Sized |
|---|---|
| Nordic Classic | Skis, Poles, Boots |
| Nordic Skate | Skis, Poles, Boots |
| Alpine Skiing | Skis, Boots, DIN Settings |
| Snowboarding | Board, Boots, Stance |
| Hockey | Skates (Bauer, CCM) |
- Framework: React 18 + TypeScript
- Build Tool: Vite
- Database: Firebase Firestore
- Testing: Vitest + React Testing Library
- CI/CD: GitHub Actions
- Node.js 20+
- npm 10+
# Clone the repository
git clone https://github.com/theredmoose/gearguru.git
cd gearguru
# Install dependencies
npm install
# Copy environment template
cp .env.example .env.local
# Edit .env.local with your Firebase credentials- Go to Firebase Console
- Create a new project
- Add a Web app to the project
- Copy the config values to
.env.local - Enable Firestore in the console
- Deploy security rules:
firebase deploy --only firestore:rules
# Start dev server
npm run dev
# App runs at http://localhost:5173
# Run unit tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Build for production
npm run build
# Preview production build locally
npm run previewThe app is deployed at https://gearguru-b3bc8.web.app
To deploy your own changes:
# Build and deploy to Firebase Hosting
npm run build
firebase deploy --only hostingsrc/
├── components/ # React components
├── services/ # Business logic (sizing, conversions)
├── hooks/ # React hooks (Firebase integration)
├── types/ # TypeScript type definitions
└── config/ # Firebase configuration
tests/
├── fixtures/ # Test data
└── setup.ts # Test environment setup
docs/
├── testing/ # Testing documentation
└── PRD.md # Product requirements
All tests pass with 80%+ coverage:
| Area | Tests |
|---|---|
| Sizing Calculations | 39 |
| Shoe Conversions | 35 |
| Gear Analysis | 32 |
| Component Tests | 100 |
| Total | 206 |
- Classic Ski: height + 10-20cm (skill dependent)
- Skate Ski: height + 5-15cm (skill dependent)
- Classic Poles: height × 0.83
- Skate Poles: height × 0.89-0.91
- Ski Length: chin to forehead height (skill dependent)
- DIN: 1-12 (weight and skill dependent)
- Boot Flex: 60-140 (skill and gender dependent)
- Board Length: height - 15-25cm (skill dependent)
- Waist Width: based on boot size
- Skate Size: shoe size - 1.5 (runs smaller than shoes)
Private - All rights reserved