PharmaLocate est une application web full-stack permettant de géolocaliser instantanément l'utilisateur et d'afficher les pharmacies de garde les plus proches à Antananarivo, Madagascar, avec calcul d'itinéraire routier et affichage sur une carte interactive.
# PharmaLocate — Localisateur de Pharmacies de Garde
**PharmaLocate** est une application web full-stack permettant de géolocaliser instantanément l'utilisateur et d'afficher les **pharmacies de garde les plus proches** à Antananarivo, Madagascar, avec calcul d'itinéraire routier et affichage sur une carte interactive.
---
## Objectif du Projet
L'objectif principal de PharmaLocate est de faciliter l'accès rapide aux soins d'urgence en permettant à toute personne se trouvant à Antananarivo de :
1. **Détecter automatiquement sa position GPS** (ou de saisir manuellement sa latitude/longitude en cas de refus de géolocalisation).
2. **Consulter la liste des pharmacies de garde à jour** récupérées directement depuis la source officielle des officines de garde à Madagascar.
3. **Calculer l'itinéraire routier optimal** (distance en mètres, temps de trajet estimé en minutes et tracé GPS sur la carte) jusqu'à la pharmacie sélectionnée.
---
## APIs Extérieures & Sources de Données
Le backend FastAPI s'appuie sur 3 services et APIs externes :
| Source / API | URL Service | Rôle & Description |
| :--- | :--- | :--- |
| **Opham (Scraping)** | `
opham.com` | Extraits par scraping web (BeautifulSoup) la liste officielle à jour des pharmacies de garde d'Antananarivo et la période de validité de la garde. |
| **Google Geocoding API** | `
maps.googleapis.com` | Convertit les adresses textuelles des pharmacies scrapées en coordonnées GPS exactes `(latitude, longitude)`. |
| **Google Routes API** | `
routes.googleapis.com` | Calcule l'itinéraire routier le plus rapide (mode `DRIVE` / `TRAFFIC_AWARE`), la durée du trajet, la distance réelle et fournit la polyligne encodée du tracé. |
---
## Architecture Technique
```
PharmaLocate/
├── API_QL_nearest_pharmacy/ # Backend FastAPI + Strawberry GraphQL
│ ├── graphQL/ # Schémas et requêtes GraphQL
│ │ …