Sometimes stepping away from the code helps you see the bigger picture. I hit pause on the backend and finalized the official CrankLogix jersey. It's styled in the same color palette I use in the app β with subtle AI circuit details and precision mechanic vibes.
It's more than merch β it's a flag for what this project stands for. Keep an eye out at upcoming MTB races in Arizona π
UI Refactor & Overhaul
I spent the a lot of time deep in the weeds, ripping out early UI scaffolding and rebuilding almost everything β layouts, navigation logic, form patterns, spacing, mobile behavior, the whole lot. What started as a quick refresh turned into a full-blown refactor. It was time-consuming, messy, and honestly kind of exhaustingβ¦ but worth it.
The new UI is cleaner, sharper, and more aligned with the vision I've been shaping since day one. Every view β from the Dashboard to the Garage and Ride Log β now feels more focused and intuitive. Mobile support still needs love, but the foundation is finally something I'm proud to build on.
πΈ Dropped in a few teaser shots of the updated interface β still evolving, but it's getting close to what I imagined. More soon.
AI Personas & Model Matchmaking
The agentic flows are finally doing things. The onboarding assistant now remembers your setup, asks relevant follow-ups, and evolves based on gaps in your answers. It's taken some serious iteration β refining prompts, tuning LangGraph nodes, and balancing how much memory to give each step.
Model testing has also been a journey. Mistral gave me clean structure, but lacked nuance. LLaMA handled technical edge cases better. Meanwhile, getting vLLM to play nice with CUDA and streaming was its own project. I've now settled into a hybrid setup: vLLM handles performance-critical tasks, with backups where it makes sense. It's not perfect β but it's working.
Building the Component Brain
As part of the RAG solution I've begun the process of collecting, validating, and organizing bike model and component data across major manufacturers and model years. This data forms the backbone of the CrankLogix suggestion engine β powering accurate default components during onboarding and improving inference for wear diagnostics.
I've started curating a proper knowledge base for bikes and components β brands, model years, compatibility mappings (SRAM vs Shimano), all that. This database is core to how CrankLogix will suggest defaults during setup and offer smart diagnostics later on.
Rather than just dump everything in, I're validating sources, filtering duplicates, and keeping the data structure lean but flexible. The idea is to let the AI reason intelligently about your bike without cluttering the system. Happy Fourth!
Architecture + AI Agents
I've locked in the target architecture: CrankLogix will run on a modular backend that supports both local and cloud AI workflows. Postgres and Redis handle persistence and caching, with optional offline-first operation and a single-user mode for now (multi-user will come later).
The first AI agent prototypes are live β early versions that help with onboarding, suggest components, and respond to ride feedback based on rider history. It's been fascinating to see how LangGraph-based flows and memory handling make these conversations feel a little more human.
Also wrapped up the IBM RAG and Agentic AI course β tons of ideas there I'm already testing. It's all still early, but things are starting to click.
Learning the Backend Stack the Hard Way
The backend is alive (mostly). Getting CrankLogix off the ground meant diving into SQLAlchemy 2.0, async patterns, and learning the not-so-fun parts of Alembic migrations β including what happens when you break your dev environment by accident.
I now have a solid Postgres setup with support for JSONB fields and full schema versioning. It can track historical changes, which will come in handy later for ride logs, component history, and smart diagnostics.
Frontend-wise, I've scaffolded the React + Vite app with Tailwind UI and adaptive routing. Early views are up for Garage, Rides, Maintenance Timeline, and AI Assistant. Also continuing to dial in the CrankLogix look and feel β dark mode included.
An Idea Is Born
The journey begins. I've been playing around with early ideas for CrankLogix β logos, color palettes, and typography that feel fast, clean, and just the right amount of nerdy. It's still rough, but the theme is shaping up: circuit lines meet mountain trails.
On the technical side, I've been sketching out what this app might actually do β and how it could use a rider's own data to improve their ride experience. I'm also realizing just how many choices there are when building a full-stack app. Frontend, backend, APIs, databases, AI layersβ¦ it's a lot to wrap your head around. But that's part of the fun. Thanks for following along β whether you're building something too or just curious, glad to have you on the ride.