Logo Lanfrica

Uwanaaa/shamba-sky

Domain:

agriculturenatural language processing

Record type:

software
Creator:
Uwa
Host:
A farmer's weather assistant # Shamba Sky 🌀️🌾 **Shamba Sky** is a cozy, artsy farm-weather web app for Kenyan smallholders. Compare up to three shamba plots side by side, pull live forecasts from Weather-AI, get Gemini-powered farming tips, and receive weather alert webhooks β€” all in English or Kiswahili. Built as a take-home integration project for the Weather-AI developer platform. --- ## Live demo | | URL | |---|-----| | **App** | `shamba-sky.onrender.com` *(replace with your deploy URL)* | | **Health** | `shamba-sky.onrender.com` | | **Webhook** | `shamba-sky.onrender.com` | --- ## Features - **Multi-plot dashboard** β€” save up to 3 fields (name, lat/lon, crop, emoji) in `localStorage` - **Side-by-side compare** β€” responsive grid for 1–3 plots - **Weather-AI integration** - `GET /v1/weather?ai=true` β€” today's briefing + AI summary (`lang=en` \| `sw`) - `GET /v1/weather?ai=false` β€” 7-day chart data without burning AI quota - **Gemini farmer tips** β€” personalized headline + 3 practical tips per plot (Gemini API) - **Webhook alerts** β€” `POST /webhook` receives Weather-AI triggers; inbox on the home page - **Print summary** β€” printable daily shamba log - **Bilingual UI** β€” English / Kiswahili toggle --- ## Tech stack - **Next.js 16** (App Router) + **React 19** + **TypeScript** - **Tailwind CSS 4** β€” warm farm aesthetic (Fredoka + Caveat fonts) - **Weather-AI REST API** β€” server-side proxy (API key never sent to browser) - **Google Gemini** β€” structured JSON farmer advice via `x-goog-api-key` - **Deploy target** β€” Render (health check at `/health`) --- ## Quick start ### Prerequisites - Node.js **20+** - Weather-AI API key (`wai_…`) - Gemini API key (for farmer tips) - Weather-AI **Pro** plan (for webhooks in dashboard) ### Install & run ```bash git clone cd shamba-sky npm install cp .env.example .env.local ``` Edit **`.env.local`** in the `shamba-sky` folder *(not a parent-folder `.env` β€” Next.js only reads env from the app root)*: ```en …