It's probably no secret that I'm a big fan of Strava. As a runner who also happens to be a massive geek it nicely fulfils my need to meticulously track all my workouts so I can look back over them, compare them and genererally over-analyse them in glorious detail.

Strava also has a reasonably full-featured API, so when we were pitching ideas to work on at our annual 'Hack Farm' (a week away with the whole company where we put our heads together to hack on some passion projects) I put forward a suggestion to build what I initially conceived of as a 'Timehop for Strava'.

The basic premise was that, for people such as myself (who run year-round and who's schedule of training and race follows a fairly similar annual pattern) it would be nice to get a reminder - probably at the end of each month - of what the that month's training had looked like one year ago. The reminder might be some sort of summary email or a nice visual report, but regardless of form it would let you see at a glance how this year's training was stacking up against last year's, and also probably pull out a few highlights from the month (races, particularly epic runs/rides etc) as a nice reminder of some of the cool things you got up to during that same period last year. As it stands, Strava has some great data visualisations but it doesn't (currently) have much in the way of year-on-year comparison tools, so it seemed like a fun project to work on. It was also of relatively small size, which meant that we could potentially even ship a rough alpha at the end of the week.

Exploring the idea

A few other people were keen to work on a Strava-based project, so on the first day we started picking apart the idea in a bit more detail. We quickly realised that in it's current incarnation it would obviously only be useful to people who had been using Strava for more than a year, so we looked at how we could broaden it's user-base, and slowly the idea morphed into more of a tool to deliver users a nicely packaged 'monthly report' of their last month's activities. If you had been using the service for long enough the report would include a comparison of that same period a year ago, but if you were new to Strava it would still have value, aggregating your stats from the last month and presenting them in a nice, visually pleasing way.

Now Strava certainly does have tools for looking at your last month worth of training in various ways. So how would this idea provide some added value over and above what is already available? We came up with a number of ideas:

  • Push rather than pull - Email it to the user (either in full or in summary form with a link to the full report), rather than have them have to remember to go online and check up on it every month.
  • Make it meaningful - Add meaningful comparisons to help 'humanise' the data. For instance, compare the monthly aggregate distance to (for example) the distance from London to Paris, or the top speed measured in the month to the top speed of an animal ("Great going - you're nearly as fast as a Cheetah!").
  • Help people (over?)share - Provide a shareable/embeddable view of the monthly report that people can use to share from their social media profiles on services like Twitter and Facebook.
  • Add context - Pull in data from other services to support making meaningful comparisons between periods and to add context, such as aggregate weather data or even the user's own Tweets just before a race that took place the year before.

With a direction set, we were ready to start work... but first we needed a name. My suggestion of 'Strove' was not too well received and thanks to a timely suggestion by our new intern (and fellow ultra runner) James we went with Strata. Although it would probably be too close to 'Strava' to use if we actually turned it into a live project we liked how it implied historical layers of data, and it gave us an easy strapline - dig deeper.

Putting it all together

With the name established, Andy got down to thinking about how the reports could best be structured, Jon got his crayons out to do some design exploration/moodboarding, Charlotte started looking at the different data types available and I started poking around with the API to get the oAuth authentication working so we could start making API requests.

The user-facing part of the app would be pretty straightforward. It would mostly just consist of a button linking to the Strava oAuth authentication page so that users could give us the necessarily permissions needed to access their data via the API. Once we had that, users would be emailed once a month with an email providing a summary of their last month's activity and a link to a fuller, more visual report. Obviously this would take a bit of wrangling on the back end to generate the reports each month, schedule the emails and so on, but the user facing side of the application should be nice and straightforward.

Strata oAuth Strata report

Unfortunately we very quickly found ourselves hampered by the almost complete lack of any internet connection at the place that we were staying, which certainly puts the brakes on API-based projects! However after the first couple of days we had managed to get together some rough design comps and a reasonable idea of how it would all fit together, as well as a small app running locally that was making (heavily cached!) requests to the API to pull down all the user's activities for the past month (and the same month for all previous years) as well as producing some aggregate data points and pulling out any particularly interesting rides or runs.

Strata app

Unfortunately at this point our progress stalled somewhat as Andy and Jon 'pivoted' to work on another Strava-based idea, and although Charlotte managed to make a good start on converting the design assets into HTML/CSS a stint on cooking duty meant that I couldn't get much further with the app itself. However, by the end of our time we certainly had a good proof of concept together, and with a little more time it's definitely something that I think it really could be a useful tool for keen Strava users to get an extra layer of insight on top of what the Strava site and apps already provide.