In times of emergency in a school, whether it is a fire, tornado, shooting, or other emergency situation, there is often a grey area surrounding the well-being and location of students. After recent news reports that have dealt with these situations, we felt that it was important to create an application that solves this very problem.
What it does
Beacon, in practice, should be rolled out by a school system. The system would issue a username and password to each student, teacher (or other trusted staff member), and administrator, with each level having different access privileges. In the event that an emergency occurs, a student logs into Beacon, and triggers their beacon into an "on" state. This sends administrators and teachers their location, in order to ensure their location and well-being. As well, Beacon incorporates a crucial feature that allows users to mark any other people they may have with them as at their same location. Through this feature, if, in a dire situation, only a few members have access to a network-connected device, Beacon continues to allows those network-connected individuals to account for others. Teachers, similarly, can mark students as present at a certain location. Administrators can view the locations of all students via a map, and can see who and who has not marked themselves as "on." This allows administrators to have a grand overview of the entire school system's status in the event of an emergency.
How we built it
We decided that, since coverage would be very important, we should use a cross-platform development method. We chose to use Google's new Flutter library, which enables cross-platform development across iOS and Android using the Dart language. Thus, we created an app using Flutter which can run on both iOS and Android - this app would be used by the Students and Teachers. We additionally created a backend running on TJ Director using Django. We created a webpage for the Admin side of things, using Mapbox and JQuery.
Challenges we ran into
None of us were familiar with Dart prior to this, so it was a challenge to learn the language and the Flutter library, but after a bit of experimentation, we discovered that Flutter and Dart are relatively easy to work with, and build easily off of our previous experiences with other languages. We additionally had problems implementing the map with Mapbox on the admin side of things. We had some difficulties with linking our backend to the frontend initially, but after creating brief API docs we resolved this.
Accomplishments that we're proud of
We're very proud to have real-time location tracking working in a cross-platform environment. Additionally, we're proud to have targeted three different platforms (Android, iOS, and Web) with one 24-hour project, as this was a major undertaking to complete. We hope that the functionality that Beacon provides will enable it to make a significant social impact in schools across the country.
What we learned
Dart, Flutter, Mapbox, code organization, design the API ahead of time!
What's next for Beacon
We'd like to add a ListView that better displays where students are and which ones have not yet checked in. As a long term goal, we'd like to add NFC support so that students could "tap-in" at points around a school to ensure their location and safety.