Le premier copilote IA universel : détection des dangers par la caméra, guide touristique intelligent, traduction en temps réel, navigation augmentée et assistant vocal permanent — dans une seule application premium.
Chaque module est un package Flutter indépendant, branché sur le même cœur IA. Ils s'activent selon le contexte : conduite, marche, visite, conversation.
Connexion et inscription Supabase Auth (email + mot de passe), garde de navigation go_router : toute route est protégée tant que la session n'est pas ouverte.
Parlez naturellement : transcription Whisper, traduction DeepL, lecture ElevenLabs avec une voix humaine. Toutes langues.
Reconnaissance instantanée par GPT-4o Vision : plantes, animaux, plats, monuments, produits — avec réponse vocale.
Pointez un monument, une œuvre, un paysage : l'IA raconte l'histoire, les anecdotes, horaires, prix, restaurants et activités proches.
« Où suis-je ? », « Traduis », « Que vois-tu ? », « Trouve un hôtel »… Réponses naturelles ElevenLabs.
Google Maps + localisation en place ; itinéraires enrichis par l'IA (routes panoramiques, zones à éviter, explication orale) à brancher.
La caméra analyse piétons, vélos, véhicules, animaux et risques de collision, en local. UI et interface d'inférence prêtes ; modèle TFLite à embarquer.
Lieux, photos, dépenses et trajets consignés dans Supabase ; journal, résumé et export PDF partageable.
Temps de conduite, distance, consommation, CO₂, vitesse moyenne, pays visités, budget — interface prête, branchement des statistiques en cours.
Paiement Stripe (PaymentSheet) 9,99 €/mois via une Edge Function Supabase ; mise à jour de la table abonnements par webhook.
Le design de l'application a été refondu : thème Material 3 unique clair/sombre, cartes « verre dépoli » réutilisables (CarteVerre : flou 14 px, rayon 22 px, bordure blanche translucide), boutons pilule, pastilles d'icônes en dégradé vert → bleu. L'accueil est une grille 2 colonnes de 8 modules.
Séparation stricte des couches : l'UI ne connaît que les cas d'usage, le domaine ne dépend de rien, les services externes sont interchangeables derrière des interfaces. Tests unitaires par couche, CI/CD GitHub Actions, documentation générée.
Point clé : la détection de dangers tourne en local (modèle TFLite embarqué, ~30 images/s, latence < 50 ms) — indispensable pour la sécurité routière. Le cloud IA n'intervient que pour le guide, la mémoire et le carnet, où la latence est acceptable.
| Domaine | Technologie | Rôle |
|---|---|---|
| Frontend | Flutter | iOS + Android, une seule base de code, 120 FPS |
| Backend | Supabase | API, Edge Functions, temps réel |
| Proxy IA 🔒 | Supabase Edge Functions | Toutes les clés IA côté serveur, JWT vérifié, quotas journaliers, journalisation |
| Auth | Supabase Auth | Email, Apple, Google, magic link |
| Base de données | PostgreSQL | Voyages, lieux, mémoire, dépenses (RLS activé) |
| Stockage | Supabase Storage | Photos, carnets PDF, packs hors ligne |
| IA générative | OpenAI GPT + Vision | Guide, assistant, carnet, reconnaissance |
| Transcription | Whisper | Voix → texte, toutes langues |
| Traduction | DeepL API | Qualité professionnelle |
| Voix | ElevenLabs | Synthèse vocale naturelle multilingue |
| Navigation | Google Maps · Places · Directions | Cartes, POI, itinéraires |
| Paiement | Stripe | Abonnement Premium 9,99 €/mois |
| Notifications | Firebase Cloud Messaging | Alertes, rappels de carnet |
Le gratuit fait découvrir la magie ; le Premium débloque l'illimité et le copilote complet.
Le durcissement v2 corrige le risque majeur des apps mobiles IA : des clés API embarquées dans le binaire. Désormais, aucune clé OpenAI, DeepL ou ElevenLabs ne quitte le serveur — l'application n'embarque que des clés publiques restreintes.
Tous les appels IA transitent par une Edge Function Supabase : l'app envoie son jeton de session (JWT), la fonction le vérifie, applique un quota journalier par utilisateur, journalise, puis appelle OpenAI / DeepL / ElevenLabs avec des secrets stockés dans le coffre Supabase. Un binaire décompilé ne révèle aucune clé IA.
Politiques séparées par opération (select / insert / update / delete), réservées au rôle authenticated, avec clause WITH CHECK : impossible d'insérer ou de déplacer une ligne vers le compte d'un autre utilisateur. Accès anonyme révoqué sur toutes les tables.
La clé Google Maps est limitée par empreinte SHA-1 (Android) et bundle ID (iOS) + restriction d'API ; Stripe n'expose que la clé publiable, le paiement étant finalisé par Edge Function + webhook signé. La clé « anon » Supabase est inoffensive grâce au RLS.
Mot de passe de 12 caractères minimum vérifié côté client et imposé dans Supabase Auth, protection contre les mots de passe divulgués (HIBP), rotation des refresh tokens, déconnexion globale possible. Requêtes HTTP avec délais d'expiration.
TLS 1.2+ en transit, chiffrement au repos côté Supabase ; les enregistrements audio de traduction sont traités en mémoire puis supprimés, jamais stockés par défaut.
Export et suppression complète des données en un clic (cascade SQL sur toutes les tables), consentement explicite, minimisation des données, aucune revente. Localisation stockée uniquement pour les événements du carnet créés par l'utilisateur.
Caméra, micro et localisation demandés au moment de l'usage, avec explication claire et révocables à tout instant.
La détection embarquée (TFLite) fonctionne sans envoyer le flux vidéo au cloud ; l'app est une aide à la vigilance, jamais un substitut au conducteur — disclaimer permanent à l'écran.