AgriHub: A full-stack web and mobile application for modern agriculture management. Features include AI-powered crop recommendations, real-time market data, multilingual support (English & Kinyarwanda), and interactive dashboards. Built with a responsive frontend, serverless backend, and Firebase/Realtime Database integration.
# AgriHub
Offline plant disease detection mobile app powered by on-device machine learning. Identify crop diseases from leaf photos without an internet connection.
## Features
- **Offline ML Inference** -- Runs MobileNetV2 on-device using ONNX Runtime, no server required
- **38 Disease Classes** -- Covers 14 crop species including Apple, Tomato, Corn, Grape, Potato, and more
- **Camera & Gallery** -- Capture a leaf photo or pick from gallery for instant analysis
- **Disease Details** -- View confidence scores, severity, and crop identification
- **Scan History** -- Track past scans with local storage
- **Treatment Info** -- Organic and chemical treatment recommendations
## Tech Stack
| Layer | Technology |
|-------|-----------|
| Framework | React Native 0.81 + Expo SDK 54 |
| Navigation | Expo Router 6 (file-based) |
| ML Runtime | ONNX Runtime React Native 1.23 |
| ML Model | MobileNetV2 (PlantVillage dataset) |
| Image Processing | expo-image-manipulator + jpeg-js |
| Storage | AsyncStorage |
| Language | TypeScript 5.9 |
## Project Structure
```
AgriHub/
├── app/ # Expo Router screens
│ ├── (tabs)/ # Tab navigation
│ │ ├── index.tsx # Home / scan screen
│ │ ├── browse.tsx # Browse crops & diseases
│ │ ├── history.tsx # Scan history
│ │ └── settings.tsx # App settings
│ ├── scan/
│ │ ├── camera.tsx # Camera capture
│ │ └── results.tsx # Analysis results
│ └── details/
│ ├── crop/[id].tsx # Crop detail page
│ └── disease/[id].tsx # Disease detail page
├── src/
│ ├── ml/ # Machine learning
│ │ ├── ModelManager.ts # ONNX inference engine
│ │ ├── labels.ts # 38 disease + 14 crop labels
│ │ └── types.ts # ML type definitions
│ ├── components/ui/ # Reusable UI components
│ ├── constants/ # App & ML config
│ ├── context/ # R …