Our story revolves around the creation of https://sherpa-map.com, a new player in the Cycling Route Creation arena.
A year ago, after being forced out of our apartment due to a 22% hike in rent, my brother and I persuaded our friend to find and move into a new, spacious, apartment with us. There was just one small condition: we had to accommodate his server. While he mainly used it for Minecraft hosting and Plexshare, I had different aspirations—namely, building an app!
However, with only my rudimentary programming skills at the time, my roommate's server-specific expertise, and my twin brother's background in biomedical science..., what could we create?
All three of us are passionate cyclists. In fact, a major reason for moving was to accommodate our many bicycles—we each had 4 or 5 bikes! During a chilly Wisconsin winter, it dawned on us: we could leverage our cycling knowledge to develop a tool in an area we deeply understood—cycling routing. No existing tool met our needs, as creating a route requires understanding road surface types, weather conditions, elevation, traffic, and more. Juggling multiple websites, constantly switching between tabs, making assumptions—trying to carve out the ideal route was a massive challenge.
We began by creating a rudimentary version of our envisioned tool: a website with a map that allows users to click between two points and generate a route. Furthermore, we wanted to add a unique feature that would enable users to overlay road surface types onto the map, assisting in choosing routes based on bike type.
The site's first iteration was modest, accessible only locally and didn't even require server space. But, with the integration of leaflet, OpenStreetMap, and the leaflet route machine combined with the Overpass API, it worked!
Our excitement grew. My brother dove into frontend development, complementing my general programming capabilities. We then reinvested money, which we'd typically spend on bike parts, into expanding our server setup.
We enhanced the site by hosting both the OpenStreetMap Database and the open-source routing software, Graphhopper, locally. This gave us complete control over our cycling routing profiles and let us implement auto-generation of routes, create account databases, and add various other features.
Our server setup expanded to 3 physical servers, boasting nearly 1TB of RAM, 10TB of enterprise SSD storage, and 5 physical CPUs, much to the detriment of our electricity bill.
While we've developed what we consider to be a fantastic site, it's always been about passion. Developing something we believe in and personally use, rather than a mere money-making venture, has been our primary motivation. This drive has significantly expanded our skills and broadened our horizons.
For instance, while most cycling routing tools rely on OpenStreetMap for road surface data, this database has manual entries, leading to incomplete information. To address this, I devised an algorithm to extract 200,000 images of roads, labeled with their surface type. I then trained two Pytorch ResNet-50 CNN AI models to discern road surfaces from satellite imagery. I integrated this into an algorithm that lets users classify previously "unknown" road surfaces. Here's a demo: https://i.imgur.com/ycs7pEe.mp4.
Our journey has seen many experiments. We've recently started developing React-Native Android and iOS app versions of our site.
I've also had to navigate corporate interactions, like partnering with Garmin to integrate a "send to Garmin" feature.
In just six months, we evolved from a basic tool riddled with glitches to a globally optimized app boasting mobile responsiveness (although, still best accessed on Desktop!), auto-route generation, user accounts, and more. From having no online visibility, we now appear on Google searches and have a growing user base.
We're continually evolving, innovating, and brainstorming. Our journey is ongoing, and we have a plethora of ideas in the pipeline.
Sharing this passion project is as thrilling as working on it. My journey saw me transitioning from a basic C# user to a multifaceted web developer. On a lighter note, I even integrated the ChatGPT API with our do_not_reply@sherpa-map.com email, programming it to reply sarcastically!
Both my brother and roommate have grown tremendously through this endeavor. Overall, this is just the beginning. We expanded globally merely two months ago, and we're never running out of ideas.
Like many of you, we thrive on feedback, insights, and shared experiences. We'd be immensely grateful for any constructive criticism, thoughts, or suggestions.