尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗মাঠের সৎ ডাক্তার — a Bengali, mobile-first UI for advising potato farmers on late blight, and paddy farmers on rice blast: daily risk from the weather, leaf photo diagnosis that admits uncertainty (potato, and paddy as an experiment, see Paddy diagnosis), an area risk map, and a season ledger. Every number on screen comes from a real source: the weather forecast, the farmer's own records on the phone, or cases an agriculture officer has confirmed. There is no sample or demo data.
Built with Next.js (App Router), TypeScript and Tailwind CSS v4.
This is a deliberate focus: one crop and one disease done honestly, rather than many done thinly.
Pests are not covered. The challenge asks for pests and diseases. We chose to cover one disease end to end (forecast, SMS alert, photo check, officer review, ledger) first. The pieces are built to grow:
src/lib/crops.ts), and paddy blast already runs on it as a draft rule (experimental).src/lib/diagnosis/crops.ts). Paddy diagnosis runs end to end on a model trained by notebooks/paddy_training.ipynb, labelled experimental; pests such as potato tuber moth or aphids would be new classes the same way.See Limitations and next steps for what is not yet validated.
npm install
npm run dev # http://localhost:3000
npm run build && npm start
npm test # unit tests (node:test)
npm run typecheck
npm run lint
On a locked-down network npm install can fail because onnxruntime-node (used only by the parity test) downloads its GPU files from NuGet. Set ONNXRUNTIME_NODE_INSTALL_CUDA=skip first.
| Route | Screen |
|---|---|
/ | Home: today's live risk at the farmer's union for each field in season (a chip per field), 5-day forecast, today's decision; a 4-card intro on first open |
/camera | Leaf photos (top, then underside) and on-device diagnosis |
/result/uncertain | "Not sure": the candidates the photos left |
/questions | Two questions that narrow the candidates |
/result | Final diagnosis, including "healthy" |
/unknown | Can't identify: send to agriculture officer |
/map | The unions of the farmer's upazila (Shibganj, Bogura, until one is chosen): today's weather risk per crop (আলু · ধসা / ধান · ব্লাস্ট) and officer-confirmed cases |
/ledger | A field's season (?field=potato|boro|aman) from the real weather and the sprays the farmer logged |
/planting | "আমার জমি": the farmer's place (district → upazila → union, ?d=/?u= are the steps), and their fields: crop (আলু, or ধান with বোরো/আমন) and planting date (?season= opens one) |
/guide | How to use the app, in plain Bengali, each part read aloud |
/potato | Potato growing advice for Bangladesh: planting, varieties, late blight, wilt, harvest, storage, stored-tuber diseases, with sources |
/ask | «কৃষি সহায়ক»: questions answered in Bengali from the app's own advice, with sources |
/docs | How it works, in English, for judges, partners and agronomists: the evidence and how AI is used |
/sign-in | Mobile number, then the SMS code (?next= is where to go after) |
/account | The signed-in number and role, SMS risk alerts on/off, sign out (from the person button on Home) |
/officer | Agriculture officers only: where farmers' cases will be listed |
Home's risk is computed from the weather, with no ML. src/lib/weather.ts fetches a 5-day hourly forecast (temperature, relative humidity) at the centroid of the farmer's union (or Shibganj upazila, Bogura, before one is chosen) from Open-Meteo (no API key, cached for 1 hour, 5 s timeout). src/lib/risk.ts applies the Hutton criteria to it:
The same result is served as JSON at GET /api/risk (optional lat, lon, by default the farmer's union; optional crop=potato|paddy, potato by default). If the forecast can't be fetched, Home says so ("আবহাওয়ার তথ্য আনা যায়নি") and shows no risk at all, never an old or made-up one.
以上為 README 的開頭部分。其餘內容請閱讀原文。 檢視完整 README ↗