The Urthecast API offers an incredible service with which some amazing apps can be built. With satellite imagery and tracking, to name just a few, the possibilities are endless. The ability to see parts of the Earth from the opposite side of planet are made possible with Urthecast.

With that in mind, we wanted to inspire people to explore the world around them more and visit geographical landmarks they wouldn't otherwise think of visiting. We want to encourage people to explore new places, encounter new experiences and friends, and earn prizes for doing so.

What it does

Epoch is a mobile game that allows users to track down the position of satellites at various geographic landmarks to earn rewards. Think geocaching, but the geocache is 400 km above you, travelling at 17000 mph, and it circles the Earth about 16 times a day. It is quite literally taking geocaching to new heights.

How we built it

Using the Urthecast API, we built our own API for our android client using mongodb, express, and node. Our android client calls our API which in turn calls Urthecast's API in order to obtain information about the position and time-stamps of satellites. The processing, such as distance calculations and point totals are handled on our server-side node app and sent back to the android client for display.

Challenges I ran into

Well, let us tell you about heroku. We were ready to do our final round of testing this morning only to find that heroku had, simply put, died. Heroku is crucial as it hosts our node app which is the essential middleware between the android client and Urthecast's API. Finding a new deployment platform and then testing has been fun. As I write this, we are still finalizing testing. Hooray for crunch time!

JavaScript was interesting due to its asynchronous nature. One of our functions runs a for loop and within this for loop we have HTTP requests. It was our understanding that HTTP requests are started on separate threads while the for loop continues to iterate. Our loop ends and invokes a callback function before we have sent all our requests and received necessary data. We needed to play around with waterfalls and the placement of callback functions in order to combat this.

One of our teammates had a fever for all of Saturday so communicating ideas remotely and collaborating was difficult, but also showed the power of the tech we have as we were able to achieve quite a bit.

Urthecast's platform came out of private beta 2 days ago. So, there wasn't Stack Overflow (dun dun dunnnn). All kidding aside, it is a brand new platform that was a lot of fun to work with but we had to learn a lot of new information in a short period of time to figure out how to use the API and what we needed to get and send to their endpoints. The Urthecast team was very helpful this weekend. Special thanks to Kyle, Nate, and Alex from Urthecast for their help this weekend.

Accomplishments that we're proud of

Our API works famously. It connects fantastically to Urthecast API and receives and sends the right data very consistently.

The algorithm to dynamically generate a list of challenges available to a user was very difficult, but we managed to implement. The points algorithm was easy conceptually but quite a bit of data had to be processed to generate the correct output.

"The android app in general because Ian is a g" -Banky, September 2015

What We Learned

Have a back up plan for deployment on the back end, waterfalls in JavaScript. We learned a lot about satellite tracking, geoJSON, and a lot of geospatial stuff.

What's next for Epoch

Oculus Rift integration, general updates and improvements, bonus points system implementation, and a social aspect (i.e. leaderboards)

Share this project: