# Desvia

A driving-navigation app for Brazil (iOS and Android) whose difference is private map areas you draw to avoid when possible or never enter — with real-time traffic and turn-by-turn on top.

- Status: live
- Role: Solo — product, mobile, backend, web
- Period: Jun 2026 – Present
- Stack: Expo / React Native, Mapbox Navigation SDK, NestJS, Fly.io, Prisma 7, Supabase Postgres + PostGIS, GraphHopper, Google Places, Astro, PostHog
- Links: [Live](https://desvia.app)
- Canonical: https://picoral.me/projects/desvia

## What it does

Desvia is turn-by-turn navigation with one control the big apps don't have: areas you draw yourself. Tap the map, trace a region you'd rather not cross, choose how strict it is, and drive. The route recalculates to respect it, with real-time traffic and clear, spoken maneuvers the whole way.

_Drawing an area: tap the map to trace the region you'd rather not cross._

## Why I built it

Every navigation app optimizes for time and traffic; none of them let you say "just don't take me through there." The regions a driver wants to avoid — a weekly market, a chaotic intersection, a stretch they don't feel safe on — are personal and local, and they say a lot about someone's routine, so Desvia treats them as private by default. The interesting engineering is making an avoidance a first-class routing constraint that's actually enforced, not a hint the router quietly ignores.

## How it works

### Two levels of area, you in control

Areas come in two strengths. **Avoid if possible** is the gentle request — the route goes around whenever there's a reasonable alternative, but may enter as a last resort. **Never enter** is the firm rule — the path never crosses that area, no exceptions. The same areas travel with you across every route.

_An 'avoid if possible' area only bites in its time window — Desvia says so when a route has to pass through._

### Routing that respects the polygons

Candidate routes come from GraphHopper; the backend then validates each one against the driver's drawn polygons in Supabase Postgres with PostGIS before it's offered, so a "never enter" area is enforced rather than hoped for. Among the routes that pass, Desvia recommends the fastest and surfaces alternatives when they exist.

_Two routes on offer: the recommended one goes around your area; the faster one that cuts through is flagged._

### A real GPS around it

Real-time traffic that adjusts the ETA as you drive, large-card turn-by-turn maneuvers with voice, and saved places — home, work, the regulars — to start a route without typing.

_The home screen: saved places, recent destinations, and your areas one tap away._

## Status

In early rollout — the app is field-testing in Porto Alegre, and is on the [App Store](https://apps.apple.com/app/id6775706412) and [Google Play](https://play.google.com/store/apps/details?id=app.desvia), with the marketing site live at [desvia.app](https://desvia.app).

## Questions

### What is Desvia?

Desvia is a driving-navigation app for Brazil, on iOS and Android, with real-time traffic and turn-by-turn guidance. Its difference is that you can draw private areas on the map — a street market, a construction zone, a neighborhood — and have your route steer around them.

### What's the difference between "avoid" and "never enter"?

"Avoid if possible" is a preference — the route goes around whenever there's a reasonable alternative. "Never enter" is a rule — the path never crosses that area, no exceptions. You pick per area how hard the route should insist.

### Where are my areas stored?

Areas are tied to your account so they follow you across devices, and you can edit or delete them anytime. They aren't sold or shared with third parties for advertising.

### How does Desvia choose the route?

It combines time, distance, and real-time traffic with your restricted areas. Among the paths that respect your rules, it recommends the fastest and shows alternatives when they exist.
