Diagnostic des maladies de la vigne par l'image

VinEye

Une application qui reconnaît les maladies de la vigne à partir d'une simple photo de feuille — en moins d'une seconde, même sans connexion internet.

Mobile + PWAIA on-deviceFull-stack
Logo VinEye
C'est quoi, simplement ?

Photographier une feuille, connaître son état.

Le  problème Le  problème
La  solution La  solution
Pourquoi  c'est  malin Pourquoi  c'est  malin

Les maladies de la vigne — comme la pourriture noire ou l'esca — peuvent ruiner une récolte. Les repérer tôt sauve les plants, mais il faut un œil expert, rarement disponible directement dans les parcelles.

VinEye transforme un simple téléphone en assistant. On prend une feuille en photo, l'application l'analyse et indique aussitôt si elle est saine ou malade — et de quelle maladie il s'agit, parmi 4 reconnues.

L'analyse se fait directement sur le téléphone, sans envoyer la photo sur internet : ça fonctionne en pleine vigne sans réseau, et c'est quasi instantané (~40 millisecondes).

Comment ça marche

1
Étape 01

Photographier

On cadre une feuille de vigne et on prend une photo, depuis l'app ou la version web.

2
Étape 02

L'IA analyse

Un modèle de vision entraîné sur ~9 000 images traite l'image en ~40 ms.

3
Étape 03

Diagnostic

L'app affiche l'état de la feuille et la maladie identifiée, avec un guide associé.

Ce que VinEye reconnaît :
Feuille sainePourriture noireEscaBrûlure des feuilles
Captures

L'app en images.

Accueil

Le point d'entrée de l'application.

Mes plantes

Le suivi des plantes et de leurs analyses.

Guides des maladies

Les fiches détaillées des maladies reconnues.

Carte

La localisation des analyses sur une carte.

Architecture

Un monorepo, plusieurs cibles.

App mobile React Native, PWA dérivée du même code, backend Next.js (API + panel admin) et pipeline ML Python — du dataset à l'inférence en production.

Architecture en trois couches : les clients (app mobile React Native, PWA, IA embarquée TFLite) communiquent via une passerelle API Next.js, qui accède au backend (panel admin, base PostgreSQL, IA serveur ONNX).
Clients
Mobile
Expo / React Native
PWA
Export web Expo
IA on-device
TFLite · ~40 ms
Passerelle
/api/mobile/*
Next.js 16 · CORS · Zod
Backend & IA
Panel admin
Next.js
PostgreSQL
Prisma · Supabase
IA serveur
ONNX Runtime
Stack technique

La stack, couche par couche.

Mobile

React Native, Expo SDK 54, TypeScript, NativeWind, React Navigation v7, Reanimated v4, i18next (FR/EN)

IA on-device

react-native-fast-tflite (MobileNetV2, 4 classes), preprocessing JS

PWA

Export web Expo (react-native-web), manifest + service worker, getUserMedia

Backend / API

Next.js 16 (App Router), Prisma 7, PostgreSQL (Supabase), better-auth, Zod

IA serveur

ONNX Runtime (onnxruntime-node), sharp, rate-limiting Upstash Redis

ML / Data

Python 3.12, TensorFlow/Keras, tf2onnx, dataset Kaggle (~9 000 images)

Infra / Deploy

Vercel (API + PWA), VPS Ubuntu (PM2 + Nginx + Certbot), EAS Build (Android), GitHub Actions (CI/CD)

Décisions & points forts

Les choix techniques qui comptent.

★ Le projet en chiffres
~9 000images d'entraînement
4classes (3 maladies + sain)
~40 msanalyse on-device
~5 Momodèle embarqué
3sous-projets + PWA
Ce qu'il y a sous le capot
  • Double stratégie d'inférence

    Modèle embarqué TFLite (mobile, offline) et inférence serveur ONNX (web/PWA), à partir du même modèle — conversion .tflite → ONNX validée par test de parité (écart < 2e-4).

  • Un seul codebase → 2 plateformes

    La PWA réutilise l'app Expo via les variants *.web.ts, sans toucher au natif — zéro régression côté mobile.

  • Auth mobile passwordless

    Mot de passe déterministe SHA-256(email + deviceId + pepper), jamais transmis ; gestion de bannissement en temps réel.

  • Sécurité API

    Validation Zod, rate-limiting par IP, garde anti-DoS (taille de payload + nombre de pixels), CORS maîtrisé.

  • Offline-first

    Cache local AsyncStorage + synchronisation best-effort vers le backend dès que le réseau revient.

  • DevOps

    Déploiement Vercel + Supabase, builds natifs EAS, CI/CD GitHub Actions, fix CMake Windows pour les modules natifs.

Envie de voir VinEye en action ?

Teste la démo web, installe l'app Android, ou explore le code source du monorepo.