Inspiration

A big inspiration for us was the lack of an easy way for us to find clubs, organizations, and their events, during our own freshman year. We thought that the information was out there, but often hard to find and provided too much friction to already nervous underclassmen. We created RUThere? to provide students with one expansive source to find and search through the 400+ student organizations that Rutgers offers.

What it does

While Rutgers technically has pages to display both student orgs as wells as events, in practice they are borderline useless as no club actually takes the time to add their events to these pages. Often times, clubs will leave these pages un-updated for years. However, one near universal spot for clubs to broadcast the newest info about themselves is their instagrams, where they frequently post about meetings and events. To harvest this key info, we setup an Instagram scraper that runs every day at midnight, going through the instagrams of every club on our list and updating our calendar with new posts. In order to accurately process the vast amount of text, image, and video data we get from this scraper, we use the Gemini API to take the varied input and format it into a structure JSON response that we can then show to the user. We show calendar and lists views with a comprehensive search feature that allows you to search by club name, event name, interest, or whether or not there is free food.

How we built it

We have a hybrid serverless backend and SSR React application built on Node.js 22 and TypeScript. In order to get updates at scheduled and consistent times, we set up a pipeline for data scraping and processing that happens every day at midnight. Our website will start up a CRON job that creates multiple asynchronous requests to the web scraper API. These requests are setup to output to a webhook back to our website that then puts the raw data into a Gemini API query in order to clean it. This involves getting the time and date from either description or image of the post (many clubs just post a flyer and don't update the description), the location and specific campus, and whether or not there might be free food there (super important to us). After a response from Gemini API, we put the JSON into our database hosted on Neon so in the future, events have fast and responsive lookup. Our React frontend simply displays these events to the user in either a list or calendar view, and also allows for looking up events and clubs by name, interest (tags that relate to the club or event, such as coding relates to USACS), and whether they offer free food. We hosted the site on vercel, the database on Neon, and the data scraper API is from Brightdata. During our build process, we decided to use AI code generation tools as well, in order to speed up how fast we can ship our product, as well as to fill in the gaps of our knowledge.

Challenges we ran into

During development, one of the biggest challenges we ran into was the number of API calls required in the initial phase to load all the data from past events into our database. Currently, daily usage is much lower; however, since we are building this system from the ground up, we needed to collect historical data for the month, so we made over a month's worth of API calls in a single day. To get around this issue, we worked on optimizing our api calls, running jobs in batches, and creating new free API keys. Another challenge we ran into was scope creep: we wanted to do a lot more with our project in the allotted time, adding many super cool features; however, it was important to stay within our main project's goals to get a really polished, working solution. Other features can definitely improve user experience, but we needed a lot of discernment.

Accomplishments that we're proud of

We are proud of how polished a project we were able to ship in such a short amount of time. Especially since this was our second idea, and our first we had to scrap.

What we learned

We learned that we need to properly scope the difficulty of an idea before we attempt and sink hours into it. We lost most of the first day working on the project, and had to make the pivot to this project.

What's next for RU-There?

Looking ahead for this project, there are a lot of quality of life features that can be implemented upon that would make this software even more convenient for students at Rutgers. Features such as club tracking, where we can email users whenever a new club of their following posts a new event, class overlay so students can see which events they can attend without their classes being blocked, as well as transport and how to get to these events with ease. This project would also be feasible to start expanding to other universities. Because RUThere only relies on the clubs Instagram's in order to find new events, this could easily be applied to universities all over the country as a one stop source for all their events that may be ongoing in their campuses.

Built With

Share this project:

Updates

Submission history