Code Monkey home page Code Monkey logo

dawgmaps's Introduction

DawgMaps

Built for the Hack'20 hackathon.

Hackathon Submission

Original webapp repo

Original android app repo

Contributors:

Inspiration

We were inspired by efforts to improve student safety and contact tracing on campus to create a heatmap that allows users to avoid the most crowded areas. We hope to help students engage with campus facilities and businesses while respecting social distancing guidelines. However, the app can be used anywhere, not just on college campuses!

What it does

In response to the COVID-19 pandemic and the growing need for responsible social distancing, DawgMaps provides users with real-time information about large gatherings and crowds in their area to help users avoid them. We designed a native Android mobile app to crowdsource real time location data, compile it into a cloud database, and display it on a webapp that generates population density heat maps. The native app displays the webapp and collects all the other information in the background allowing users access to the heatmaps on any platform. Additionally, the native app has functionality that detects when a user enters a sufficiently dense crowd. When that happens, the app issues a notification to remind the user to wear a mask.

How it was built

We programmed the native app in Java using Android Studio. We used React and the React Google Maps API for the heatmap web app. We used Firebase Firestore to store location data. Fast and efficient nearby user lookup is accomplished via variable-precision geohashing. This allows us to quickly and accurately find users near a location at a specified precision.

Challenges we ran into

Most of our team members were new to React, so we initially had difficulties learning how to integrate the Google Maps API in React. Additionally, a central component of this project is Firebase, as it was used as a connection between the webapp and the Android native app, and since our team was inexperienced with using Firebase at all learning on the fly proved to be one of our biggest challenges.

Accomplishments that we're proud of

We were able to have the functionality of the heatmap supported on both mobile and desktop and make the UI simple and intuitive. Additionally, we set up an efficient database structuring that allows for fast user lookups. This allowed us to only request and render data in the area being viewed by the webapp, decreasing bandwidth usage and improving responsiveness.

What we learned

We learned a lot about how to integrate the Google Maps API into a React component and update the map’s component state to center around the user’s chosen location. We learned how to navigate user data permissions and ensure users are aware of what data is collected on them and how it is collected.

What's next for DawgMaps

We plan to have the app compile statistics for places of interest so we can display trends for each place, indicating how busy each place usually is at any time. Additionally, we’d like to partner with the UW contact tracing app to allow location updates from a wider demographic on the UW campus. Finally, not fully relying on the native app would be ideal. We would like to find alternative methods of detecting crowds of people, possibly by pinging cell phones from cell towers.

dawgmaps's People

Contributors

abhaybd avatar karkeys360 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.