FC Monogram Crest
Francesco Castaldi
PILLAR II • AUTOMOTIVEFOLIO ID: bike-garage-tracker

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.

TypeScriptReactPythonCyclingGPXFleet ManagementSQLite
Architecture diagram of Bike Garage fleet lifecycle management, relational component mounting ledger, and GPX telemetry ingestion

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.

ARCHIVAL EXCERPT
[!TIP] > This entry documents both public repositories in the suite: [bike-garage](https://github.com/FrancescoCastaldi/bike-garage) (TypeScript/React Web App) and [Bike-Maintenance-Tracker-Application](https://github.com/FrancescoCastaldi/Bike-Maintenance-Tracker-Application) (Python/SQLite Desktop & CLI Suite).

Fleet Architecture & Repository Comparison

Capability`bike-garage` (Web Platform)`Bike-Maintenance-Tracker-Application`Operational Benefit
Runtime StackTypeScript, React, Tailwind CSS, VitePython, SQLite, Tkinter / CLICross-device web + offline desktop access
Component SwappingInteractive drag-and-mount wheelset/chain ledgerRelational SQLite component historyExact mileage attribution per part
Ride IngestionClient-side GPX / FIT file parserAutomated batch log importerZero manual distance entry
Service AlertsColor-coded SLA progress bars (Warning / Critical)Automated maintenance report generatorPrevents 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.

LINKED COMPETENCIES & ARCHIVAL TRACEABILITY

Cycling Telematics & Wear Analytics↗Full-Stack & WebGL Development↗
Examine Upstream RepositoryConsult Live Demonstration
Return to Selected Work