How angusrausch/bike_calculator works
Bike Calculator is a cycling web app for gear-ratio, rollout, and speed calculations, plus location maps and Strava-connected bike/activity views. The main workflow is a visitor choosing a calculator, supplying saved or manual drivetrain and tyre inputs, and receiving calculated results; maps and Strava provide separate product branches. The tree contains Java, Python, and Rust backend implementations, treated here as alternatives rather than a single chained service. Calculator API wiring is shown where supported by the sampled controllers; unsampled UI and map details are represented at their existing source paths.
Main entry points: App.js App routes · StravaRoutes.js Strava routes · key_controllers.py Integration endpoints · calculator_controllers.py Python calculator API
Components 23
Web interface
- App routes
front_end/src/App.js - Ratio view
front_end/src/Ratio.js - Rollout view
front_end/src/Rollout.js - Speed view
front_end/src/Speed.js - Maps view
front_end/src/Map.js - Strava routes
front_end/src/Strava/StravaRoutes.js - Strava dashboard
front_end/src/Strava/Dashboard.js - Strava bike
front_end/src/Strava/Bike.js - Strava activity
front_end/src/Strava/Activity.js
Bike calculations
- Python calculator API
back_end_python/bikecalc/calculator_controllers.py - Python calculations
back_end_python/bikecalc/calculator.py - Java calculator API
back_end_java/src/main/java/com/bike_calculator/bike_calculator/CalculatorController.java - Java calculations
back_end_java/src/main/java/com/bike_calculator/bike_calculator/Calculation.java - Rust calculator API
back_end_rust/src/controllers/calculator_controllers.rs - Rust calculations
back_end_rust/src/calculator.rs
Bike data
- Python data access
back_end_python/bikecalc/database.py - Java repositories
back_end_java/src/main/java/com/bike_calculator/bike_calculator/CassetteRepo.java - Rust entities
back_end_rust/src/entities - PostgreSQL
External features
- Integration endpoints
back_end_python/bikecalc/key_controllers.py
Other components
- Visitor
- Maps provider
- Strava
Connections 24
- Visitor → App routes: opens
- App routes → Ratio view: routes
- App routes → Rollout view: routes
- App routes → Speed view: routes
- App routes → Maps view: routes
- App routes → Strava routes: routes
- Python calculator API → Python calculations: calculates
- Python calculator API → Python data access: loads saved gears
- Python data access → PostgreSQL: queries
- Java calculator API → Java calculations: calculates
- Java calculator API → Java repositories: loads saved gears
- Java repositories → PostgreSQL: accesses
- Rust calculator API → Rust calculations: calculates
- Rust calculator API → Rust entities: loads saved gears
- Strava routes → Strava dashboard: routes
- Strava routes → Strava bike: routes
- Strava routes → Strava activity: routes
- Strava routes → Integration endpoints: refreshes session
- Integration endpoints → Strava: exchanges tokens
- Maps view → Integration endpoints: gets map key
- Integration endpoints → Maps provider: provides key
- Strava dashboard → Strava: requests data
- Strava bike → Strava: requests data
- Strava activity → Strava: requests data