Madison has many events and many event websites, so it can often feel overwhelming to know what’s happening when. The goal of the project was to create a user-friendly website where people could view, join, and create events. On the design side, we wanted to create multiple interactive features: searchable event listings, a map where you can view your events, and a calendar. Through the course of twenty-four hours, we set up front and back ends that cleanly transfer API and Database information from the back to the front, allowing for a fast exchange of data. We chose to implement DuckDB to keep track of Users, Groups, and Event data. We also hooked up to the Google Maps Geocoding API to keep track of a map of events, utilizing the pin feature to view the user’s event locations. Overall, we’re proud of the work we did and are excited to keep growing this project after MadHacks ends.

How did we do it? - Our first step was to integrate our chosen technologies together. Full-scale development required an intricate integration of applications and frameworks that would become our stack. We began planning out database schema, what we wanted the website to look like, and the main functionality of the project. In order to have a consistent development environment, we asked a teammate who is good at sysadmin to create a Ubuntu Server virtual machine (VM) with KVM-QEMU technology on a Linux laptop. The port 22 of the SSH server running inside the VM is mapped to port 5555 on the host OS to enable connectivity. Throughout the rest of the hackathon, we managed to connect our machines to the VM through SSH connections in a WLAN, so that our code could update in real time. Our team managed to pull through a few successes such as being able to implement a search bar, hooking the Google Maps API, designing a secure and elegant backend, and creating stylized UI components.

Problems that we overcame: We were all unfamiliar with the tech stack we chose, but we each had our own strengths and weaknesses with the different technologies. Initially, we had written our database layer using MySQL and FastAPI SQLModels, which was effective for one developer locally, but was difficult for environment setup on other machines. We pivoted to use DuckDB instead, as it allowed us to store a local database file. This led to more issues, however, as the SQLModels did not syntactically convert well to DuckDB, and we decided explicit SQL statements would be more effective and reliable.

Conclusion There was a foreign part of the project for each of us, as most of us were unfamiliar with at least one component of the project. It was definitely a learning experience, and we can all confidently say that we were proud of what we managed to get together in such a short period of time. The project does have the potential to shape social lives and community building in Madison if we were to deploy and scale the project further.

Built With

  • duckdb
  • fastapi
  • vue.js
Share this project:

Updates