Inspiration
At night, students can often find SafeWalker student volunteers wearing yellow jackets around Brown’s campus. Together, the student and volunteer will walk to the student’s target location. Historically, and with recent events and corresponding increased security on campus, this program helps students feel safe or less lonely walking around campus. However, currently, students have to either tag a safewalker on the street or call a central phone number to access this program. This makes the program underutilized. We propose SafePulse, a convenient mobile app to pair students with safewalkers.
What it does
SafePulse provides a student view and a volunteer view. To log in, both students and volunteers need to be authenticated with their Brown accounts. The student begins a session by clicking a “request” button, which asks for their current location and a destination location. The SafePulse server will match the student with a nearby volunteer who is actively logged in on SafePulse. Once matched, the student will receive a code, which the SafeWalker, after meeting up with the student at the source and target location given to them, enters in the code and begins a session. When the student arrives at their target location safely, they can end the session, in which the SafeWalker can then receive another request. The student may cancel the request at any time during the matching. Once the SafeWalker finishes their shift, they can log off.
How we built it
The frontend was built on TypeScript and React Native using the Expo library which allows us to develop mobile apps. Then we use Xcode’s pairing to allow us to have the app on our devices/emulators. Additionally, we used AWS Cognito with Google Authentication for the log in features and security verification. We used https to connect with the backend and had threads that polled information periodically to make sure the locations of the safe walkers were up to date.
For the backend, we used Go and we deployed it on AWS. We implemented endpoints to handle events such as matching student to SafeWalkers, using the A* algorithm to calculate the closest SafeWalker to a student's location. The backend also maintains the state of available SafeWalkers and realtime locations of student and SafeWalker.
Challenges we ran into
Issues with apple accounts and Xcode as well as some network connectivity issues with the backend.
Our main challenge was trying to connect an embedded device with the frontend interface. Originally, our plan was to connect an arduino system to the frontend of the application that would turn on an LED light and play a noise through a speaker when the volunteer accepts a request. After wiring up the circuit, we wanted to use AWS’s IoT to handle the communication between the arduino and the frontend, but we had some issues with using the IoT service.
Accomplishments that we're proud of
Hosting it in AWS and also having it as an app on our phones.
What we learned
During the little over a day that we worked on this project, we had a lot of minor bugs that we overcame. We learned that development usually doesn’t go smoothly and that we need to be able to pivot our designs fast in a high pressure setting.
What's next for SafePulse
Adding an embedded component that will vibrate and use LEDs to signal the safe walkers they have been matched with a student and for the students to see the lights flickering and know who to look for when waiting for the safe walkers to arrive. Implement features so that the SafeWalker will not receive any new requests if they are at the end of their shift.
Log in or sign up for Devpost to join the conversation.