Cat'aloge
Application mobile alimentée par l'IA qui trouve et organise toutes vos photos d'animaux — entièrement sur l'appareil, sans cloud, sans compromis sur la vie privée.
Une application mobile alimentée par l'IA qui scanne automatiquement votre galerie et organise les photos d'animaux grâce à une inférence TensorFlow Lite entièrement on-device.
Cat'aloge est une application mobile multiplateforme alimentée par l'IA qui détecte et organise automatiquement les photos d'animaux directement sur l'appareil grâce à TensorFlow Lite. Aucune photo n'est jamais envoyée à un serveur — l'ensemble du pipeline d'inférence ML s'exécute localement sur l'appareil.
L'application utilise EfficientDet Lite2, un modèle de détection d'objets léger optimisé pour le mobile, pour analyser la galerie d'un utilisateur image par image et identifier les photos contenant des animaux. Les photos détectées sont affichées avec leur score de confiance, et les utilisateurs peuvent les mettre en favoris, les prévisualiser et les partager.
Le défi technique était de rendre cela performant sur des milliers de photos sans bloquer l'interface ni drainer la batterie. Cela a nécessité la construction d'un pool de workers Dart isolates personnalisé, un système de cache à deux niveaux (LRU en mémoire + persistance Hive sur disque), et un pipeline de scan par lots avec contrôle de contre-pression pour les appareils bas de gamme.
Fonctionnalités clés
ML on-device — Zéro cloud
EfficientDet Lite2 s'exécute directement sur l'appareil. Aucune connexion internet requise. Aucune photo ne quitte jamais votre téléphone.
Pool de workers isolates parallèles
Un pool personnalisé d'isolates Dart traite les photos en threads de fond parallèles, laissant le thread UI complètement libre.
Système de cache à deux niveaux
Les résultats sont mis en cache en mémoire pendant la session et persistés sur disque via Hive — rouvrir l'application est instantané.
Affichage du score de confiance
Chaque photo détectée est affichée avec son score de confiance ML, permettant aux utilisateurs de comprendre les résultats du modèle.
Confidentialité by design
Le modèle ML est intégré à l'application au build. Aucune requête réseau pour l'inférence. Votre galerie ne touche jamais un serveur.
Stack technique
Architecture
Le pipeline de détection est entièrement on-device. Les photos sont récupérées en lots et envoyées à un pool de workers isolates personnalisé. Chaque isolate exécute sa propre instance EfficientDet Lite2 indépendamment avec initialisation paresseuse.
Les résultats reviennent via SendPort et sont écrits dans un cache LRU en mémoire + Hive sur disque. Les notifiers async Riverpod diffusent les mises à jour directement vers l'interface galerie.
Défis & Solutions
Les problèmes complexes — et comment je les ai résolus.
Exécuter l'inférence ML sans bloquer l'UI
Un seul appel EfficientDet sur le thread principal causait des chutes de frames immédiates. Résolu en déplaçant toute l'inférence vers un pool d'isolates Dart avec initialisation paresseuse du modèle par isolate.
Analyser des milliers de photos sur des appareils bas de gamme
Charger toutes les photos en mémoire simultanément causait des crashes. Implémenté un pipeline de scan par lots de 20 photos avec contrôle de contre-pression.
Invalidation du cache entre les lancements
Le cache disque pouvait devenir obsolète si des photos étaient supprimées entre sessions. Au lancement, un diff léger compare les IDs d'assets en cache avec l'état actuel de la galerie.
Plus de projets
ExtMig
Un outil de développement open-source conçu pour améliorer les workflows de migration et la productivité des équipes de développement modernes.
Masroufi
Une plateforme mobile de recrutement complète construite avec Flutter en Clean Architecture et BLoC, supportant trois rôles utilisateurs distincts.
Accident Risk Navigator
Une plateforme IA full-stack qui prédit le risque d'accident en fonction des conditions routières et météorologiques, et visualise les zones à risque sur des cartes interactives.
Intéressé par une collaboration ?
Je suis toujours ouvert à discuter de nouveaux projets et opportunités.