As UChicago students, we've noticed that it's really hard to keep track of all the different RSO meetings/lectures/movie showings/events that happen on campus. Events.uchicago.edu doesn't do a great job about this, and most people don't even know about it! UCEvents is the perfect solution: a pure web app to provide a single-source-of-truth place for all these events. This modern web platform provides an easy way to learn about events, respond to event organizes, upload new events, and continuously learn about all the events in the UChicago community!
How I built it
On the back-end we used TypeScript, Apollo Server, Heroku (for deployment).
For the web-scraper we used a Node.js server (periodically running a Python script) running on a Google Cloud VM.
What's next for UC Events
We mainly want to (1) add the ability to give event recommendations based on previous events a user attended and (2) subscribe to an event to receive updates from event organizers. We also want to clean up the logic across our application and fix any bugs related to the upload event process.
Challenges we ran into
Domain.com's domain service was extremely buggy: the DNS records wouldn't update to point to our frontend website, the free SSL service wouldn't respond so we couldn't get https, and in the end we decided not to use domain.com
Accomplishments that we're proud of
On the backend, we're very proud that we could build a functional live event subscription service, which would update clients live when new events are created. To do this we used Apollo's publication functionality. On the frontend, we're proud of the easy-to-use, flexible, and overall aesthetic design. Finally, we're proud of our automated Node microservice which runs Python scripts to scrape UChicago's event page to update their events onto our platform on a daily basis.
What we learned
We learned how to co-integrate front and backend development, allowing us to compartmentalize our work and efficiently use Apollo GraphQL. We learned the nuances of frontend React development.