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>
77 lines
2.2 KiB
JSON
77 lines
2.2 KiB
JSON
{
|
|
"name": "vineye",
|
|
"version": "1.0.0",
|
|
"main": "index.ts",
|
|
"scripts": {
|
|
"start": "expo start",
|
|
"android": "expo run:android",
|
|
"ios": "expo run:ios",
|
|
"web": "expo start --web"
|
|
},
|
|
"dependencies": {
|
|
"@expo/vector-icons": "^15.1.1",
|
|
"@gorhom/bottom-sheet": "^5.2.12",
|
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
"@react-native-community/netinfo": "11.4.1",
|
|
"@react-navigation/bottom-tabs": "^7.15.9",
|
|
"@react-navigation/native": "^7.2.2",
|
|
"@react-navigation/native-stack": "^7.14.10",
|
|
"@rn-primitives/portal": "^1.4.0",
|
|
"@rn-primitives/separator": "^1.4.0",
|
|
"@rn-primitives/slot": "^1.4.0",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"expo": "~54.0.33",
|
|
"expo-camera": "~17.0.10",
|
|
"expo-constants": "~18.0.13",
|
|
"expo-crypto": "~15.0.9",
|
|
"expo-dev-client": "~6.0.21",
|
|
"expo-haptics": "~15.0.8",
|
|
"expo-image": "~3.0.11",
|
|
"expo-image-manipulator": "^55.0.15",
|
|
"expo-linear-gradient": "~15.0.8",
|
|
"expo-localization": "~17.0.8",
|
|
"expo-location": "~19.0.8",
|
|
"expo-navigation-bar": "~5.0.10",
|
|
"expo-network": "~8.0.8",
|
|
"expo-status-bar": "~3.0.9",
|
|
"i18next": "^26.0.1",
|
|
"jpeg-js": "^0.4.4",
|
|
"lottie-react-native": "^7.3.6",
|
|
"lucide-react-native": "^1.7.0",
|
|
"nativewind": "^4.2.3",
|
|
"react": "19.1.0",
|
|
"react-dom": "19.1.0",
|
|
"react-i18next": "^17.0.1",
|
|
"react-lucid": "^0.0.1",
|
|
"react-native": "0.81.5",
|
|
"react-native-fast-tflite": "^3.0.1",
|
|
"react-native-gesture-handler": "~2.28.0",
|
|
"react-native-nitro-modules": "^0.35.6",
|
|
"react-native-reanimated": "~4.1.1",
|
|
"react-native-safe-area-context": "~5.6.0",
|
|
"react-native-screens": "~4.16.0",
|
|
"react-native-svg": "^15.12.1",
|
|
"react-native-web": "^0.21.2",
|
|
"react-native-webview": "~13.15.0",
|
|
"react-native-worklets": "0.5.1",
|
|
"sonner-native": "^0.24.0",
|
|
"tailwind-merge": "^3.5.0",
|
|
"tailwindcss": "3.4.17",
|
|
"zod": "^4.4.1"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "~19.1.0",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"typescript": "~5.9.2"
|
|
},
|
|
"private": true,
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"@expo/config-plugins",
|
|
"expo",
|
|
"expo-modules-core"
|
|
]
|
|
}
|
|
}
|