This is a submission for the Hacktoberfest 2026 DEV Challenge: Week 1 — Touch Grass Theme.
🌿 GrassRoots AI: Reconnecting Developers with Nature
What I Built
As developers, engineers, and digital builders, we spend an overwhelming amount of time staring at screens, debugging stack traces, and working in digital environments. The theme for Hacktoberfest 2026 Week 1 — "Touch Grass" offers a simple but meaningful reminder: step outside, disconnect from digital fatigue, and reconnect with the natural world.
That inspired me to build GrassRoots AI, an offline-first, open-source nature exploration and bio-monitoring web application powered by locally running open-weight AI models.
GrassRoots AI helps users explore local ecosystems, identify plants and pollinators, generate personalized nature trails, record field observations, and participate in mindful outdoor activities—all while prioritizing privacy and reducing dependence on cloud services.
Many plant identification applications have two major limitations:
- Cloud dependency and privacy concerns: They often require an internet connection and may upload personal images or location information to remote servers.
- Passive interaction: They identify a plant but rarely encourage users to engage meaningfully with their surroundings.
GrassRoots AI aims to bridge that gap. It combines local AI inference using Gemma 2 and Ollama with interactive nature challenges, an offline-friendly field journal, and an ecosystem exploration guide.
The idea is simple: use technology to help people spend more time experiencing nature, not more time looking at a screen.
Category and Track Selection
- Challenge: Hacktoberfest 2026 DEV Challenge — Week 1
- Theme: Touch Grass
- AI Track: Gemma — Google Open-Weight AI
- Core Focus: Local AI inference, privacy-first design, environmental awareness, and nature exploration.
Core Features
1. Offline Plant and Wildlife Identifier
The specimen identification experience combines visual analysis with AI-assisted botanical reasoning.
- Multimodal specimen scanner: Upload field photographs or explore curated sample specimens, including California Poppy, Western Maidenhair Fern, Common Dandelion, Stinging Nettle, Broadleaf Plantain, and Western Honeybee.
- Two-stage vision and reasoning pipeline: Uses Moondream for visual analysis and Gemma 2 for follow-up reasoning, taxonomy validation, and classification.
- Botanical intelligence reports: Provides scientific names, plant families, native or invasive status where supported, sunlight requirements, soil moisture preferences, and relevant safety cautions.
- Sensory Touch Grass challenges: Generates practical outdoor activities, such as observing pollinator visits, comparing leaf surface properties, or noticing the earthy scent associated with moist soil.
The goal is to turn plant identification into an interactive learning experience rather than simply returning a species name.
2. Local Ecosystem and Trail Advisor
GrassRoots AI can generate nature exploration plans tailored to the user's interests and available time.
- Personalized nature walks: Create suggested excursions for deciduous forests, riparian stream banks, urban greenbelts, coastal meadows, and backyard gardens.
- Flexible durations: Plan anything from a 30-minute mindfulness walk to a half-day outdoor exploration.
- Interactive checkpoints: Follow suggested observation activities, species checklists, and mindfulness prompts.
- Gear checklists: Prepare for an excursion with relevant packing suggestions and Leave No Trace principles.
Each trail plan is designed to encourage observation, curiosity, and responsible interaction with the environment.
3. Community Hub and Field Journal
Every outdoor discovery can become part of a personal nature journal.
-
Field observation logger: Save discoveries locally in browser
localStorage, including photo previews, available coordinates, model-generated tags, and personal notes. - Achievement badges: Unlock milestones such as Flora Scout, Pollinator Ally, Fungi Whisperer, and Botanical Chronicler.
- Community summary exporter: Generate Markdown summaries for sharing observations on DEV, iNaturalist, or local conservation forums.
The journal provides a lightweight way to document discoveries without requiring a centralized account or cloud database.
4. Offline Field Guide
The built-in field guide helps users explore botanical information even when an AI service is unavailable.
It includes:
- Searchable botanical reference information.
- Distinguishing morphological characteristics.
- Blooming seasons and habitat information.
- Warnings about potentially confusing lookalike species.
- Responsible guidance around foraging and plant handling.
Safety note: AI-generated identification is not definitive. Users should independently verify species and never consume a plant or use it medicinally based solely on an AI-generated result.
Architecture and Technology Stack
GrassRoots AI uses a local inference pipeline with a deterministic fallback for situations where the AI service cannot be reached.
graph TD
User([Explorer with Device]) --> UI[React 19 + Tailwind UI]
UI --> Service[Local AI Service Layer]
Service --> Probe{Ollama Available?}
Probe -->|Available| Vision[Moondream Vision Model]
Vision --> Reasoning[Gemma 2 Reasoning]
Probe -->|Unavailable| Fallback[Botanical Heuristics Engine]
Reasoning --> Result[Botanical Report and Nature Challenge]
Fallback --> Result
Result --> Journal[Local Field Journal]
Result --> Exporter[Markdown Community Exporter]
Technology Stack
| Component | Technology |
|---|---|
| Frontend | React 19, Vite 8, TypeScript |
| Styling | Tailwind CSS, custom forest and emerald palette |
| Icons and animations | Lucide React, Framer Motion, Canvas Confetti |
| Local AI runtime | Ollama |
| Vision model | Moondream |
| Reasoning model | Gemma 2:9b or Gemma 2:2b |
| Optional alternative | Llama 3:8b |
| Local persistence | Browser localStorage
|
| Fallback system | Deterministic botanical heuristics |
The fallback engine helps keep the core demonstration usable when Ollama is unavailable. However, fallback-generated results should not be treated as equivalent to model-verified biological identification.
Why Gemma 2 and Open-Weight AI Matter
Connecting with nature should not require uploading personal photographs or location information to a remote AI service.
Running models locally offers several advantages:
1. Privacy-first exploration
Field photographs, saved observations, and trail notes can remain on the device when the application is configured to use local inference and local storage exclusively.
2. Reduced dependence on connectivity
Remote trails, forests, and rural areas may have unreliable mobile internet. A locally available model can continue to support AI-assisted exploration without cloud API access, provided the required models are already downloaded and the device can run them.
3. No per-request cloud API billing
Local inference avoids metered third-party inference charges, although users still need suitable hardware, storage, electricity, and downloaded model files.
4. Greater control over the AI experience
Developers can inspect the model configuration, experiment with prompts, switch compatible models, and customize the inference pipeline.
Gemma 2 is the reasoning component in this design, while Moondream handles visual analysis. This separation allows the application to combine image understanding with more structured botanical reasoning.
Running GrassRoots AI Locally
Prerequisites
Before starting, install:
- Node.js and npm.
- Git.
- Ollama.
- Sufficient memory and storage for the selected AI models.
Step 1: Download the AI Models
Open a terminal and run:
ollama pull moondream
ollama pull gemma2:9b
For a lighter alternative, use:
ollama pull gemma2:2b
Choose a model appropriate for your hardware. Smaller models generally require fewer resources but may provide less reliable or detailed results.
Step 2: Start Ollama
If your frontend connects directly to the local Ollama HTTP API, configure the required browser-origin access before starting the service.
Windows PowerShell:
$env:OLLAMA_ORIGINS="http://localhost:5173"
ollama serve
macOS/Linux:
export OLLAMA_ORIGINS="http://localhost:5173"
ollama serve
Replace the origin with your actual frontend origin if it differs.
Allowing browser-origin access is not the same as securing the service. Avoid exposing Ollama publicly, and use a backend proxy or other appropriate security controls if the deployment requires them.
Step 3: Clone the Repository
git clone https://github.com/Babin123456/GrassRoots-AI.git
cd GrassRoots-AI
Step 4: Install Dependencies
npm install
Step 5: Start the Development Server
npm run dev
Open the local URL printed by Vite, typically:
http://localhost:5173
Important: These instructions assume the repository's scripts, dependencies, and model integration are configured as described. The application must also handle browser access, model availability, and inference errors appropriately.
Design and Aesthetic Highlights
GrassRoots AI embraces a botanical visual identity inspired by forests, moss, and living ecosystems.
-
Botanical glassmorphism: Deep obsidian and emerald backgrounds (
#070b09), translucent cards, and softly glowing borders. - Living interface elements: An animated leaf emblem that reinforces the application's nature-focused identity.
- Interactive feedback: A scanning animation during inference, latency indicators, and celebratory leaf effects when saving discoveries.
- Outdoor-first experience: A visual language designed to support focused exploration rather than encourage endless screen time.
The interface aims to feel modern and immersive without losing sight of the project's central purpose: encouraging people to step outside.
Open Source and License
GrassRoots AI is intended to be an open-source project licensed under the MIT License.
- GitHub Repository: https://github.com/Babin123456/GrassRoots-AI
- Local Development: Run the application with the instructions above.
- Deployment: Static hosting on platforms such as GitHub Pages or Vercel may be possible for the frontend, provided the local inference architecture and browser restrictions are handled appropriately.
What Makes GrassRoots AI Different?
GrassRoots AI combines three ideas into one experience:
- Local AI: Use open-weight models without depending on a hosted inference API for every request.
- Environmental learning: Turn identification results into practical observation activities.
- Personal field documentation: Keep a local record of discoveries and make observations easy to share.
Rather than treating AI as a replacement for outdoor exploration, the project uses AI as a companion for curiosity, learning, and environmental awareness.
Closing Thought: Go Touch Grass!
Technology is at its best when it helps us reconnect with the world around us rather than escape from it.
Take GrassRoots AI on your next morning walk. Observe a roadside fern, watch a pollinator visit a flower, notice how sunlight changes across a leaf, and document something you have never paid attention to before.
You do not always need another screen, another notification, or another endless scroll.
Sometimes, the best discovery starts when you put your device away and step outside.
Build with AI. Learn from nature. Go touch grass. 🌿
Top comments (0)