Jean-Luc Makiola 480abdd17f feat(34-06): wire useTranslation into 10 remaining components
- ThreadTabs: tab labels (gear, planning, setups) via collection namespace
- PlanningView: section title, tab labels, empty state steps, CTAs via threads namespace
- TotalsBar: 'Sign in' link via common.auth.signIn
- ThreadCard: resolved badge and candidate count (plural) via threads namespace
- PublicSetupCard: by/anonymous and item count (plural) via setups namespace
- SetupImpactSelector: compare dropdown placeholder via setups.impact.compareWith
- ClassificationBadge: base/worn/consumable labels via collection.classificationBadge
- ImpactDeltaBadge: add mode label via setups.impact.adding
- ImageUpload: click-to-add, error messages via common.imageUpload
- DashboardCard: skipped (renders props only, no hardcoded UI strings)
- Add card, planning keys to en/de threads.json
- Add classificationBadge, tabs, totals keys to en/de collection.json
- Add card.by, card.anonymous, impact.compareWith to en/de setups.json
- Add imageUpload keys to en/de common.json
- Build passes, all 19 i18n parity tests pass
2026-04-17 20:26:50 +02:00
2026-04-09 15:18:36 +02:00
2026-03-14 20:07:01 +00:00

GearBox

A web app for managing gear collections (bikepacking, sim racing, etc.), tracking weight and price, and planning purchases through research threads.

Features

  • Organize gear into categories with custom icons
  • Track weight and price for every item
  • Create setups (packing lists) from your collection with automatic weight/cost totals
  • Research threads for comparing candidates before buying
  • Image uploads for items and candidates

Deployment

GearBox is deployed via Coolify as a Docker image with separate services for dependencies.

Required services:

  • PostgreSQL 16 — primary database
  • Garage (or any S3-compatible storage) — image uploads
  • Logto — OIDC authentication

GearBox image: gitea.jeanlucmakiola.de/makiolaj/gearbox:latest

See .env.example for required environment variables.

Updating

CI pushes a new Docker image on every release. Coolify auto-deploys when the image tag updates.

Database migrations run automatically on startup via entrypoint.sh.

Tech Stack

  • Runtime & Package Manager: Bun
  • Frontend: React 19, Vite, TanStack Router, TanStack Query, Tailwind CSS v4, Zustand
  • Backend: Hono, Drizzle ORM, PostgreSQL
  • Storage: S3-compatible (Garage, Cloudflare R2, AWS S3)
  • Auth: OIDC via Logto

Local Development

Prerequisites

  • Bun installed
  • PostgreSQL, Logto, and Garage running (via Coolify test instance or locally)

Setup

  1. Install dependencies:

    bun install
    
  2. Copy and configure environment:

    cp .env.example .env
    # Edit .env with your service URLs and credentials
    
  3. Start the development servers:

    bun run dev
    

    Starts both the Vite frontend (port 5173) and Hono backend (port 3000).

Open http://localhost:5173 in your browser.

Commands

  • bun run dev — Start dev servers (frontend + backend)
  • bun run build — Build production assets
  • bun test — Run tests
  • bun run lint — Lint with Biome
  • bun run db:generate — Generate Drizzle migrations after schema changes
Description
No description provided
Readme Apache-2.0 6.2 MiB
v1.4.3 Latest
2026-04-04 09:19:40 +00:00
Languages
TypeScript 73.1%
HTML 26.7%
Shell 0.1%