π‘ Summary
N8ture AI App uses AI to identify wildlife, plants, and fungi from photos, providing safety and edibility information.
π― Target Audience
π€ AI Roast: βPowerful, but the setup might scare off the impatient.β
Risk: Medium. Review: shell/CLI command execution; outbound network access (SSRF, data egress); API keys/tokens handling and storage; filesystem read/write scope and path traversal. Run with least privilege and audit before enabling in production.
πΏ N8ture AI App - Wildlife & Plant Identification
π Table of Contents
- Overview
- Features
- Project Structure
- Tech Stack
- Getting Started
- Development
- Implementation Status
- Business Model
- API Integration
- Documentation
- Contributing
- License
π― Overview
N8ture AI App is a cross-platform mobile application that uses advanced AI to identify species from photos. Whether you're a nature enthusiast, forager, or outdoor adventurer, this app helps you safely identify plants, animals, and fungi with confidence.
Why N8ture AI?
- π€ AI-Powered: Google Gemini Vision API for accurate species identification
- π Safety First: Clear safety indicators for edibility and toxicity
- π± Cross-Platform: Native iOS & Android apps using Kotlin Multiplatform
- π Web Prototype: React-based web version for testing and development
- π° Freemium Model: 3 free identifications, with premium subscriptions available
β¨ Features
π Free Tier
- 3 lifetime identifications
- Basic species information
- Safety warnings (edible/poisonous)
- Confidence scoring
- Common and scientific names
π Premium ($4.99/month or $39.99/year)
- β Unlimited identifications
- πΈ High-resolution image capture
- π Location tracking and mapping
- πΊοΈ Detailed habitat information
- πΏ Medicinal and herbal benefits
- π¨βπ³ Cooking methods and recipes
- π΄ Offline mode (50 species cache)
- π Export identification history
- π Priority support
π Identification Categories
- π± Plants: Trees, flowers, shrubs, grasses
- π¦ Wildlife: Mammals, birds, reptiles, amphibians
- π Fungi: Mushrooms, lichens, molds
- π Insects: Butterflies, beetles, spiders
π‘οΈ Safety Indicators
- π’ Safe/Edible: Confirmed safe for consumption
- π‘ Caution: Edible with proper preparation/cooking
- π΄ Dangerous/Poisonous: Toxic or harmful
- βͺ Unknown: Insufficient data for determination
π Project Structure
This repository contains two parallel implementations:
N8ture-AI-App/
β
βββ Walker App/KAppMakerExtended-main/ # π± Production: Kotlin Multiplatform Mobile
β βββ composeApp/ # Main app module
β β βββ src/commonMain/ # Shared Kotlin code
β β β βββ domain/ # Business logic & models
β β β βββ data/ # Repositories & data sources
β β β βββ presentation/ # UI screens & components
β β βββ src/androidMain/ # Android-specific code
β β βββ src/iosMain/ # iOS-specific code
β βββ iosApp/ # iOS native wrapper
β βββ designsystem/ # Shared design system
β
βββ AI App for.../wildlife-id-app-complete/ # π Web Prototype: React + Flask
β βββ wildlife-id-app/
β βββ src/ # React frontend
β β βββ components/ui/ # shadcn/ui components
β β βββ App.jsx # Main app logic
β βββ backend/ # Flask backend (mock AI)
β βββ app.py # API endpoints
β
βββ CLAUDE.md # π€ Developer guide for Claude Code
βββ README.md # π This file
βββ N8ture AI App_MVP_PRD.md # Product requirements
βββ N8ture AI App_Implementation_Guide.md # Technical implementation details
βββ AppStructure_PRD.md # API migration guide (Replicate β Gemini)
π οΈ Tech Stack
Kotlin Multiplatform Mobile (Production App)
| Component | Technology | |-----------|-----------| | Platform | Kotlin Multiplatform Mobile (KMM) | | UI Framework | Compose Multiplatform + Material Design 3 | | Backend | Firebase (Auth, Firestore, Storage, Analytics, Crashlytics) | | AI Engine | Google Gemini Vision API | | Database | Room (SQLite) with multiplatform support | | Networking | Ktor Client | | Dependency Injection | Koin | | Subscriptions | RevenueCat (StoreKit 2 for iOS, Google Play Billing 5 for Android) | | Image Loading | Coil (Compose) | | Serialization | Kotlinx Serialization |
Platform Targets:
- Android: Min SDK 24 (Android 7.0), Target SDK 35
- iOS: Min iOS 14.0, Target iOS 17.0
React Web Prototype
| Component | Technology | |-----------|-----------| | Frontend | React 19 + Vite | | UI Library | shadcn/ui (Radix UI primitives) | | Styling | Tailwind CSS v4 | | Routing | React Router v7 | | Forms | React Hook Form + Zod validation | | Backend | Flask (Python 3) | | Package Manager | pnpm 10.4.1 |
π Getting Started
Prerequisites
For Kotlin App:
- β JDK 17 or higher
- π€ Android Studio Hedgehog (2023.1.1) or later
- π Xcode 15+ (for iOS development, macOS only)
- π§ kdoctor (for system verification)
For React Prototype:
- π¦ Node.js 18+
- π₯ pnpm 10.4.1
- π Python 3.8+
π± Kotlin Multiplatform Setup
1. Navigate to Project Directory
cd "Walker App/KAppMakerExtended-main"
2. Configure API Keys
Copy the template and add your credentials:
cp local.properties.template local.properties
Edit local.properties:
sdk.dir=/path/to/Android/sdk # Google Gemini API (https://ai.google.dev/) GEMINI_API_KEY=your_gemini_api_key # Firebase Web Client ID GOOGLE_WEB_CLIENT_ID=your_client_id.apps.googleusercontent.com # RevenueCat API Keys (https://revenuecat.com/) REVENUECAT_ANDROID_API_KEY=your_android_key REVENUECAT_IOS_API_KEY=your_ios_key # AdMob IDs (optional) ADMOB_APP_ID_ANDROID=ca-app-pub-xxx ADMOB_BANNER_AD_ID_ANDROID=ca-app-pub-xxx ADMOB_INTERSTITIAL_AD_ID_ANDROID=ca-app-pub-xxx ADMOB_REWARDED_AD_ID_ANDROID=ca-app-pub-xxx ADMOB_BANNER_AD_ID_IOS=ca-app-pub-xxx ADMOB_INTERSTITIAL_AD_ID_IOS=ca-app-pub-xxx ADMOB_REWARDED_AD_ID_IOS=ca-app-pub-xxx
3. Firebase Configuration
- Create a Firebase project at console.firebase.google.com
- Add Android app with package
com.measify.kappmaker - Add iOS app with bundle ID
com.measify.kappmaker - Download configuration files:
google-services.jsonβ Place incomposeApp/GoogleService-Info.plistβ Place iniosApp/iosApp/
4. RevenueCat Setup (Optional)
- Create account at revenuecat.com
- Configure products:
wildid_premium_monthly- $4.99/monthwildid_premium_annual- $39.99/year
- Add API keys to
local.properties
5. Build the App
Android:
# Build debug APK ./gradlew :composeApp:assembleDebug # Output: composeApp/build/outputs/apk/debug/composeApp-debug.apk # Run on connected device ./gradlew :composeApp:installDebug # Run tests ./gradlew :composeApp:connectedDebugAndroidTest
iOS (macOS only):
cd iosApp pod install open iosApp.xcworkspace
Or use the Kotlin Multiplatform Mobile plugin in Android Studio.
π React Web Prototype Setup
1. Navigate to Project Directory
cd "AI App for Identifying Wildlife, Plants, and Edibility/wildlife-id-app-complete/wildlife-id-app"
2. Install Dependencies
# Frontend pnpm install # Backend cd backend pip3 install -r requirements.txt cd ..
3. Start Development Servers
Terminal 1 - Backend:
cd backend python3 app.py # Backend runs at http://localhost:5000
Terminal 2 - Frontend:
pnpm dev # Frontend runs at http://localhost:5173 # For network access: pnpm dev -- --host
4. Build for Production
pnpm build pnpm preview
π¨ Development
Cleaning & Troubleshooting
# Clean build artifacts ./gradlew clean # Clean and rebuild ./gradlew clean :composeApp:assembleDebug # Verify system setup kdoctor # Check JDK version (must be 17+) java -version
Testing Commands
# Run common tests (shared code) ./gradlew :composeApp:commonTest # Run Android instrumented tests ./gradlew :composeApp:connectedDebugAndroidTest # Run iOS simulator tests ./gradlew :composeApp:iosSimulatorArm64Test # Get signing certificate SHA1 (for Firebase) ./gradlew :composeApp:signingReport
Code Architecture
Domain Layer (Business Logic)
// Species identification use case val result = identifySpeciesUseCase( imageData = capturedImage, category = SpeciesCategory.PLANT, isSubscribed = user.isPremium ) result.onSuccess { identification -> val confidence = identification.primaryMatch.getConfidencePercentage() // 85% val species = identification.primaryMatch.species val safety = species.edibility // EDIBLE, POISONOUS, etc. }
Trial Management
val trialState = trialManager.getTrialState() // TrialState(remainingIdentifications=3, isTrialExpired=false) if (trialManager.canIdentify()) { trialManager.useTrialIdentification(
Pros
- AI-powered accurate identifications
- Safety warnings for edibility
- Cross-platform availability
- Freemium model with premium features
Cons
- Limited free identifications
- Requires API keys for setup
- Dependency on internet for some features
- Potential privacy concerns with image uploads
Related Skills
pytorch
SβIt's the Swiss Army knife of deep learning, but good luck figuring out which of the 47 installation methods is the one that won't break your system.β
agno
SβIt promises to be the Kubernetes for agents, but let's see if developers have the patience to learn yet another orchestration layer.β
nuxt-skills
SβIt's essentially a well-organized cheat sheet that turns your AI assistant into a Nuxt framework parrot.β
Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.
Copyright belongs to the original author kelvincushman.
