Application mobile de navigation et d'aide aux déplacements en transport en commun au Senegal.
# Yonnma
**Yonnma** est une application mobile qui accompagne les usagers dans leurs déplacements quotidiens à Dakar, en leur proposant les meilleurs itinéraires à travers les transports publics sénégalais :
- 🚌 Tata AFTU
- 🚌 Dakar Dem Dikk
- 🚐 Ndiaga Ndiaye
- 🚐 Cars rapides
L'objectif : rendre le transport en commun sénégalais **simple à comprendre et à utiliser**, y compris pour les usagers peu à l'aise avec la technologie — pas de jargon, pas d'étapes inutiles, une interface directe.
## Fonctionnalités
- **Connexion par numéro de téléphone** — un code reçu par SMS, sans mot de passe ni e-mail à retenir. Vraie authentification Supabase Auth (pas de comptes faits main) : sessions sécurisées, rafraîchissement automatique, et permissions filtrées par utilisateur (Row Level Security via `auth.uid()`)
- **Écran d'accueil avec carte en direct** — la position de l'utilisateur, les arrêts de bus autour de lui et les lignes qui les desservent
- **Planificateur d'itinéraire (fonctionnalité principale)** — l'utilisateur indique un point de départ et une destination ; Yonnma calcule le meilleur trajet à travers le réseau réel : lignes à emprunter, correspondances, arrêt où descendre, temps estimé et coût estimé (voir `services/routing.ts`)
- Base de données de lignes et d'arrêts réels de Dakar (BRT, Dakar Dem Dikk, Tata AFTU) — plusieurs dizaines de lignes et d'arrêts
## Stack technique
| Brique | Choix | Rôle |
|---|---|---|
| App mobile | Expo (React Native) + TypeScript | iOS / Android à partir d'une seule base de code |
| Navigation | Expo Router | navigation par fichiers |
| Carte & position | `react-native-maps`, `expo-location` | carte en direct, position de l'utilisateur |
| Base de données | Supabase (PostgreSQL + PostGIS) | lignes, arrêts, itinéraires, utilisateurs ; PostGIS gère tout ce qui est géographique (distances, arrêt le plus proche, tracés de ligne) |
| Style | `NativeWind` / Tailwind + design system maison (`constants/theme.ts`) | interface cohérent …