Everyday, thousands of UVA students use TransLoc to take buses to class, to lunch, events, dinner, and back home. However, everyone I know finds using the app inconvenient. Especially annoying is the fact that TransLoc never tells you when the bus you want arrives or when it has been delayed. Instead, you have to constantly refresh the app for a poor ETA estimate. This is why many UVA students decide to drive instead, which is environmentally unsustainable. This hackathon, we wanted to create a more friendly user experience for TransLoc, so more students would switch to public transportation.

What it does

We took inspiration from "ambient computing", where computers respond to changes without users taking actions. This is the complete opposite of TransLoc, which requires you to refresh the app constantly and has no idea which bus you want to use. Our web app, Transbient, gives you a list of stops near your location and allows you to track buses approaching the stop. When a bus reaches the stop or gets delayed, our app would notify you. No more holding your phone in the rain, closing and reopening the app and looking down the street to see if the bus is really coming. Instead, you log into Transbient, track a stop, put your phone back in your pocket, and later get a notification telling you whether the bus is really coming or not.

How we built it

We used Django and Heroku to build and deploy, respectively, the website Additionally, we used Github Actions for CI before deployment. The front-end uses Bootstrap.

For our backend, we used a PostgreSQL Database and several APIs to populate that server. Like TransLoc, we use UVA's Devhub API for tracking buses, routes, and stops. To measure locations, we used Google Cloud's Distance Matrix and Geolocation APIs. We also used Google's OAuth API to enable login.

Upon login, users can register their phone numbers with Twilio and receive notifications for tracked bus stops.

Challenges we ran into

On a conceptual level, we were not sure what users wanted to track: buses, routes, stops, or a combination. Ideally, ambient computing should involve as little user input as possible, but we decided to allow users to track stops on login to avoid writing prediction and path algorithms. Although both of us were familiar with Django and PostgreSQL, we handled "migrations" from Django's models into the database poorly. Because we worked on the frontend and backend separately, and each of us independently modified the models, this caused serious conflicts. Unfortunately, there is only one database so merging disparate versions is not as easy as merging git branches. We have no complaints about the APIs though and they were surprisingly easy to access with Python's requests library.

Accomplishments that we're proud of

In 24 hours, we've created a UTS-tracking dashboard that notifies your phone with Twilio about buses near your stop. We believe that such an app could reduce the anxiety and uncertainty that comes with riding the buses around campus. We had 24 hours and two people and had to handle several different APIs, a database, business logic, and a front end. We are proud of making Transbient work despite these difficulties, of enduring anxiety for a short time to make our fellow students less anxious in the future.

What we learned

When discussing how Transbient could improve UVA's sustainability, we realized how important its user experience was. We realized that it wasn't enough to have the "option" to ride the bus and in fact that too many options could overwhelm someone and force them to just drive their car. Our philosophy behind Transbient was the same philosophy behind ambient computing in general, to give the user only the options they want and then, in the background, fulfill those options.

On a technical level, we also realized how important it was to mutually agree on modifying database tables because migration history conflicts can be nasty in Django.

What's next for Transbient

Denis and I are both excited about the future of Transbient, we believe that, given the choice, UVA students would choose a hands-free notification system over the bus-tracking apps they currently use. In the future, a mobile app would be our first priority, as well as improving our algorithms to make tracking faster and even implement some AI. With AI predictions, the system would become more "ambient": the user would insert a destination, the AI would predict a range of ETAs. The user would then wait until our app notified them of an unexpected delay or the bus arriving on time.

Share this project: