Inspiration
Navigating a large university campus can be challenging, especially for new students unfamiliar with the layout of buildings and classrooms. For students with mobility limitations, whether they use wheelchairs, crutches, or simply need to avoid stairs and steep slopes, navigating campus can be even more difficult.
We wanted to create a convenient, end-to-end navigation platform that goes beyond what traditional navigation applications offer. Rather than simply directing students to a building, we envisioned a system that could help them navigate to specific classrooms while accounting for their accessibility needs and temporary obstacles such as elevator outages or construction.
This inspired us to create UMassNav, a campus navigation platform designed to make getting around UMass Amherst easier and more accessible for everyone.
What it does
UMassNav is an accessibility-focused navigation platform that helps students find routes across campus and, for supported buildings, navigate indoors.
The application provides several key features:
- Accessibility-aware routing: Users can customize routes to avoid stairs, steep inclines, and other obstacles based on their mobility needs.
- Indoor navigation: Supported buildings feature floor plans and indoor routing, allowing users to navigate toward specific classrooms and destinations through 2D maps and 3D visualizations.
- Dynamic rerouting: The navigation system accounts for reported construction, blocked pathways, and elevator outages, recalculating routes when necessary.
- Community reporting: Students can report accessibility issues and obstructions, helping keep campus navigation information up to date.
- Building and entrance information: The system identifies mapped entrances and relevant accessibility infrastructure to help users choose appropriate routes.
Unlike conventional navigation systems that primarily focus on getting users from one building to another, UMassNav aims to provide a more complete navigation experience, from campus pathways to individual rooms.
How we built it
We divided development into four primary components: routing, frontend development, data collection, and backend infrastructure.
For outdoor navigation, we used OpenStreetMap and OSMnx to collect campus walking paths and construct a graph using NetworkX. Our routing engine, built in Python with FastAPI, uses Dijkstra's algorithm to calculate paths while accounting for stairs, estimated slopes, accessibility preferences, and reported closures.
To support accessibility-aware navigation, we incorporated geographic elevation data and UMass's existing accessibility datasets, including information about building entrances and elevators.
Indoor navigation presented a separate challenge. We developed floor-specific graph representations connecting rooms, corridors, entrances, and elevators. These indoor graphs can be connected to the outdoor navigation network, allowing the system to plan journeys that span multiple buildings and floors. We also implemented indoor mapping pilots for buildings such as the Integrative Learning Center and Du Bois Library.
Our frontend was developed using React, TypeScript, and Vite, providing an interactive map, route preferences, navigation instructions, and indoor visualization options.
For data management, we developed a backend using MongoDB Atlas to store building information, official closures, and community reports. We also built data collection pipelines to retrieve university service interruption notices and other relevant information. These pipelines use rule-based processing, with optional Gemini-assisted extraction for ambiguous notices, to identify disruptions that may affect navigation.
Challenges we ran into
One of our biggest challenges was figuring out how to represent the campus in a way that supported both outdoor and indoor navigation.
Outdoor mapping was relatively straightforward using OpenStreetMap, but indoor navigation required substantially more work. Floor plans were not always readily available, and even when they were, we still needed to identify corridors, room locations, elevators, and connections between floors.
Another major challenge was collecting accurate accessibility information. We needed to determine which entrances were accessible, where elevators and ramps were located, and how to account for information that was missing or outdated.
We also had to figure out how to handle temporary disruptions. Traditional navigation applications can overlook construction, closed pathways, or elevators that are temporarily out of service. We addressed this by developing a system that processes official university notices alongside community-submitted reports and incorporates relevant closures into route calculations.
Finally, integrating the routing algorithms, frontend, indoor maps, and data pipelines into a unified application was a significant engineering challenge, especially within the hackathon's limited timeframe.
Accomplishments that we're proud of
We're particularly proud of developing a navigation system that goes beyond simply displaying directions on a map.
Some of our biggest accomplishments include:
- Building an outdoor routing network containing approximately 6,885 nodes and 15,618 directed edges.
- Implementing accessibility-aware pathfinding that considers stairs, estimated grades, and building entrances.
- Developing indoor navigation graphs that can model corridors, rooms, and elevator transitions across multiple floors.
- Creating an integrated system that combines outdoor and indoor navigation, with support for 2D floor plans and 3D visualizations.
- Incorporating university service notices and community reports into a dynamic routing system.
- Building and integrating multiple independent components into a functional prototype within a single hackathon.
We're especially proud that our routing engine can account for infrastructure disruptions rather than assuming every mapped path is always available.
Our indoor navigation remains a developing pilot, with some physical connections and accessibility details still requiring verification, but establishing the underlying framework was a major step toward our broader vision.
What we learned
This project taught us how much complexity lies behind something as seemingly straightforward as navigation.
We gained hands-on experience with graph theory, shortest-path algorithms, geospatial data processing, web scraping, database integration, and full-stack development.
One particularly important lesson was that reliable navigation depends on much more than implementing a good routing algorithm. The quality of the underlying data matters just as much. A mathematically valid route isn't necessarily a physically accessible route, especially when information about elevators, entrances, or construction is incomplete.
We also learned the importance of building modular systems, working with multiple data sources, and coordinating development across different components under tight time constraints.
Most importantly, we gained a greater appreciation for the accessibility challenges that conventional campus navigation tools often overlook.
What's next for UMassNav
Our long-term goal is to transform UMassNav into a fully functional mobile application that students can use as part of their daily campus experience.
Our next priorities include expanding indoor navigation to more buildings across UMass Amherst, improving the accuracy of accessibility information through additional verification, and making disruption reporting more reliable and comprehensive.
We also want to explore better indoor positioning methods so users can navigate through buildings without manually identifying their current location.
Eventually, we hope to make UMassNav college-agnostic, allowing the same navigation framework to be adapted to other universities with their own buildings, pathways, accessibility infrastructure, and service updates.
Ultimately, our vision is to make accessible, end-to-end campus navigation available to students everywhere.
Built With
- fastapi
- geminiapi
- mongodb
- openstreetmap
- python
- react
- typescript