Grapevine_Disease_Detection/VinEye/app.json
Yanis 086de7c05c feat(scanner,ml): real TFLite inference + preload + flip camera + analyzing skeleton
ML
- Reinstall react-native-fast-tflite + react-native-nitro-modules and
  register the fast-tflite Expo plugin in app.json
- Wire model.ts to the real native module: dynamic require + lazy
  loadTensorflowModel (cached), softmax/argmax on output, build Detection
  with the project 0-100 confidence convention. Falls back to mockDetection
  on any load/inference failure so the app never breaks.
- Align preprocessing input size to 256x256 to match the Python
  MobileNetV2 export.

Scanner UX
- Preload the TFLite model on Scanner mount to avoid the ~1-2s decode hit
  on first capture
- Add a flip-front/back camera control with a toast warning that the rear
  camera gives better results
- Show a full-screen analyzing skeleton overlay while inference runs
- Memoize ConfidenceMeter color into a single computed value

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 11:31:17 +02:00

67 lines
2.1 KiB
JSON

{
"expo": {
"name": "VinEye",
"slug": "vineye",
"version": "1.0.0",
"scheme": "vineye",
"orientation": "portrait",
"icon": "./src/assets/images/icon.png",
"userInterfaceStyle": "light",
"newArchEnabled": true,
"splash": {
"image": "./src/assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#2D6A4F"
},
"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.vineye.app",
"infoPlist": {
"NSCameraUsageDescription": "VinEye needs camera access to detect grapevine diseases.",
"NSPhotoLibraryUsageDescription": "VinEye needs access to your photo library to import vine images."
}
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./src/assets/images/adaptive-icon.png",
"backgroundColor": "#2D6A4F"
},
"package": "com.vineye.app",
"permissions": [
"android.permission.CAMERA",
"android.permission.INTERNET",
"android.permission.ACCESS_NETWORK_STATE",
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.ACCESS_COARSE_LOCATION",
"android.permission.ACCESS_FINE_LOCATION"
]
},
"web": {
"favicon": "./src/assets/images/icon.png"
},
"plugins": [
"./plugins/withCmakeFix",
"react-native-fast-tflite",
"expo-localization",
[
"expo-camera",
{
"cameraPermission": "VinEye needs camera access to detect grapevines.",
"microphonePermission": false,
"recordAudioAndroid": false
}
],
[
"expo-location",
{
"locationAlwaysAndWhenInUsePermission": "VinEye souhaite accéder à votre position pour géolocaliser vos scans sur la carte.",
"locationWhenInUsePermission": "VinEye souhaite accéder à votre position pour géolocaliser vos scans sur la carte.",
"isAndroidBackgroundLocationEnabled": false,
"isIosBackgroundLocationEnabled": false
}
]
]
}
}