Inspiration
Every week, students, organizations, and staff across the University of Virginia host numerous events. From, research conferences to pickleball tournaments, UVA is always lively. However, many of these events can be difficult to track and find for students. Many times, students miss activities and because they simply weren't aware. UVA lacks a centralized activities application to track events. A service that allows students to keep up with events they're interested in and overall events at UVA allows for better connectedness and accessibility.
What it does
HoosMap provides an interactive map with activities and events. Users can filter through upcoming events with a search and filters provided by UVA events website. Users can interact with these events by signing up, bookmarking, and upvoting/downvoting events. Events can be hosted by individuals or organizations. Users can join organizations to keep track of upcoming events and stay organized. A chat bot that uses Gemini API can provide relevant searches for activities.
How we built it
Frontend was built using Dart & Flutter. It utilized libraries like Google Map, Staggered Grid View, and Tutotial Coach Mark to enhance user experience. The app also uses SharedPreference for local storage, lottie for animation rendering, image_picker for image accessing, and provider for state management.
Backend was built using Flask with Rest API. HTTP responses were routed to flask functions that returned JSON to frontend. Backend interacted with both Firebase and ChromaDB to store data and return relevant activities. Gemini API used to generate embeddings for searches by the user to return relevant activities.
Dual database integration using Firebase and ChromaDB. Firebase stored the traditional mapping of data with the documents Activities, Organizations, and Users. ChromaDB held interests that the user selected to search by embeddings for relevant searches.
Tests were generated from UVA upcoming activities which were collected using Selenium web-scraping.
Challenges we ran into
Building a full-stack project in a day is no easy task. There are a few major issues we encountered. The dual database setup was challenging to work with as we had to coordinate to match up in both. The frontend handled a good chunk of the data processing which made it difficult and time consuming to program. Finally, testing the database with realistic data was difficult to find. We chose to scrape data directly from upcoming UVA events which was tedious.
Accomplishments that we're proud of
Usage of dual database integration and implementation of GenAI for searching for relevant activities. Great testing and integration of different parts of our project (specifically the backend and frontend interactions). Visual polish and accessibility of the app.
What we learned
We increased our knowledge of databases and backend with Flask. Most of us were new to backend development so getting to work with REST API and database calls was very helpful. Another thing we learned was Gemini and AI integration with ChromaDB.
What's next for HoosMap
We would love to improve the organizations and filtration system. Organizations leave a bit to be desired in terms of features for admins and event hosts. We would like to improve the value organizations offer through better communication and tracking of events in organizations you're part of. Filters were very limited since we used UVA's events filters from their websites. We hope to incorporate AI into filters by allowing users to set custom interests.
HoosMap is more than just a project for us; it's a solution that we students will use daily. It embodies our commitment to leveraging technology to improve accessibility and efficiency.
Log in or sign up for Devpost to join the conversation.