Guava is a Windows Phone app that tracks user's athletic activities and posts them onto the social network, Strava. The app also allows users to see what their friends are up to, search for popular places to ride in their area, and use many other tools that use the Strava network. Guava is basically a mobile app that gives Windows Phone users a way to access Strava's key features.
For some background information, Strava is an activity-based social network that is already popular on iOS and Android. It is mainly used for cycling, but is popular with runners too. What makes Strava unique is that users can designate a section of their activity as a "segment", which creates a leaderboard. This leaderboard serves as a virtual race, in which users compete for the KOM (king of the mountain). Segments can be made from anything, ranging from a 100 mile road loop to a 10 second section of a technical trail descent. When users upload an activity to Strava, it automatically scans the ride for segments and ranks the user accordingly. Currently, there is no official Strava app on Windows Phone.
When Strava released version 3 of their API, I saw an opportunity to give Windows Phone users a way to use Strava on their phone. My goal was to make an application that would provide the basic functions of the official Strava app, these being ride recording, reviewing your own ride, and an activity feed in which you could see your friends' rides. Guava does all of these and more.
Guava's recording function is simple, but user friendly. To record, the user just has to tap the record button, and go out on their ride. One thing that I worked hard on was getting the recording to continue while the app runs in the background. This means the user can look at a map, listen to music, or lock their phone, and the app will still record. When the user finishes the ride, they can just go back to the app, press the finish button, title their ride, and upload. All uploads are automatically saved to the phone for backup in case the upload fails, so the user can go into the "Saved" menu and upload again. Development wise, the recording is simple too. While the activity is being tracked, the GPS runs an event each time a new location is recieved. This location is stored as coordinates with a timestamp in the phone's memory. When the user uploads the ride, the app formats this data into a GPX file and sends it to Strava. Strava then processes the file and looks for segments, etc.
Guava also integrates the social network aspect of Strava. Using the activity feed, profile page, and friends list, the user can look at their own and their friend's activities. Due to limitations of the API, the app does not incorporate commenting or "kudo-ing", but if they are ever added to the API I plan to add them to Guava. It also cannot look at a friend's activitiy directly from their profile due to API limitations, however they can be accessed through the Activity Feed.
My favorite part of the app is the Explore page. It was also the trickiest to make. Basically, the user is presented with a map, and they can zoom into a certain area. From there they hit "Load segments" to see the most popular segments in the area, along with the leaderboards for those segments. This is cool because users can now find new places to ride no matter where they are. When I was developing this, I was having troubles on where to place the list of popular segments, as it was always cramped. Accidentally, I placed the list over the map. However, with a transparent background, it gave a layered look to the app, and was a great use of space. I decided to just disable the map scrolling when the list was up, and I think it works well.
The app is listed for free in the marketplace, and currently has nearly 1,700 downloads. I've met some very helpful people who have worked with me to work out some bugs, and though there is still some minor things to fix, the app as a whole is working well. Making Guava was a huge learning experience for me, as I learned about the formatting of GPX files, how to use Strava's JSON-based API, and loads of User Interface skills, as well as how to create a reliable Windows Phone app in general (which uses C# and XAML, which both have many potential uses for future projects).
Thank you for considering my submission!