3D Interactive Maintenance & Component Tracking App for Specialized Diverge Comp Carbon (2021)
A web-based application that combines 3D visualization with practical bicycle maintenance tracking. Built with React, Three.js, and modern web technologies.
- 3D Visualization: High-fidelity 3D model of the Specialized Diverge Comp Carbon
- Component Tracking: Track wear, tear, and replacement schedules for all components
- Maintenance Logs: Keep detailed service history and maintenance records
- Interactive Features: Color customization, part inspection, measurements
- Educational: Visual guides for basic maintenance procedures
Version 0.1.0 - Initial Setup
- β Project structure established
- β Basic 3D visualization working
- π§ Component breakdown in progress
- π Planned: Maintenance tracking system
- π Planned: Component database integration
- Node.js 18+ and npm
- Modern web browser with WebGL support
- Git
# Clone the repository
git clone https://github.com/YOUR_USERNAME/diverge3d.git
cd diverge3d
# Install dependencies
npm install
# Start development server
npm run devThe app will be available at http://localhost:5173
npm run build
npm run previewdiverge3d/
βββ src/
β βββ components/
β β βββ bike/ # 3D bike components (Frame, Wheel, Drivetrain, etc.)
β β βββ ui/ # UI components (Controls, Panels, etc.)
β β βββ maintenance/ # Maintenance tracking components
β βββ contexts/ # React contexts (BikeData, MaintenanceLog, etc.)
β βββ hooks/ # Custom React hooks
β βββ utils/ # Utility functions
β βββ assets/
β β βββ models/ # 3D model files
β β βββ textures/ # Texture files
β β βββ data/ # Component specifications JSON
β βββ styles/ # Global styles
βββ public/ # Static assets
βββ docs/ # Documentation
- Frontend Framework: React 18
- 3D Rendering: Three.js via @react-three/fiber
- 3D Helpers: @react-three/drei
- State Management: Zustand
- Build Tool: Vite
- UI Icons: Lucide React
- Date Handling: date-fns
- Project setup and structure
- Basic 3D scene with placeholder geometry
- Component modularization
- Specialized Diverge frame geometry
- Accurate frame modeling from PolyCam scan
- Wheel assembly (rims, spokes, hubs, tires)
- Drivetrain (crankset, chainrings, cassette, chain)
- Handlebars and stem
- Saddle and seatpost
- Fork and headset
- Brake system (calipers, rotors, levers)
- Shifters and derailleurs
- Cables and housing
- Pedals
- Bottle cages and accessories
- Component database with specifications
- Maintenance log system
- Wear tracking algorithms
- Service interval reminders
- Parts replacement history
- Component highlighting and selection
- Detailed component views
- Color customization
- Measurement tools
- Maintenance guides overlay
- AR view (mobile)
- Export maintenance reports
- Component comparison
- Integration with cycling computers/Strava
- Community maintenance tips
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Lint codenpm run format- Format code with Prettier
- Bike Components: Each major part (frame, wheel, etc.) should be its own component
- Modularity: Keep components small and focused
- Performance: Use instancing for repeated elements (spokes, chain links)
- Data-Driven: Component specs should be in JSON, not hardcoded
- Maintenance Context: All components should be trackable
Each component will have:
{
id: "front-wheel-rim",
name: "Front Wheel Rim",
category: "wheels",
manufacturer: "Roval",
model: "Terra CLX",
installedDate: "2021-06-15",
mileage: 2450,
condition: "good",
nextService: "2024-08-01",
serviceHistory: []
}This is currently a personal project, but feel free to:
- Report bugs via Issues
- Suggest features
- Fork and experiment
MIT License - feel free to use this for your own bike maintenance tracking!
- Specialized Bicycles for making the Diverge
- Three.js community for amazing 3D tools
- React Three Fiber team for the excellent React integration
For questions or suggestions, please open an issue on GitHub.
Built with β€οΈ for cyclists who love their bikes