WPI offers Student Night Assistance Patrol (SNAP) shuttles between 5pm-3am. SNAP is notorious for repeatedly pushing its ETA, and rides often take between 30-60 minutes to arrive. If SNAP cancels on a user, they have no choice but to walk to their destination.

A mock-up of the user interface was designed using Uizard, providing an overview of the applications features. These features include creating an account, logging in, searching for walkers nearby, and viewing registered user’s profiles.

A major challenge for us was that we wanted to create an interactive web interface but none of us had any Javascript experience, so we had to learn the language together as we built the platform. Another challenge of development was that, by the nature of our service, we are handling sensitive user data such as real time location and related contacts. Therefore, a major goal of the frontend and backend design was to ensure security of the processed information.

The backend infrastructure was built in Rust with the Rocket framework and sqlite as a database system. We used Rust due to its high performance, strong compile-time checking, and memory safety. Rocket allowed us to easily serve, receive, parse, and validate json data as well as use multiple worker threads.

Some other features that group members learned were coding in HTML and using the argon2 hash function to securely transmit and store passwords.

Inspiration

All members of our team have used the SNAP shuttle at least once at WPI, and we can relate to the frustration many people have when dealing with their service. On multiple occasions, we’ve begrudgingly chosen to walk home rather than wait an unpredictable amount of time for the shuttle, especially at late hours of the night.

What it does

The project provides a platform for WPI students to find peers to walk with as an alternative to SNAP or walking alone. In its current state, it allows for account creation, IP-based verification of WPI community membership, and buddy matching based on destination and current location using GPS. Other features that are partially implemented but could not make the deadline include the failsafe emergency contact system and integration with the WebUI.

How we built it

A mock-up of the user interface was implemented using Uizard, providing a preview of the application’s features and design. These features included creating an account, logging in, searching for walkers nearby, and viewing registered user’s profiles.

The backend infrastructure was built in Rust with the Rocket framework and sqlite as a database system. We used Rust due to its high performance, strong compile-time checking, and memory safety. Rocket allowed us to easily serve, receive, parse, and validate json data as well as use multiple worker threads.

Challenges we ran into

We wanted to create an iOS app at first, but then decided against it due to the $99 apple developer membership needed to get it to the app store. We decided on a mobile web app so that it could be used across any platform.

The same issue arose when we looked into sending an email to verify if a WPI email was being used during sign-up. The workaround for this was to use location data and coordinates to determine how far an individual was from campus (thus semi-confirming campus residency).

Learning new languages and skillsets was challenging yet rewarding! The internet helped a lot with looking up certain functions or implementations in code, especially with HTML formatting.

Accomplishments that we're proud of

We created a vision and framework for a novel community-oriented safety platform. Even though we weren’t able to get as far on a working prototype as we hoped, we still learned many new skills.

GOATHACKS 2023 was every member of our team’s first time participating in a hackathon. Due to our diverse background with one computer science major, one electrical and computer engineering major, and two robotics majors, it was at times challenging to create a project that highlights all of our skills, but ultimately, we were able to work together.

What we learned

Different members of our team had to learn different skills to work on different portions of the project. Skills our team learned include using Uizard, Javascript, HTML, SQL, JSON construction, parsing, and serving, and user credential handling.

What's next for oSNAP

Our team has several ideas for features that oSNAP could have in the future, including an advanced failsafe system to ensure the safety of the user and buddy, grouping system to efficiently walk multiple students to their destination at once, and a preferences form that would give users the option to give a range of features for buddies that they are comfortable walking with (features could include an age range, genders, and minimum rating).

Built With

Share this project:

Updates