Bike Garage & Maintenance Suite · Fleet Lifecycle & GPX Analytics
Unified cycling fleet management ecosystem spanning the modern TypeScript/React web platform (bike-garage) and the companion desktop maintenance tracker (Bike-Maintenance-Tracker-Application). Tracks component swaps, cumulative elevation gain, GPX route histories, and automated service thresholds across road, gravel, and time-trial bicycles.
Multi-Bike Fleet & Component Lifecycle Management
Cyclists managing multiple bicycles (road racing, indoor trainer, winter/gravel) frequently swap wheelsets, cassettes, power meters, and chains across frames. Tracking component mileage independently from frame mileage requires a relational component-to-bike mounting ledger.
Fleet Architecture & Repository Comparison
| Capability | `bike-garage` (Web Platform) | `Bike-Maintenance-Tracker-Application` | Operational Benefit |
|---|---|---|---|
| Runtime Stack | TypeScript, React, Tailwind CSS, Vite | Python, SQLite, Tkinter / CLI | Cross-device web + offline desktop access |
| Component Swapping | Interactive drag-and-mount wheelset/chain ledger | Relational SQLite component history | Exact mileage attribution per part |
| Ride Ingestion | Client-side GPX / FIT file parser | Automated batch log importer | Zero manual distance entry |
| Service Alerts | Color-coded SLA progress bars (Warning / Critical) | Automated maintenance report generator | Prevents mechanical failures on race day |
*Table 1: Bike Garage & Maintenance Tracker Ecosystem Matrix*
// TypeScript: Attributing ride telemetry only to currently mounted bike components
export interface MountedComponent {
id: string;
name: string;
mountedOnBikeId: string | null;
accumulatedKm: number;
serviceIntervalKm: number;
}export function applyRideToMountedComponents( components: MountedComponent[], bikeId: string, rideKm: number ): MountedComponent[] { return components.map((comp) => comp.mountedOnBikeId === bikeId ? { ...comp, accumulatedKm: Number((comp.accumulatedKm + rideKm).toFixed(2)) } : comp ); } ```
Highlights
- Granular Part Hierarchy: Tracks framesets, wheelsets, tires, sealant refills, chains, cassettes, cables, and Bottom Bracket bearings. - Live Web Deployment: Hosted on GitHub Pages with instant local storage export/import.
