Fortis: Be Fearless
Inspiration
Urban navigation often overlooks a critical factor: safety. While maps help us get from point A to B, they don’t account for high-crime areas, leaving pedestrians vulnerable, especially during late hours or in unfamiliar neighborhoods.
This was especially important to us, living in San Jose. We wanted to build a tool that doesn’t just help you get somewhere quickly, but safely.
That's where Fortis comes in: a real-time, safety-aware navigation app that empowers users with knowledge and peace of mind.
What it does
Fortis is a safety-first route mapping and crime visualization platform.
It allows users to:
- 📍 Input start and destination points and receive crime-aware walking routes.
- 🧭 See routes color-coded by safety (Green = Safe, Red = Risky).
- 🔥 Visualize real-time crime data on a heatmap.
- 🧑🤝 Share location with trusted peers (mocked).
- 🔎 Filter crimes by type and time.
- 🌙 Navigate safely in a sleek, dark-themed interface optimized for night use.
How we built it
We used a modern full-stack setup:
- Frontend: React (Next.js App Router), Tailwind CSS, TypeScript
- Backend: Express.js server handling route safety scoring
- Database: Firebase Firestore to store crime data and user info
- Maps: Google Maps Platform via
@react-google-maps/api - APIs:
- Directions API for route generation
- Places API for autocomplete
- Analysis:
- Custom algorithm using the Haversine formula and weighted crime severity to rate route safety
- Mock Location Sharing:
- Static data showing live friend positions with toggle settings
- Static data showing live friend positions with toggle settings
- Low-Code Implementation
By using Vercel's V0 and Bolt.new we were able to create the frontend of the website with ease. ---
Challenges we ran into
- 🗺️ Using the Google Maps API, was especially difficult since it was our first time.
- 🧠 Designing a good route analysis algorithm using Djikstra and A* that was both fast and meaningful.
- 🌐 Handling geolocation permissions and fallback scenarios.
- 🔧 Optimizing for performance and responsiveness across screen sizes with complex map interactions.
Accomplishments that we're proud of
- Built a fully functional crime-aware routing system with live map rendering.
- Designed a beautiful, dark-themed UI with Tailwind CSS and shadcn/ui components.
- Implemented a clean, modular structure using TypeScript and custom hooks.
- Developed a heatmap + filtering system that feels intuitive and fast.
- Created a full mock peer-tracking feature, which could be easily expanded into real-time tracking.
What we learned
- Learned to use not only the Google Maps APIs but Google Cloud Platform and how to control overlays, styles, and interactions.
- How to use Firebase Firestore effectively for geospatial data.
- The importance of good UX in safety-focused apps—users need clarity and confidence.
- How to modularize code for scalability and reusability in large component-based systems.
- The value of thoughtful error handling—especially when dealing with live location and network-based services.
What's next for Fortis
We're excited to take Fortis further by:
- 🔔 Adding real-time crime alerts with push notifications
- 💻 Fully implementing integration with Gemini for summarizing alerts, which we were only able to do halfway due to time limitations
- 👥 Enabling live peer location sharing via Firebase Realtime Database
- 🗃️ Expanding the database to support multiple cities
- 📊 Building an admin dashboard for verified crime reporting
- 🧪 A/B testing our route safety algorithm and improving its scoring accuracy
- 🔐 Adding Firebase Auth for personalized experience and saved preferences
Fortis is just the beginning. We believe safety should never be optional—and we’re building toward a world where every route is the right one.
Built With
- bolt.new
- css
- express.js
- firebase
- firestore
- google-cloud
- google-maps
- next.js
- tailwind
- typescript
- v0
- vercel
Log in or sign up for Devpost to join the conversation.