A mobile-first biodiversity intelligence platform that enables fieldworkers to capture and analyze ecological data directly from the ground using on-device plant identification.
- Project Overview
- Problem Statement
- Key Features
- Technical Architecture
- Dataset & Model Training
- Installation Guide
- APK Build Instructions
- CI/CD Pipeline
- Project Structure
- Testing
- Challenges & Solutions
- Future Improvements
- Demo & Screenshots
- Submission Checklist
Darukaa Biodiversity Platform is a mobile-first intelligence platform that empowers fieldworkers to capture and analyze ecological data directly from the ground. The app uses on-device machine learning to identify plant species in real-time, enabling biodiversity documentation even in remote areas without internet connectivity.
Hackathon Context: Developed for the Darukaa.earth Applied AI Engineer Intern Hackathon
| Challenge | Description |
|---|---|
| 🌐 No Internet | Biodiversity hotspots lack reliable connectivity |
| ⚡ Real-time Need | Cloud processing is too slow for field work |
| 📊 Data Management | No structured way to document observations |
| 🔋 Battery Life | Cloud processing drains device battery |
✅ Works entirely offline ✅ Real-time plant identification ✅ Local observation storage ✅ Share results when connected
| Feature | Description |
|---|---|
| 📸 Smart Camera | Real-time camera with flash toggle and image preprocessing |
| 🤖 On-Device ML | TensorFlow Lite model running entirely on device |
| 💾 Offline Storage | Observations stored locally using AsyncStorage |
| 📊 Results View | Top predictions with confidence scores |
| 📋 History | Chronological observation history |
| 📤 Share | Export predictions through sharing apps |
| Component | Technology | Version |
|---|---|---|
| Framework | React Native + Expo | SDK 54 |
| Camera | expo-camera | ~17.0.10 |
| ML Runtime | react-native-fast-tflite | 1.0.0 |
| State Management | Zustand | 5.0.13 |
| Storage | AsyncStorage | 2.2.0 |
| Navigation | React Navigation | 7.x |
| Language | TypeScript | 5.9.2 |
┌─────────────────────────────────────────────────────────────┐
│ MOBILE DEVICE │
├─────────────────────────────────────────────────────────────┤
│ Camera ──▶ Preprocess ──▶ TFLite Model ──▶ Predictions │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ Capture 224x224 RGB MobileNetV2 Top Classes │
│ │
│ ▼ │
│ Zustand Store ◀────────────── Results Screen │
│ │ │
│ ▼ │
│ AsyncStorage (Local DB) │
│ │ │
│ ▼ │
│ History Screen │
└─────────────────────────────────────────────────────────────┘
| Parameter | Value |
|---|---|
| Number of Classes | 25 |
| Input Size | 224 x 224 |
| Model Type | MobileNetV2 |
| Runtime | TensorFlow Lite |
| Inference | On-device |
- Neem
- Tulsi
- Banyan
- Peepal
- Mango
- Coconut
- Banana
- Rose
- Marigold
- Lotus
- Aloe Vera
- Jasmine
- Hibiscus
- Sandalwood
- Bamboo
- Oak
- Maple
- Pine
- Sunflower
- Lavender
- Mint
- Coriander
- Tomato
- Wheat
- Rice
Input Image (224x224x3)
↓
MobileNetV2 Backbone
↓
GlobalAveragePooling
↓
Dense Layer
↓
Softmax Output
↓
Plant Prediction
| Parameter | Value |
|---|---|
| Batch Size | 32 |
| Epochs | 10 |
| Optimizer | Adam |
| Learning Rate | 0.001 |
| Loss Function | Sparse Categorical Crossentropy |
| Metric | Value |
|---|---|
| Training Accuracy | ~89% |
| TFLite Model Size | ~8 MB |
| Inference Time | ~150ms |
| Platform | Android |
node --version
npm --versionInstall required tools:
npm install -g eas-cligit clone https://github.com/your-username/mobile-first-biodiversity-intelligence-platform.git
cd mobile-first-biodiversity-intelligence-platformnpm install --legacy-peer-depsnpx expo-doctoreas build:configureeas build --platform android --profile previewExpo generates a downloadable APK build link after successful cloud build.
GitHub Actions workflow automatically:
✅ installs dependencies ✅ checks formatting ✅ runs linting ✅ validates TypeScript ✅ prepares Android build
mobile-first-biodiversity-intelligence-platform/
│
├── assets/
│ ├── models/
│ │ └── plant_model.tflite
│ ├── labels/
│ │ └── labels.txt
│ └── images/
│
├── components/
├── screens/
├── services/
├── store/
├── utils/
├── android/
├── ios/
├── App.tsx
├── eas.json
├── package.json
└── README.md
| Feature | Status |
|---|---|
| Camera Access | ✅ |
| Image Capture | ✅ |
| TensorFlow Lite Loading | ✅ |
| Real-time Inference | ✅ |
| Offline Storage | ✅ |
| APK Build | ✅ |
| Android Installation | ✅ |
| Challenge | Solution |
|---|---|
| Expo native dependency conflicts | Fixed using Expo SDK compatible packages |
| TensorFlow Lite integration | Used react-native-fast-tflite |
| Android build failures | Resolved Gradle and package version mismatches |
| Large model size | Used MobileNetV2 lightweight architecture |
- Add GPS-based biodiversity mapping
- Add multilingual support
- Improve model accuracy
- Add cloud sync
- Add species information pages
- Add unknown-object rejection threshold
- Add offline dataset caching
Add your demo video link here.
Example:
https://drive.google.com/your-demo-video-link
Add screenshots inside:
docs/screenshots/
Suggested screenshots:
- Home Screen
- Camera Screen
- Prediction Results
- History Screen
| Task | Status |
|---|---|
| Mobile-first app built | ✅ |
| TensorFlow Lite integrated | ✅ |
| On-device inference working | ✅ |
| APK generated | ✅ |
| Offline support implemented | ✅ |
| README completed | ✅ |
Ubaid Ashraf