This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
For Hacktoberfest Week 1 — "Touch Grass" — I built SnapNature, a mobile-first Progressive Web App that gets people out of their screens and into nature.
Demo
Code
SnapNature
A minimal web application for nature image recognition using deep learning.
Overview
SnapNature uses a pre-trained ResNet50 model (ImageNet) to classify images. Upload a photo of plants, animals, or natural objects, and get instant predictions.
Features
- 🖼️ Web-based image upload interface
- 🔍 Top-5 predictions with confidence scores
- 🌐 REST API for programmatic access
- 🐳 Docker support
- ⚡ Fast inference with PyTorch
Quick Start
Option 1: Local Setup
# Create virtual environment python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # Linux/Mac # Install dependencies pip install -r requirements.txt # Run the app uvicorn main:app --reload --port 8000 Visit http://127.0.0.1:8000 to use the web interface.
Option 2: Docker
docker build -t snapnature . docker run -p 8000:8000 snapnature API Usage
Upload Image
curl -X POST "http://127.0.0.1:8000/predict" \ -F "file=@path/to/image.jpg" Predict from URL
curl "http://127.0.0.1:8000/predict_url?url=https://example.com/image.jpg" Health Check
curl "… How I Built It
- 📸 Take a photo of any plant, animal, or nature scene
- 🤖 Identify it using an open-source HuggingFace Vision Transformer (ViT) model —
google/vit-base-patch16-224 - 🌱 See results with confidence scores and fun education facts
- 📝 Save to journal — offline observations stored in your browser
- 📱 Works offline via Service Worker — go to a trail, no signal needed
Key Features
- Open-source AI at core — Uses open-weight HuggingFace models, not a locked vendor API
- Works on any device — PWA installs to home screen, responsive design
- Privacy-first — Photos saved locally, nothing sent to cloud databases
- Swap the model — Replace with fine-tuned regional biodiversity models easily
The Challenge: "Touch Grass"
The theme is simple: get outside. SnapNature encourages that directly — open the app, go find something interesting, take a photo. The app then teaches you about it. It's exploration + education combined.
Why Does Open Innovation Matter?
SnapNature demonstrates why open weight models matter:
- No vendor lock-in — The ViT model is open; swap it anytime
- Runs without expensive APIs — Works with free HuggingFace inference
- Fine-tuning ready — Train on local bird/plant datasets for your region
- Data stays yours — All observations in localStorage; your data, your control
- Offline by design — Service worker caches assets; works without internet after first visit
Closed APIs don't count as core. Open innovation does.
System Design
Camera/Upload → HuggingFace ViT (Open Weight) → Results + Fun Facts ↓ Nature Journal (localStorage) ↓ Service Worker / PWA (Offline) Project Structure
snapnature/ ├── index.html # Mobile-first PWA UI ├── js/app.js # Camera, AI integration, journal ├── css/style.css # Responsive design ├── sw.js # Offline service worker ├── manifest.json # PWA install config └── main.py # FastAPI backend (optional Python API mode) Tech Stack
- Frontend: Vanilla HTML/CSS/JS (no framework needed for speed)
- AI: HuggingFace Inference API with
google/vit-base-patch16-224 - Storage: browser
localStoragefor offline journal - PWA: Service worker + Web App Manifest
- Backend (optional): FastAPI + PyTorch ResNet50
Where to Try
Live: https://github.com/nashdev97/snapnature
Clone and run locally:
git clone https://github.com/nashdev97/snapnature.git cd snapnature python -m http.server 8080 # Open http://localhost:8080 My Agent Session
Agent session - Claude and Omniroute.
Prize Categories
- Best Use of Open-Source AI / Open Weight Models
- Best Mobile / PWA Implementation
- Best "Touch Grass" Theme Execution
- Best Offline / On-Device Innovation
Built with open-source tools for Hacktoberfest 2026. Let's get outside. 🌿

