We were inspired by a combination of Pokemon GO and Instagram.
The name "breadcrumbs" is inspired by stories such as Hansel and Gretel, where they drop breadcrumbs to mark their path as they venture through the woods.
What It Does
It is a location-based social media. Similar to Pokemon GO, landmarks are marked on the map and are not interactable until users are in range. Once they are, users can click on the marker in order to view posts created for that location and add posts to that location.
It differs from the location tagging other apps such as Instagram provides in the sense that the user has to physically walk to a landmark to see the social media posts associated with it.
How We Built It
We used Java and Android for the front-end which contacts an Amazon EC2 linux instance which handles requests and uses Amazon EBS to store images. It is also connected to a MongoDB Atlas cluster which handles the metadata. The location services are handled through Radar.io which allows us to use geofences to create "PokeStops" which contain the posts from users, called "Crumbs".
Challenges We Ran Into
We had difficulty communicating data in a lifecycle-aware way between the different classes and activities in Android. One prominent challenge was taking the data about the user, location, and tracking events received by a receiver in Radar.io's SDK, and passing it to Google Maps. The difficulty stemmed from giving the Map the ability to know when the receiver received something. Radar.io does background tracking using a static and public receiver class, which is implemented (according to documentation) on its own, not nested in any activities, while our Google Map implementation was in an activity.
It was also challenging to handle the networking due to our collective lack of experience with properly formatting http requests.
Accomplishments We're Proud Of
We had managed to create a complex confluence of several different technologies in order to create a cohesive product which can act as a foundation for several different services.
Nikita is proud that she figured out how to dynamically add markers into Google Maps according to the geofence coordinates received from Radar.io. This eliminates the need for hard-coding in latitude and longitude coordinates to create markers, which is ideal if this app were to expand as an actual product as it is extremely unoptimal to manually create every single geofence spanning the entire globe.
What We Learned
We learned how to abstract away database and location services using MongoDB Atlas and Radar.io. We also learned how to properly handle location data when communicating over HTTP connections.
What's Next For breadcrumbs
The app we have created here can act as a foundation for many services. It could be used to make a more social form of geocaching. It could encourage social gatherings in order to promote events. It could even be used as an alarm system so that other people are able to find you in emergencies by making the users themselves geofences using Radar.io.