🗺️ Geo-intelligence platform for mapping & census of Points of Sale across Morocco — FastAPI + OpenStreetMap + React/Gemini AI
# GeoRetail x Moussadik
**Geo-Intelligence Platform for Mapping & Census of Points of Sale across Morocco**
---
## About
This monorepo contains **two complementary applications** developed for the GeoRetail project at **Ecole Centrale Casablanca** (2024/2025):
| Application | Description | Tech Stack |
|-------------|-------------|------------|
| **GeoRetail MVP** | Automated POS mapping platform with OpenStreetMap data collection, interactive visualization, and REST API | FastAPI, Leaflet.js, Chart.js |
| **Moussadik Census** | Crowdsourced POS confirmation app with AI-powered validation using Gemini and gamification system | React 19, TypeScript, Gemini AI |
---
## Architecture
```
GeoRetail-Moussadik/
|
|-- GeoRetail_Final/ # Backend API + Web Dashboard
| |-- main.py # FastAPI application (25+ endpoints)
| |-- index.html # Interactive map dashboard
| |-- georetail_database.json
| |-- requirements.txt
| +-- docs/ # Executive summary (PDF + LaTeX)
|
|-- Moussadik-POS-Census/ # React Mobile-First App
| |-- App.tsx # Main application
| |-- components/ # UI components
| |-- services/ # Gemini AI integration
| |-- utils/ # Geolocation utilities
| +-- package.json
|
+-- README.md
```
---
## GeoRetail MVP - Features
### Data Collection
- **OpenStreetMap** automated collection via Overpass API (free)
- **CSV/JSON import** for external datasets
- **Manual entry** with form validation
- Coverage: **9 regions**, **~2,976 POS** mapped
### Interactive Visualization
- **Leaflet.js** map with marker clustering
- Advanced filters (region, type, brand, category)
- Real-time statistics with **Chart.js**
### REST API (25+ Endpoints)
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | `/pos` | List POS with filters |
| `POST` | `/pos` | Create a POS |
| `POST` | `/collect/osm` | Launch OSM collection |
| `GET …