Inspiration
The four of us have each had several issues with social anxiety over the course of our life. Since we wanted to work on a problem that we all resonated with, we decided to define problem spaces related to one’s social life. We thought of several issues, and we eventually realized that one of the first steps in initiating a social connection is having the courage to approach someone. We decided to ideate in this space.
What it does
Meet Evince, the cheat code to initiating conversations with strangers! It does so by providing a platform for you to interact with people in your close current geographical proximity while eliminating the awkwardness of initiating a conversation that is tailored to your interest.
You begin by creating your profile, in which you select some of your hobbies and interests. Once your profile is set, and you have enabled discoverability, the application tracks your geolocation in real time, even in the background as a notification, and if there are other active users in close proximity to you who share similar interests, you are prompted to ‘connect’ with them. Once both parties accept to connect, their profiles are shared with each other. The app then prompts them with an icebreaker based on their common interests, and provides them with a quick messaging functionality to arrange a meet up in person in real time.
By creating an avenue to meet and interact with people in your vicinity, it enables you to move out of your comfort zone and overcome elements of social anxiety that may otherwise inhibit this behavior.
How we built it
The app is built primarily in Android Studio, coupled with the Google Maps, FireStore, and Distance Matrix APIs. To compute the distance, in meters, between individual location markers on even a minute scale (partially accomplishing the purpose of BLEs), we wrote a distance approximation algorithm, tracing the location periodically to update the Maps Marker. The Profile Page is presented when an individual with similar interests enters your geographic radius and you click on the Notification, prompting several icebreakers!
Challenges we ran into
One of the biggest challenges we ran into was with implementing a tool for detecting the location of users relative to one another. Our initial plan was to use bluetooth low energy as it would be more accurate than geolocation with GPS. However, we found that, with the lack of sound, existing APIs, it was extremely difficult to implement a well-functioning BLE based location detection system in our application given the development time frame of the project. As such, hours into our development, we made a tough, but necessary decision to pivot into a GPS based location detection system, as we could build it off the Google Maps API.
But, another challenge that arose as a result of this pivot, and the subsequent use of the Google Maps API was the inaccuracy in GPS location. Because the app aims to connect you, and start conversations with those around you, the greater the location precision, the easier it is to achieve the application’s purpose. But, because we were unable to use BLE, and GPS is less precise, this posed a tough systemic challenge, which we aimed to mitigate through tuning the hyper parameters.
Accomplishments that we're proud of
We are extremely proud to have successfully built a functioning android app that had several, different layers of complexities, given the time constraint. The google maps API is one feature we are particularly proud of, as tracking the location of the user instantaneously proved to be amongst the toughest problems we have collectively coded. We courageously explored areas that we have never before, and we learned on the go throughout the event.
We are also extremely proud of the way our team collaborated together and made decisions based on our strengths, as our team strength was often challenged by the difficulties with the task on hand.
What we learned
In our team, we had members with varying levels of experience with the primary platform we used for development – Android Studio. As such, members with little prior experience learned a lot on the go about using Android Studio, its workings, and how to develop interactive UI designs using XML.
A big component of our application was geolocation. All four of us worked together to understand and implement the Google Maps API into our application, and continuously retrieve each user’s location, while running our matching algorithm in the back-end.
Additionally, we explored communication between asynchronous tasks, especially when constructing the functions associated with Firebase. Given that data pulled from the database is not loaded in real time, it took extensive research and experimentation to see how we can store, retrieve and process that data in multiple implementations.
What's next for Evince
While brainstorming on day 1 of the hackathon, we had several ideas for where Evince would go, and what features it would contain. But, given the nature of a hackathon, and the limited time, we had to pick and choose which features were feasible to implement right now. Moving forward, we hope to complete full development of our application, as initially brainstormed, and build additional features, to improve its usability, functionality and accessibility – like BLE matching, detailed profile interests, NLP based ice-breaker generation, group conversations, among others.
Built With
- android-studio
- canva
- figma
- firebase-auth
- firebase-realtime-database
- firebase-storage
- flask
- git
- github
- google-maps
- java
- python
- vscode
- xml
Log in or sign up for Devpost to join the conversation.