For those interested in the technical implementation:
I built VeloPlanner with my favorite tech stack: Elixir/Phoenix, React, and MapLibre GL JS. The architecture is a hybrid approach:
- Phoenix controllers for static content (route guides, listings)
- Phoenix LiveView for most of the forms
- React for the planner and interactive maps where high performance is critical
One of the bigger technical challenges was self-hosting all the infrastructure - I'm running my own map tile server and routing engine (Graphhopper) on beefy servers with lots of RAM to maintain full control over the cycling-specific routing algorithms. The memory requirements are substantial, especially for processing large-scale route data across multiple regions.
This approach lets me customize the routing to prioritize official cycling routes while still giving users flexibility when planning custom segments.
Happy to dive deeper into any specific aspect if there's interest!
- Phoenix controllers for static content (route guides, listings)
- Phoenix LiveView for most of the forms
- React for the planner and interactive maps where high performance is critical
One of the bigger technical challenges was self-hosting all the infrastructure - I'm running my own map tile server and routing engine (Graphhopper) on beefy servers with lots of RAM to maintain full control over the cycling-specific routing algorithms. The memory requirements are substantial, especially for processing large-scale route data across multiple regions.
This approach lets me customize the routing to prioritize official cycling routes while still giving users flexibility when planning custom segments.
Happy to dive deeper into any specific aspect if there's interest!