Logo Lanfrica

Uwanaaa/shamba-sky

Domaine:

agriculturenatural language processing

Type de record:

software
Créateur:
Uwa
HĂ´te:
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 …