UVA Housing Finder was inspired by a common pain point for students: finding housing that actually fits their daily lives. Most apartment search tools only show price and amenities — they don’t consider where your classes are or how far you’re willing to walk. As UVA students ourselves, we wanted to create a smart, location-aware housing tool specifically for the student experience.
The application allows users to enter their maximum budget, preferred number of bedrooms, how far they’re willing to walk, and which school they belong to (Engineering, Data Science, McIntire, or Arts & Sciences). Based on these inputs, our app scrapes live listings from Apartments.com using Selenium, filters them by price and size, and calculates walking distance from each apartment to the relevant academic buildings using the Google Maps Distance Matrix API. The backend (built with Flask) handles scraping, filtering, and serving data, while the frontend uses vanilla HTML, CSS, and JavaScript to provide a clean user interface and dynamically display the best housing options.
We ran into challenges managing CORS errors, handling inconsistent scraped data, and integrating third-party APIs in a smooth pipeline. Connecting the frontend and backend seamlessly required careful attention to request flow and file management, especially when working with live scraping and real-time user input.
We’re really proud of how much ground we covered in a short amount of time. We went from concept to full-stack app with live scraping, filtering logic, geolocation API integration, and dynamic rendering — all tailored to UVA students. We also learned a ton about Flask, browser security, geospatial APIs, and real-world scraping techniques.
Next, we’d love to expand UVA Housing Finder by adding saved listings, user logins via Netbadge, map views, mobile support, and support for bike or bus distance calculations. Eventually, we hope to deploy the app so that any UVA student can find housing that fits their lifestyle — not just their budget.
Log in or sign up for Devpost to join the conversation.