- Ringkasan Proyek
- Latar Belakang & Permasalahan
- Tujuan & Manfaat
- Arsitektur Sistem
- Tech Stack
- Fitur Utama
- Model Machine Learning
- Alur Pengguna (User Flow)
- Struktur Proyek
- API Reference
- Integrasi & Layanan Pihak Ketiga
- Instalasi & Penggunaan
- Environment Variables
- Tim Pengembang
- Roadmap & Pengembangan
Smartfarm AI (Agrify) adalah platform web cerdas berbasis kecerdasan buatan (AI) yang dirancang khusus untuk membantu petani Indonesia dalam mengelola lahan pertanian secara lebih efisien, mendeteksi penyakit tanaman secara otomatis, serta menyediakan informasi cuaca dan harga pasar komoditas dalam satu ekosistem terpadu.
Sistem ini menggabungkan teknologi Computer Vision untuk deteksi penyakit tanaman melalui analisis citra, forecasting cuaca real-time, manajemen lahan digital, penjadwalan tugas pertanian terstruktur, serta monitoring harga komoditas pasar — semuanya diakses melalui antarmuka web modern yang responsif dan ramah pengguna.
-
Keterlambatan Identifikasi Penyakit Tanaman — Petani seringkali kesulitan mengenali jenis penyakit yang menyerang tanaman secara dini, sehingga penanganan menjadi terlambat dan berujung pada kerugian hasil panen.
-
Minimnya Akses Informasi Cuaca Lokal — Petani tradisional masih menggunakan metode konvensional untuk memperkirakan cuaca, yang seringkali tidak akurat dan menyebabkan keputusan pertanian yang kurang tepat.
-
Manajemen Lahan yang Tidak Terstruktur — Pencatatan informasi lahan, jadwal perawatan, dan pengelolaan tugas harian masih dilakukan secara manual menggunakan catatan kertas yang rentan hilang.
-
Kurangnya Transparansi Harga Pasar — Petani tidak memiliki akses real-time terhadap fluktuasi harga komoditas, sehingga sulit menentukan waktu jual yang optimal.
-
Kesenjangan Teknologi di Sektor Pertanian — Teknologi AI dan machine learning belum banyak dimanfaatkan di sektor pertanian Indonesia, khususnya untuk petani kecil dan menengah.
Smartfarm AI hadir sebagai solusi all-in-one yang mengintegrasikan:
- Deteksi penyakit otomatis berbasis AI melalui foto tanaman
- Prakiraan cuaca 7 hari berdasarkan lokasi pengguna
- Dashboard manajemen lahan pertanian digital
- Sistem penjadwalan tugas dengan strategi budidaya komoditas
- Informasi harga komoditas pasar terkini
- Sistem pelaporan dan komunikasi via email
| No | Tujuan |
|---|---|
| 1 | Mengembangkan sistem deteksi penyakit tanaman berbasis deep learning yang akurat dan cepat |
| 2 | Menyediakan platform manajemen pertanian digital terintegrasi untuk petani Indonesia |
| 3 | Mengimplementasikan prakiraan cuaca berbasis lokasi untuk mendukung pengambilan keputusan pertanian |
| 4 | Membangun sistem penjadwalan budidaya otomatis berdasarkan jenis komoditas dan modal |
| 5 | Menciptakan ekosistem informasi pertanian yang komprehensif dan mudah diakses |
- Bagi Petani: Meningkatkan produktivitas melalui deteksi dini penyakit, perencanaan tanam yang lebih baik, dan akses informasi pasar
- Bagi Penyuluh Pertanian: Alat bantu diagnosis yang akurat untuk memberikan rekomendasi penanggulangan
- Bagi Akademisi: Referensi implementasi AI di sektor pertanian Indonesia
- Bagi Pemerintah: Data driven insights untuk kebijakan pertanian berbasis teknologi
┌──────────────────────────────────────────────────────────────────┐
│ CLIENT (Browser) │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ React 19 + Vite 7 │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │
│ │ │ Pages │ │Components│ │ Context │ │ Services │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │• Home │ │• Header │ │• Auth │ │• Firebase │ │ │
│ │ │• Dashboard│ │• Sidebar │ │• Location│ │• Weather API │ │ │
│ │ │• Predict │ │• Modals │ │ │ │• EmailJS │ │ │
│ │ │• Market │ │• Footer │ │ │ │• Location │ │ │
│ │ │• Tasks │ │ │ │ │ │ │ │ │
│ │ │• Report │ │ │ │ │ │ │ │ │
│ │ │• Auth │ │ │ │ │ │ │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────┬───────┘ │ │
│ └────────────────────────────────────────────────┼───────────┘ │
└───────────────────────────────────────────────────┼──────────────┘
│
┌───────────────────────────────────────┼──────────┐
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌─────────────────┐ ┌──────────┐
│ FastAPI Backend │ │ Firebase │ │ External │
│ (Python) │ │ Platform │ │ APIs │
│ │ │ │ │ │
│ ┌───────────────┐ │ │ • Authentication │ │• Open │
│ │ OpenVINO │ │ │ • Realtime DB │ │ Meteo │
│ │ ML Engine │ │ │ • Analytics │ │• Nominatim│
│ │ │ │ │ │ │• Wilayah │
│ │ Plant Disease │ │ │ Data Stores: │ │ ID API │
│ │ Model v3.1 │ │ │ • users/ │ │• EmailJS │
│ │ (48 classes) │ │ │ • lands/ │ │ │
│ │ │ │ │ • tasks/ │ │ │
│ └───────────────┘ │ │ • landExpenses/ │ │ │
│ │ │ │ │ │
│ POST /predict │ │ │ │ │
└──────────────────┘ └─────────────────┘ └──────────┘
| Aspek | Detail |
|---|---|
| Frontend Pattern | Component-Based Architecture dengan React Context API untuk state management |
| Backend Pattern | RESTful API dengan FastAPI (Python) |
| ML Inference | OpenVINO Runtime untuk optimasi inferensi model pada CPU |
| Database | Firebase Realtime Database (NoSQL, real-time sync) |
| Authentication | Firebase Authentication (Email/Password + Google OAuth 2.0) |
| Routing | Client-side routing dengan React Router DOM v7 |
| Data Fetching | TanStack React Query untuk server state management & caching |
| Styling | Tailwind CSS v4 dengan glassmorphism design system |
| Teknologi | Versi | Fungsi |
|---|---|---|
| React | 19.1.0 | Library UI utama dengan functional components & hooks |
| Vite | 7.0.3 | Build tool & dev server dengan HMR (SWC-based) |
| Tailwind CSS | 4.1.11 | Utility-first CSS framework |
| React Router DOM | 7.6.3 | Client-side routing & navigation |
| TanStack React Query | 5.83.0 | Async state management, caching, & data fetching |
| Firebase SDK | 11.10.0 | Authentication, Realtime Database, Analytics |
| React Markdown | 10.1.0 | Rendering hasil prediksi dalam format Markdown |
| Day.js | 1.11.13 | Manipulasi dan format tanggal (locale Indonesia) |
| React Icons | 5.5.0 | Library ikon (FI, FA, IO, HI, FC) |
| EmailJS | 4.4.1 | Pengiriman email langsung dari client |
| Teknologi | Fungsi |
|---|---|
| FastAPI | Framework Python untuk REST API |
| Uvicorn | ASGI server dengan hot-reload |
| OpenVINO | Intel AI inference engine untuk model ML |
| Pillow (PIL) | Pemrosesan gambar (resize, convert) |
| NumPy | Operasi array untuk preprocessing gambar |
| python-multipart | Parser multipart/form-data untuk upload file |
| Layanan | Fungsi |
|---|---|
| Firebase Authentication | Autentikasi pengguna (email/password + Google OAuth) |
| Firebase Realtime Database | Penyimpanan data user, lahan, tugas, dan pengeluaran |
| Firebase Analytics | Tracking penggunaan aplikasi |
| Open-Meteo API | Data prakiraan cuaca 7 hari (gratis, tanpa API key) |
| Nominatim (OpenStreetMap) | Geocoding & reverse geocoding lokasi |
| API Wilayah Indonesia | Data provinsi, kabupaten, kecamatan, kelurahan se-Indonesia |
| EmailJS | Layanan pengiriman email untuk fitur laporan/kontak |
Fitur unggulan yang memanfaatkan model deep learning untuk mengidentifikasi 48 jenis kondisi pada 14 spesies tanaman melalui analisis citra daun.
- Input: Foto tanaman melalui kamera langsung atau upload file
- Proses: Gambar di-resize ke 224×224 px, normalisasi, lalu diproses oleh model OpenVINO
- Output: Label penyakit, tingkat kepercayaan (%), deskripsi penyakit, dan rekomendasi obat
- Rendering: Hasil ditampilkan dalam format Markdown yang informatif
Tanaman yang Didukung:
| Tanaman | Jumlah Kelas | Penyakit yang Terdeteksi |
|---|---|---|
| Tomat | 10 | Bercak Bakteri, Hawar Daun Dini/Akhir, Jamur Daun, Septoria, Tungau, Bercak Target, Virus Keriting Kuning, Virus Mosaik, Sehat |
| Padi | 10 | Hawar Daun Bakteri, Garis Bakteri, Hawar Penicle, Blast, Bercak Coklat, Dead Heart, Embun Tepung, Wereng Batang, Tungro, Sehat |
| Jagung | 4 | Bercak Daun Cercospora, Karat Umum, Hawar Daun Utara, Sehat |
| Apel | 4 | Kudis Apel, Busuk Hitam, Karat Cedar, Sehat |
| Anggur | 4 | Busuk Hitam, Esca, Hawar Daun Isariopsis, Sehat |
| Kentang | 3 | Hawar Daun Dini, Hawar Daun Akhir, Sehat |
| Paprika | 2 | Bercak Bakteri, Sehat |
| Ceri | 2 | Embun Tepung, Sehat |
| Persik | 2 | Bercak Bakteri, Sehat |
| Stroberi | 2 | Daun Gosong, Sehat |
| Jeruk | 1 | Penyakit CVPD |
| Labu | 1 | Embun Tepung |
| Bluberi | 1 | Sehat |
| Raspberry | 1 | Sehat |
| Kedelai | 1 | Sehat |
Menampilkan prakiraan cuaca berdasarkan lokasi pengguna dengan dua mode:
- Mode Otomatis: Deteksi lokasi via GPS browser + reverse geocoding untuk nama daerah
- Mode Manual: Seleksi bertingkat Provinsi → Kabupaten → Kecamatan → Kelurahan
- Data: Suhu max/min, kode cuaca (30+ kondisi), emoji visual
- Peringatan Hujan: Alert otomatis jika ramalan hari ini/besok menunjukkan hujan
Dashboard pengelolaan lahan digital yang terhubung dengan Firebase Realtime Database:
- Tambah Lahan: Nama, jenis tanaman (8 komoditas), lokasi (otomatis/manual), luas
- Deteksi Lokasi: Auto-detect via GPS atau pilih manual hingga tingkat kelurahan
- Multi-step Form: Wizard 2 langkah untuk pengisian data yang terstruktur
- Real-time Sync: Data tersinkronisasi secara real-time antar perangkat
Manajemen tugas pertanian yang lengkap dengan dua mode pembuatan tugas:
- Tugas Manual: Input judul dan tanggal tugas secara langsung
- Tugas AI-Generated: Berdasarkan lahan terdaftar, jenis komoditas, fase tanam, dan modal
- Mendukung komoditas: Padi, Jagung, Cabai
- Strategi budidaya: Paket Hemat, Optimal, dan Intensif (masing-masing komoditas)
- Jadwal operasional otomatis: 9-10 task dari awal tanam hingga panen
- Kalender Visual: Tampilan kalender bulanan untuk melihat distribusi tugas
- Progress Tracking: Toggle status selesai, hapus tugas, progress bar harian
- Evaluasi Tugas: Modal evaluasi dengan tracking pengeluaran per lahan dan estimasi profit
Monitoring harga komoditas pertanian dengan fitur:
- 7 Komoditas: Padi, Jagung, Kedelai, Singkong, Kentang, Cabai, Tomat
- Data Tren: Kenaikan/penurunan harga dengan indikator visual
- Filter & Sort: Pencarian, filter wilayah, sorting berdasarkan nama/harga/perubahan
- Format IDR: Harga dalam mata uang Rupiah Indonesia
Formulir kontak terintegrasi dengan EmailJS:
- Kirim laporan bug, saran, atau pertanyaan langsung ke tim pengembang
- Notifikasi keberhasilan/kegagalan pengiriman
- Template email otomatis dengan timestamp
Sistem keamanan berlapis dengan Firebase Authentication:
- Registrasi: Email/password dengan penyimpanan profil ke Realtime Database
- Login: Email/password atau Google OAuth 2.0
- Route Protection:
RequireAuthguard untuk halaman yang memerlukan login - Auto Redirect:
RedirectIfAuthuntuk mengarahkan user yang sudah login
| Parameter | Detail |
|---|---|
| Nama Model | Plant Disease Model v3.1 |
| Format | OpenVINO IR (XML + BIN) |
| Input | Gambar RGB 224×224 px, normalized (0-1), float32 |
| Output | Probabilitas 48 kelas penyakit tanaman |
| Inference Engine | Intel OpenVINO Runtime (CPU optimized) |
| Dataset | PlantVillage + dataset penyakit padi custom |
| Versi | Format | Keterangan |
|---|---|---|
| v2 | Keras (.keras) | Model awal dengan TensorFlow/Keras |
| v3 | OpenVINO IR (.xml) | Konversi ke OpenVINO untuk optimasi inferensi |
| v3.1 | OpenVINO IR (.xml) | Model aktif — label Indonesia, dataset penyakit diperluas (termasuk padi) |
┌──────────┐ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌──────────┐
│ Upload │────▶│ Resize │────▶│ Normalize │────▶│ OpenVINO │────▶│ Output │
│ Image │ │ 224×224 │ │ /255.0 │ │ Inference│ │ Result │
│ │ │ RGB │ │ float32 │ │ CPU │ │ │
└──────────┘ └──────────┘ └───────────┘ └──────────┘ └──────────┘
│
┌───────────────┤
▼ ▼
┌──────────┐ ┌──────────┐
│ Label + │ │ Disease │
│Confidence │ │ Info │
│ (%) │ │ + Obat │
└──────────┘ └──────────┘
┌──────────────┐
│ Landing │
│ Page │
│ (Home) │
└──────┬───────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌──────────┐ ┌─────────┐ ┌─────────┐
│ Login │ │ About │ │ Report │
│ │ │ Team │ │ Contact │
└────┬─────┘ └─────────┘ └─────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
┌──────────┐ ┌─────────┐
│ Register │ │ Google │
│ (Email) │ │ OAuth │
└────┬─────┘ └────┬────┘
└────────┬────────────┘
▼
┌──────────────┐
│ Dashboard │
│ (Main Hub) │
└──────┬───────┘
│
┌───────────┼───────────┬──────────────┐
▼ ▼ ▼ ▼
┌──────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐
│ Cuaca │ │ Lahan │ │ Tugas │ │ Sidebar │
│ 7 Hari │ │ Saya │ │Hari Ini │ │ Nav │
└──────────┘ └────┬────┘ └────┬────┘ └────┬─────┘
│ │ │
▼ ▼ │
┌──────────┐ ┌─────────┐ │
│ Tambah │ │ Tambah │ │
│ Lahan │ │ Tugas │ │
└──────────┘ └─────────┘ │
│
┌──────────────────────────┤
▼ ▼
┌──────────┐ ┌──────────────┐
│ Harga │ │ Deteksi │
│ Pasar │ │ Penyakit │
└──────────┘ └──────┬───────┘
│
┌─────────┼─────────┐
▼ ▼
┌──────────┐ ┌──────────┐
│ Kamera │ │ Upload │
│ Langsung │ │ Galeri │
└────┬─────┘ └────┬─────┘
└────────┬──────────┘
▼
┌──────────┐
│ Analisis │
│ AI │
└────┬─────┘
▼
┌──────────┐
│ Hasil │
│ Diagnosis│
│ + Obat │
└──────────┘
- User navigasi ke halaman "Cek Penyakit" via sidebar
- Pilih metode input: Kamera Langsung atau Upload Gambar
- Preview gambar ditampilkan
- Klik "Mulai Analisis AI" → gambar dikirim ke backend sebagai
multipart/form-data - Backend memproses: resize → normalize → OpenVINO inference
- Hasil dikembalikan: label, confidence, deskripsi, rekomendasi obat
- Ditampilkan dalam format Markdown dengan skeleton loading animation
- User membuka Dashboard → section "Lahan Milik Anda"
- Klik "Tambah Lahan" → modal multi-step terbuka
- Step 1: Pilih jenis tanaman (8 opsi), nama lahan, mode lokasi, luas
- Step 2: Konfirmasi & submit
- Data tersimpan ke Firebase (
lands/{uid}/{landId}) - Real-time listener memperbarui tampilan
- User membuka Dashboard → section "Tugas Hari Ini"
- Mode Manual: Isi judul + tanggal → simpan
- Mode AI: Pilih lahan → komoditas → fase → modal → generate strategi
- Pilih paket strategi (Hemat/Optimal/Intensif)
- AI generate jadwal operasional (9-10 tasks) berdasarkan komoditas
- Simpan jadwal ke Firebase → otomatis masuk kalender
- Kalender tugas menampilkan semua tugas dalam tampilan bulanan
smart-farmer-client/
│
├── 📄 index.html # Entry point HTML
├── 📄 package.json # Dependencies & scripts
├── 📄 vite.config.js # Vite + TailwindCSS + SWC config
├── 📄 eslint.config.js # ESLint configuration
├── 📄 firebase.js # Firebase config (legacy/reference)
│
├── 📂 public/ # Static assets
│
├── 📂 src/ # Frontend source code
│ ├── 📄 main.jsx # React entry point (BrowserRouter, QueryClient)
│ ├── 📄 App.jsx # Root component (Routes definition)
│ ├── 📄 App.css # Global styles
│ ├── 📄 index.css # Tailwind imports
│ │
│ ├── 📂 assets/images/ # Gambar statis
│ │ ├── homepage/ # Gambar landing page & auth
│ │ ├── logo/ # Logo & favicon
│ │ └── profile/ # Foto tim pengembang
│ │
│ ├── 📂 context/ # React Context Providers
│ │ ├── authContext.jsx # AuthProvider, RequireAuth, RedirectIfAuth
│ │ └── locationContext.jsx # LocationProvider (GPS + permission handling)
│ │
│ ├── 📂 layout/
│ │ └── main.jsx # MainLayout (Header, Sidebar, Footer, responsive)
│ │
│ ├── 📂 components/ # Reusable UI components
│ │ ├── navbar/
│ │ │ ├── header.jsx # Navbar dengan auth state, avatar, dropdown
│ │ │ └── sidebar.jsx # Sidebar navigasi (Dashboard, Pasar, Prediksi)
│ │ ├── footer/
│ │ │ └── footer.jsx # Footer component
│ │ └── modal/
│ │ ├── AddLandModal.jsx # Multi-step form tambah lahan (731 lines)
│ │ ├── taskFormModal.jsx # Form tugas manual + AI-generated (644 lines)
│ │ ├── taskEvaluationModal.jsx # Evaluasi & tracking pengeluaran tugas
│ │ ├── cameraModal.jsx # Akses kamera perangkat untuk capture gambar
│ │ └── aboutModal.jsx # Floating about button
│ │
│ ├── 📂 pages/ # Halaman aplikasi
│ │ ├── index.jsx # Home/Landing page
│ │ ├── chatwithai.jsx # Dashboard utama (Weather + Land + Task)
│ │ ├── prediction.jsx # Halaman deteksi penyakit
│ │ ├── market.jsx # Halaman harga komoditas pasar
│ │ ├── listAllTasks.jsx # Kalender tugas bulanan (431 lines)
│ │ ├── about.jsx # Halaman profil tim
│ │ ├── report.jsx # Halaman kontak/laporan
│ │ │
│ │ ├── auth/
│ │ │ ├── login.jsx # Login (email + Google OAuth)
│ │ │ └── register.jsx # Registrasi user baru
│ │ │
│ │ └── section/
│ │ ├── main/ # Sections halaman landing
│ │ │ ├── banner.jsx # Hero section dengan parallax
│ │ │ ├── feature.jsx # 3 fitur unggulan
│ │ │ ├── describe.jsx # Deskripsi platform
│ │ │ ├── howItWorks.jsx # 3 langkah cara kerja
│ │ │ ├── join.jsx # CTA bergabung
│ │ │ └── testimoni.jsx # Section testimoni
│ │ │
│ │ └── chat/ # Sections dashboard
│ │ ├── weather.jsx # Widget cuaca 7 hari (397 lines)
│ │ ├── agriculturalLand.jsx # Manajemen lahan
│ │ ├── task.jsx # Tugas harian dengan progress bar
│ │ └── detection.jsx # UI deteksi penyakit (312 lines)
│ │
│ └── 📂 lib/ # Libraries & utilities
│ ├── weatherCode.js # Mapping 30 kode cuaca WMO → emoji + label Indonesia
│ ├── data/
│ │ └── strategies.js # Data strategi budidaya (Padi, Jagung, Cabai)
│ ├── services/
│ │ ├── firebase.js # Firebase init (Auth, DB, Analytics, Google Provider)
│ │ ├── getWeatherForecast.js # Open-Meteo API integration
│ │ └── emailjs.js # EmailJS service wrapper
│ └── utils/
│ ├── googleAuth.js # Google OAuth login + save to DB
│ ├── location.js # Geocoding, reverse geocoding, wilayah Indonesia API
│ ├── developerTeam.js # Data anggota tim pengembang
│ └── dataURLtoBlobs.js # Konversi dataURL ke Blob untuk upload
│
└── 📂 smart-farmer-backend/ # Backend ML API
├── 📄 main.py # FastAPI app, endpoint /predict
├── 📄 requirements.txt # Python dependencies
├── 📄 Readme.md # Dokumentasi backend
├── 📄 Plant_Disease_Detection.ipynb # Jupyter notebook training
│
└── 📂 models/ # ML model files
├── model-v2/ # Legacy Keras model
│ ├── plant_disease_model_v2.keras
│ ├── disease_dataset.json
│ └── labels.json
├── model-v3/ # OpenVINO model v3
│ ├── plant_disease_model_L4.keras
│ ├── plant-disease-model-v3.xml
│ ├── disease_label.json
│ └── labels_id.json
└── model-v3.1/ # ✅ Model aktif
├── plant-disease-v3.1.xml # Model OpenVINO IR
├── labels.json # 48 label kelas (Indonesia)
└── disease_label.json # Deskripsi + rekomendasi obat
Endpoint utama untuk deteksi penyakit tanaman.
Request:
| Parameter | Type | Required | Description |
|---|---|---|---|
file |
UploadFile |
✅ | File gambar tanaman (JPG/PNG) |
Content-Type: multipart/form-data
Response:
{
"label": "Tomat - Hawar Daun Dini",
"confidence": 96.45,
"deskripsi": "Hawar daun dini menyebabkan bercak konsentris cokelat pada daun tua...",
"obat_rekomendasi": [
"Mankozeb",
"Klorotalonil",
"Azoksistrobin"
]
}Error Response:
{
"detail": "Error message description"
}| API | Endpoint | Metode | Kegunaan |
|---|---|---|---|
| Open-Meteo | api.open-meteo.com/v1/forecast |
GET | Prakiraan cuaca 7 hari |
| Nominatim | nominatim.openstreetmap.org/search |
GET | Geocoding (nama → koordinat) |
| Nominatim | nominatim.openstreetmap.org/reverse |
GET | Reverse geocoding (koordinat → nama) |
| Wilayah ID | emsifa.com/api-wilayah-indonesia/api/ |
GET | Data administratif Indonesia |
| Layanan | Kegunaan | Data Path |
|---|---|---|
| Authentication | Login/register email + Google | — |
| Realtime Database | Penyimpanan data aplikasi | users/{uid}, lands/{uid}, tasks/{uid}, landExpenses/{uid} |
| Analytics | Tracking metrik penggunaan | — |
Struktur Database Firebase:
root/
├── users/
│ └── {uid}/
│ ├── name: string
│ ├── email: string
│ └── createdAt: timestamp
│
├── lands/
│ └── {uid}/
│ └── {landId}/
│ ├── name: string
│ ├── crop: string
│ ├── location: string
│ └── size: string
│
├── tasks/
│ └── {uid}/
│ └── {taskId}/
│ ├── title: string
│ ├── date: string (YYYY-MM-DD)
│ ├── done: boolean
│ ├── strategy?: string
│ ├── landId?: string
│ └── commodity?: string
│
└── landExpenses/
└── {uid}/
└── {landId}/
└── {expenseId}/
└── amount: number
- Gratis & open-source — tanpa API key
- Parameter:
latitude,longitude,daily(temperature, weathercode),timezone=auto - Response di-mapping dengan 30 kode cuaca WMO ke emoji dan label Bahasa Indonesia
- Geocoding dengan fallback 3 level untuk keakuratan
- Reverse geocoding untuk tampilan nama lokasi dari GPS
- Cache di
localStorageuntuk mengurangi request
- Endpoint bertingkat: Provinsi → Kabupaten → Kecamatan → Kelurahan
- Seluruh data wilayah administratif Indonesia tercakup
| Software | Versi Minimum |
|---|---|
| Node.js | 18.x |
| npm / yarn | 9.x / 1.x |
| Python | 3.9+ |
| pip | Latest |
git clone <repository-url>
cd smart-farmer-client# Install dependencies
npm install
# Buat file .env (lihat section Environment Variables)
cp .env.example .env
# Jalankan development server
npm run devcd smart-farmer-backend
# Buat virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Jalankan backend server
python main.py
# atau
uvicorn main:app --host 127.0.0.1 --port 8000 --reload# Frontend
npm run build
npm run preview # Preview build result
# Backend
uvicorn main:app --host 0.0.0.0 --port 8000Buat file .env di root proyek frontend:
# Firebase Configuration
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_DATABASE_URL=https://your_project.firebaseio.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_FIREBASE_MEASUREMENT_ID=G-XXXXXXXXXX
# Backend API
VITE_API_PREDICTION_URL=http://127.0.0.1:8000/predict
# EmailJS Configuration
VITE_PUBLIC_KEY_EMAILJS=your_emailjs_public_key
VITE_SERVICE_ID_EMAILJS=your_emailjs_service_id
VITE_TEMPLATE_ID_EMAILJS=your_emailjs_template_id| Nama | Role | GitHub | |
|---|---|---|---|
| Habibi Ahmad Aziz | Web Developer | GitHub | |
| Muhammad Sultan Nurulloh T. | ML Engineer | GitHub | |
| Muhammad Salman Al Farisi | ML Engineer | GitHub |
- Autentikasi (Email/Password + Google OAuth)
- Deteksi penyakit tanaman 48 kelas dengan OpenVINO
- Prakiraan cuaca 7 hari berbasis lokasi
- Manajemen lahan pertanian digital
- Penjadwalan tugas manual dan AI-generated
- Strategi budidaya 3 komoditas (Padi, Jagung, Cabai)
- Kalender tugas visual bulanan
- Informasi harga pasar komoditas
- Sistem pelaporan via email
- Responsive design (mobile & desktop)
- Glassmorphism UI design system
- Integrasi data harga pasar real-time dari API pemerintah
- Penambahan komoditas strategi budidaya (Kedelai, Singkong, Kentang, dll.)
- Fitur chat/diskusi komunitas petani
- Notifikasi push untuk peringatan cuaca & jadwal tugas
- Multi-language support (Indonesia, English)
- Offline mode dengan service worker (PWA)
- Export laporan pertanian ke PDF
- Integrasi IoT sensor untuk monitoring lahan real-time
- Fitur marketplace jual beli hasil panen antar petani
- Deployment model ML ke edge device (smartphone)
Smartfarm AI — Teknologi untuk Pertanian Indonesia yang Lebih Cerdas 🌾
Dikembangkan dengan ❤️ oleh Tim Agrify