# Smart App City — Architecture & Propositions > Sous-projet Smart City Digital Twin Martinique > Créé le : 2026-05-28 ## 1. Vision Application mobile multi-plateforme (Android/iOS) pour les citoyens de Martinique, couvrant : - **Transport** : Info trafic, bus, parking - **Environnement** : Qualité de l'air, météo, pollution sonore - **Services municipaux** : Démarches, alertes, événements - **Tourisme** : Points d'intérêt, itinéraires, réalité augmentée - **Citoyen** : Signalements, participations, notifications **Inspiration** : [SmartAppCity](https://smartappcity.com/en/) — plateforme smart city multi-services. ## 2. Architecture Globale ``` ┌─────────────────────────────────────────────────────────────────────┐ │ MOBILE APP (React Native) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Transport│ │ Environ. │ │ Services │ │ Tourisme │ │ Citoyen │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ └────────────┴────────────┴────────────┴────────────┘ │ │ │ │ │ ┌─────────┴─────────┐ │ │ │ API Gateway │ │ │ │ (Kong / Traefik)│ │ │ └─────────┬─────────┘ │ └──────────────────────────────┼──────────────────────────────────────┘ │ ┌──────────────────────────────┼──────────────────────────────────────┐ │ BACKEND │ │ │ │ │ ┌───────────────────────────┴───────────────────────────────────┐ │ │ │ Beckn Protocol (OTN-DPI) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ BAP │ │ BPP │ │ Beckn │ │ ONDC │ │ │ │ │ │ (Buyer) │ │ (Seller) │ │ Gateway │ │ Adapter │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ └───────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────────┴───────────────────────────────────┐ │ │ │ AI / LLM Layer │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ RAG │ │ Agents │ │ LLM │ │ NLP │ │ │ │ │ │ (Retriev)│ │(Actions) │ │(Generate)│ │(Intent) │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ └───────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────────┴───────────────────────────────────┐ │ │ │ Microservices Backend │ │ │ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │ │ │Auth │ │Notif. │ │GIS │ │IoT │ │Analytics│ │ │ │ │ │Service │ │Service │ │Service │ │Service │ │Service │ │ │ │ │ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ │ │ │ └───────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────────┴───────────────────────────────────┐ │ │ │ Data Layer │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │PostgreSQL│ │ InfluxDB │ │ Redis │ │ MinIO │ │ │ │ │ │ (Users) │ │ (IoT) │ │ (Cache) │ │ (Files) │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ └───────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘ ``` ## 3. Frontend — React Native ### Stack Technique | Composant | Technologie | Justification | |-----------|-------------|---------------| | **Framework** | React Native + Expo | Cross-platform, hot reload, large communauté | | **State Management** | Zustand + React Query | Léger, performant, cache intelligent | | **Navigation** | React Navigation v6 | Standard React Native | | **UI Kit** | React Native Paper + Tamagui | Material Design + performance | | **Maps** | react-native-maps + MapBox | Cartographie interactive | | **i18n** | i18next + react-i18next | Multi-langue (FR, EN, ES, DE) | | **Notifications** | Firebase Cloud Messaging | Push notifications cross-platform | | **Offline** | WatermelonDB + SQLite | Mode hors-ligne essentiel | | **Auth** | OAuth2 + Keychain | Sécurité des credentials | ### Écrans Principaux 1. **Dashboard** — Vue d'ensemble temps réel (météo, trafic, alertes) 2. **Carte interactive** — Points d'intérêt, capteurs, événements 3. **Transport** — Itinéraires, horaires bus, disponibilité parking 4. **Signalement** — Photo + géolocalisation + catégorisation 5. **Services** — Démarches administratives, RDV, formulaires 6. **Profil** — Paramètres, langue, notifications ## 4. Backend — Microservices ### Stack Technique | Composant | Technologie | Justification | |-----------|-------------|---------------| | **Runtime** | Node.js (NestJS) + Python (FastAPI) | NestJS pour l'API, FastAPI pour l'IA | | **API Gateway** | Kong ou Traefik | Routage, rate limiting, auth | | **Auth** | Keycloak (existant) | SSO, OAuth2, multi-tenant | | **Message Queue** | RabbitMQ (existant) | Async communication | | **Cache** | Redis (existant) | Sessions, rate limiting | | **Search** | Meilisearch | Recherche full-text rapide | | **Storage** | MinIO (S3-compatible) | Fichiers, images, documents | ### Microservices 1. **Auth Service** — Authentification, rôles, permissions (Keycloak) 2. **User Service** — Profils, préférences, historique 3. **Notification Service** — Push, SMS, email (multi-canal) 4. **GIS Service** — Données géospatiales, itinéraires (PostGIS) 5. **IoT Service** — Ingestion données capteurs (InfluxDB) 6. **Reporting Service** — Signalements, suivi, analytics 7. **Translation Service** — i18n côté serveur ## 5. Beckn Protocol (OTN-DPI) ### Intégration Le Beckn Protocol permet l'interopérabilité avec les services externes (transport, commerce, administration). ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Mobile App │────▶│ Beckn BAP │────▶│ Beckn GW │ │ (Buyer) │◀────│ (Backend) │◀────│ (OTN) │ └─────────────┘ └─────────────┘ └──────┬──────┘ │ ┌──────┴──────┐ │ Beckn BPP │ │ (Sellers) │ │ - Transport│ │ - Commerce │ │ - Admin │ └─────────────┘ ``` ### Cas d'usage Beckn - **Transport** : Recherche/réservation de trajets (bus, covoiturage) - **Commerce local** : Découverte de commerces, commandes - **Services publics** : RDV mairie, demandes de documents - **Tourisme** : Réservation d'activités, guides ## 6. AI / LLM Layer ### Architecture AI ``` ┌─────────────────────────────────────────────────────────────┐ │ AI Layer │ │ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ LLM (LocalAI / Ollama) │ │ │ │ - Modèle : Llama 3.1 70B ou Mistral 7B │ │ │ │ - API : OpenAI-compatible │ │ │ │ - Hébergement : LocalAI container (existant) │ │ │ └──────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────┴───────────────────────────────┐ │ │ │ RAG Pipeline │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ Embedding│ │ Vector │ │ Retriever│ │ │ │ │ │ (E5) │ │ (Qdrant) │ │ (Hybrid) │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────┴───────────────────────────────┐ │ │ │ AI Agents │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ Transport│ │ Tourisme │ │ Services │ │ │ │ │ │ Agent │ │ Agent │ │ Agent │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └───────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ### Cas d'usage AI 1. **Chatbot citoyen** — Réponses aux questions (RAG sur documents municipaux) 2. **Recommandations** — Activités, restaurants, événements personnalisés 3. **Prédictions** — Trafic, qualité de l'air, affluence 4. **Analyse signalements** — Classification automatique, priorisation 5. **Traduction temps réel** — Conversations multilingues ## 7. Multi-Langue (i18n) ### Langues supportées | Langue | Code | Priorité | |--------|------|----------| | Français | fr | 1 (principal) | | English | en | 2 | | Español | es | 3 | | Deutsch | de | 4 | ### Architecture i18n ``` ┌─────────────────────────────────────────────────────────────┐ │ i18n Pipeline │ │ │ │ Frontend (React Native) Backend (NestJS) │ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │ │ i18next + ICU │ │ nestjs-i18n │ │ │ │ Format.js │ │ Accept-Language │ │ │ │ Pluralization │ │ Content negotiation │ │ │ └─────────────────────┘ └─────────────────────┘ │ │ │ │ │ ┌───────────────────────┴───────────────────────────────┐ │ │ │ Translation Management │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ Crowdin │ │ LLM │ │ Manual │ │ │ │ │ │ (Sync) │ │ (Auto) │ │ (Review) │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └───────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 8. Infrastructure & Déploiement ### Conteneurs Docker ```yaml # docker-compose.smart-app.yml services: # Frontend (dev server) mobile-web: build: ./frontend ports: ["8081:8081"] # Backend API api-gateway: image: kong:3.5 ports: ["8000:8000"] auth-service: build: ./backend/auth depends_on: [keycloak] gis-service: build: ./backend/gis depends_on: [postgis] iot-service: build: ./backend/iot depends_on: [influxdb] notification-service: build: ./backend/notification depends_on: [rabbitmq] # AI Services rag-service: build: ./ai/rag depends_on: [localai, qdrant] agent-service: build: ./ai/agents depends_on: [localai] # Data qdrant: image: qdrant/qdrant:latest ports: ["6333:6333"] meilisearch: image: getmeili/meilisearch:v1.7 ports: ["7700:7700"] ``` ### CI/CD - **GitHub Actions** → Build → Test → Deploy - **EAS Build** (Expo) → Builds iOS/Android - **CodePush** → OTA updates ## 9. Roadmap ### Phase 1 — MVP (2-3 mois) - [ ] Setup React Native + Expo - [ ] Auth Keycloak + profil utilisateur - [ ] Dashboard temps réel (météo, qualité air) - [ ] Carte interactive (capteurs, POI) - [ ] i18n FR/EN - [ ] Notifications push ### Phase 2 — Services (3-4 mois) - [ ] Signalements citoyens - [ ] Transport (info trafic, bus) - [ ] Beckn BAP/BPP integration - [ ] Chatbot RAG (documents municipaux) - [ ] i18n ES/DE ### Phase 3 — AI & Avancé (4-6 mois) - [ ] AI Agents (transport, tourisme, services) - [ ] Recommandations personnalisées - [ ] Prédictions (trafic, environnement) - [ ] Réalité augmentée (tourisme) - [ ] Mode offline complet ## 10. Répertoires ``` smart-app-city/ ├── docs/ │ ├── ARCHITECTURE.md (ce fichier) │ ├── BECKN_INTEGRATION.md │ ├── AI_ARCHITECTURE.md │ └── I18N.md ├── frontend/ │ ├── src/ │ │ ├── screens/ │ │ ├── components/ │ │ ├── services/ │ │ ├── i18n/ │ │ └── store/ │ ├── app.json │ └── package.json ├── backend/ │ ├── api-gateway/ │ ├── auth-service/ │ ├── gis-service/ │ ├── iot-service/ │ ├── notification-service/ │ └── reporting-service/ ├── ai/ │ ├── rag-service/ │ ├── agent-service/ │ └── models/ ├── beckn/ │ ├── bap/ │ └── bpp-adapter/ ├── docker-compose.yml └── README.md ```