Inspiration

The inspiration for this app came from the Citizens app as well as Princeton-affiliated apps built for the campus community, such as those developed by Hoagie Club, Princeton's app development club. I have always appreciated the Citizens app for delivering protecting news and information that citizens likely would not have known about otherwise. Inspired by their app model (and how many times I have gotten sick this past semester), I felt compelled to expand upon it by transforming it into a health-based app that alerted communities about contagions as opposed to crime.

What it does

  • Authenticates college students using their emails (to protect against frauds and spam and ensure that only members of a campus community have shared access to the service) using an Email service API and online .txt file JSON database of universities and their email extensions.
  • Scans inputted media of a school/academic schedule and extracts information about all of your classes in a certain timeframe in JSON format using GPT Vision.
  • Uses self-reports of illnesses to create a map-alert to other campus community members urging them to have caution and adhere to safety measures by first preprocessing location names using OpenAI API and then autocompleting and generating latitude and longitude coordinates using a location-aware API.
  • Uses comparisons of inputted schedules to determine if you had recently had a class with someone who self-reported as ill
  • Uses comparisons of your schedule and infected rooms/locations to determine if you are at any risk of contracting an illness by going to your next classes

How we built it

  • React Native was used for the frontend application, expo-router was used for routing, react-native maps was used for the home page map widget, react-native-paper provided me with prebuilt components, and native-tailwind made styling components easier.
  • FastAPI was used to process HTTP requests from the front end, handle JWT authentication, manage the database, and communicate with external third-party APIs.
  • PostgreSQL was used to store relational information on users, schedules, and reports. Information such as verification codes/status, classes students attend, and more were stored here.

Challenges we ran into

  • It was really difficult to find an Email Service API that still functioned and did not require that you provide an email belonging to your own domain; I explored ~10 options before finding one that fit my needs.
  • Developing backend algorithms - some of the algorithms used, especially those that determined past and potential future exposure, required deep thinking and trial-and-error to create.

Accomplishments that we're proud of

I am proud of the scale of my application as well as my ability to quickly learn new framework(s) on the spot - I was able to implement a full-stack mobile application as well as integrate several external APIs to create a final product that did something unique and nonintuitive, all while having barely any formal experience with FastAPI.

What's next for Sentinel

I intend to polish up the application as I usually do with hackathon submissions. Many parts of the application could be optimized for speed and efficiency. For instance, the algorithm that draws pins and circles onto the map widget could have its final information stored, locally or in a database, so that every rerender doesn't trigger a cycle of unnecessarily calling third-party APIs.

Built With

Share this project:

Updates