How I hacked my first profitable side project ever

by building on a personal frustration shared by many

A little over a year ago, my roommates convinced me to give Strava a try. I had always used Nike+ to track my runs, so I had a decent running history stuck within their systems. Still, they seemed to be having a lot of fun with this new app and its community, so I reluctantly decided to give it a go.

It felt truly empowering to buy into this new tight-knit community of like-minded runners. I was hooked.

The community behind the app quickly appealed to me. Strava appeared to have succeeded in building a true social network around sports. With Nike+ on the other hand, I had long lost hope of having friends on the platform — I assumed it’d just never really take off in Europe.

With this new app, I was already receiving kudos from friends and followers, was able to find runners I had crossed path with, and basically found a new excitement to go out and run. It felt truly empowering to buy into this new tight-knit community of like-minded runners. I was hooked.

Now that I was convinced the cool kids were over at Strava, I was left with the realization that Nike did not provide a single export option. I had no intention of leaving my running history behind—it made up over 7 years of personal bests and milestones… So, I did what I usually do and started to look for a way around Nike’s systems.

Poking around with their apps, I noticed they did provide an API and a Console to test it out. While that would not make for an optimal entry point, it would be enough for me to get my data out. Within the next couple hours, I had a working Python script that could generate GPX files based on the data stored on Nike’s servers. Hooking up into Strava’s API proved to be extremely easy, and I had already moved my whole running history by the end of the day.

I had a hunch I might not be alone in this situation. A quick Google search proved me right as lots of Facebook posts, blogs, and Strava’s Support forums were discussing the issue.

That was nice and proved the whole idea worked, but I had a hunch I might not be alone in this situation. A quick Google search proved me right, as plenty others were already discussing the issue on Facebook, blogs, and even in Strava’s very own Support forums. That’s when it dawned on me: I could be bringing something really useful to others. I simply had to make it pretty and easy to use, and it would be ready for primetime.

After a bit more polishing, adding emojis left and right (even in the URL: 🏃.vinz.xyz!), the tool was finally done. I put it up online, shared the link on the pages that my Google search had brought up, and went on with my day. At first, there were not many people on it. Then, it kind of snowballed.

We went from a dozen users to a couple hundred in a matter of days. Week after week there would be more people joining. I had to up the machine behind the app, throwing a few bucks into something more robust that would handle the growing load.

After a couple of weekends and late nights, the tool had decent traction and users in the low thousands. Then, out of nowhere, someone actually asked if there was a way to donate some money. Turns out he found the tool to be extremely useful, saving several years worth of runs. I obliged, quickly set up a dedicated PayPal account and got my first donation: 25 EUR. Small money. Big thrill.

“Love your exporter, would definitely pay if you found a way to make it entirely automatic” — unwitting benefactor

Slowly but surely, donations kept coming in and actually managed to pay for the maintenance and lightweight infrastructure behind the tool. I was receiving money from exotic places, in even more exotic currencies, and as it happened I felt the tool managed to make me travel a bit. At least virtually 🌴

A few months passed by, then someone sent me the following: “Love your exporter, would definitely pay if you found a way to make it entirely automatic”. Thinking it over for a second, I agreed it was the right thing to do next. The Pro section was born and, for a one-time donation of either 10 or 25 euros, you would never again have to worry about your runs being stuck on Nike’s servers. All your running history, as well as any future run, would be transferred to your Strava account. Automatically.

So where do we stand now? Thirteen months in, we’re at one million runs exported for 11k users from 100 different countries (that’s more than half the planet covered 🌍). The Pro section, launched earlier this year, has already seduced 200 runners — netting a small but exciting profit! Check out the Live View for up-to-date stats.

Each dot is a Pro runner, forever free from Nike’s soft-lock 👌

The big lesson I take home is to focus on building on a pain you’ve definitely felt yourself. If that pain is shared by many, and your execution is good, the rest will follow. Because it’s a side project, try to keep it lean, cut the crap, and focus on providing a valuable service. You can really feel it when it’s solving a real issue. Heck, some might even ask you to build a paying version of it!

If you found that story interesting, please take a second to give it claps!