2026-06-16 00:25:47 +07:00
<p align="center">
<br>
<img src=".github/assets/zeavis-logo.svg" alt="ZeaVis Edu" width="128"><br>
<h1 align="center">ZeaVis Edu</h1>
<p align="center">
<strong>Asisten Edukasi Interaktif untuk Deteksi Penyakit Daun Jagung</strong><br>
<em>Computer Vision • EfficientNetV2B0 • Transfer Learning</em>
</p>
</p>
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
<p align="center">
<a href="#-tentang"><b>Tentang</b></a> •
<a href="#-tim"><b>Tim</b></a> •
<a href="#-ringkasan-eksekutif"><b>Ringkasan</b></a> •
<a href="#-cakupan--deliverables"><b>Cakupan</b></a> •
<a href="#-jadwal"><b>Jadwal</b></a> •
<a href="#-tech-stack"><b>Tech Stack</b></a> •
<a href="#-memulai"><b>Memulai</b></a> •
<a href="#-dokumentasi"><b>Dokumentasi</b></a>
</p>
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
<br>
2026-05-22 21:40:42 +00:00
2026-06-16 00:23:18 +07:00
---
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
## 🌽 Tentang
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
**ZeaVis Edu** adalah aplikasi edukasi berbasis **Computer Vision** yang membantu petani, mahasiswa pertanian, dan penyuluh lapangan mengidentifikasi penyakit daun jagung secara mandiri — cukup dengan mengunggah foto daun jagung.
Proyek ini merupakan **Capstone Project** dalam program **Pijak × IBM SkillsBuild** dengan tema ** "AI for Smart Education"**, dirancang untuk menjembatani kesenjangan antara pengetahuan teori pertanian dan kebutuhan praktis di lapangan.
2026-06-16 00:23:18 +07:00
---
2026-06-16 00:25:47 +07:00
## 👥 Tim
2026-06-16 00:23:18 +07:00
2026-06-16 00:25:47 +07:00
| NPM | Nama | Learning Path | Peran |
|---|---|---|---|
| APC246D6Y0028 | **Asep Haryana Saputra** | Back-End | Arsitektur sistem, RESTful API, deployment Docker/Cloud, keamanan upload stream |
| APC013D6X0081 | **Selly Supriyatin** | Front-End | UI/UX responsif, mekanisme unggah gambar, modul edukasi (rekomendasi obat & penanganan) |
| APC013D6Y0091 | **Taufik Pathurrohman** | Machine Learning | Data Engineering — ekstraksi dataset, cleaning, augmentasi gambar |
| APC414D6Y0138 | **Luhung Pandyaska Suyi** | Machine Learning | Model Architecture & Training — CNN, hyperparameter tuning |
| APC013D6Y0269 | **Ardian** | Machine Learning | Model Evaluation & Deployment Prep — confusion matrix, konversi ke production-ready |
2026-06-16 00:23:18 +07:00
---
2026-06-16 00:25:47 +07:00
## 📋 Ringkasan Eksekutif
2026-06-16 00:23:18 +07:00
2026-06-16 00:25:47 +07:00
### Masalah
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
Data BPS menunjukkan penurunan luas panen jagung dari **2.764.366 Ha (2022)** menjadi **2.487.191 Ha (2023)** . Salah satu penyebab utamanya adalah penyakit daun seperti **Hawar Daun** , **Karat Daun** , dan **Bercak Daun Abu-abu** yang menyebabkan nekrosis dan menghambat fotosintesis.
Petani sering kesulitan mengidentifikasi penyakit secara kasat mata dan memiliki **ketergantungan tinggi pada POPT** (Petugas Pengendali Organisme Pengganggu Tumbuhan) akibat minimnya media pembelajaran interaktif.
### Solusi
ZeaVis Edu menggunakan **Computer Vision** sebagai asisten edukasi interaktif:
1. 📸 **Unggah** foto daun jagung yang diduga terinfeksi
2. 🤖 **Deteksi otomatis** penyakit oleh model AI (EfficientNetV2B0)
3. 📚 **Dapatkan** informasi detail penyakit, panduan pencegahan, dan rekomendasi obat secara mandiri
### Metode Teknis
| Komponen | Pilihan |
2026-05-22 21:53:01 +00:00
|---|---|
2026-06-16 00:25:47 +07:00
| Arsitektur Model | **EfficientNetV2B0** — keseimbangan optimal antara akurasi dan efisiensi parameter |
| Metode Pelatihan | **Transfer Learning** pada Google Colab (GPU T4) |
| Sumber Dataset | Kaggle — [Corn Leaf Disease ](https://www.kaggle.com/datasets/ndisan/corn-leaf-disease ) |
| Deployment | VPS dengan Docker, ONNX Runtime untuk inferensi real-time |
2026-05-22 21:40:42 +00:00
2026-06-16 00:23:18 +07:00
---
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
## 🎯 Cakupan & Deliverables
### Cakupan
| ✅ Dalam Cakupan | ❌ Di Luar Cakupan |
|---|---|
| Klasifikasi 3 penyakit + 1 daun sehat | Penyakit pada batang atau buah jagung |
| Deteksi berbasis unggah gambar daun | Prediksi tanpa input gambar |
| Rekomendasi obat & penanganan | Diagnosis pengganti ahli/POPT |
| Aplikasi web edukatif | Aplikasi mobile native |
### 4 Kelas yang Diklasifikasikan
| Label | Nama Ilmiah | Gejala |
|---|---|---|
| **Hawar Daun** | *Northern/Southern Leaf Blight* | Hawar coklat memanjang pada daun |
| **Karat Daun** | *Common Rust* | Bintik coklat kemerahan berbentuk pustula |
| **Bercak Daun** | *Gray Leaf Spot* | Bercak abu-abu memanjang |
| **Daun Sehat** | — | Tanpa gejala penyakit |
### Deliverables Proyek
| No | Tahapan | Deskripsi |
|---|---|---|
| 1 | **Pengumpulan Data** | Dataset gambar 3 penyakit + 1 daun sehat dari Kaggle beserta pelabelan |
| 2 | **Model ML** | Model Computer Vision terlatih di Google Colab, siap produksi |
| 3 | **UI Antarmuka** | Front-End berbasis React + Vite dengan fitur unggah gambar |
| 4 | **Back-End Integration** | API + ML Service untuk inferensi real-time via Docker |
| 5 | **Prototipe Akhir** | Aplikasi web final dengan klasifikasi + modul edukasi (rekomendasi obat & penanganan) |
---
## 📅 Jadwal
| Minggu | Tanggal | Fase | Aktivitas |
|---|---|---|---|
| **1** | 11– 17 Mei 2026 | Inisiasi & Data | Spesifikasi teknis (Asep) • Dataset dari Kaggle + preprocessing (Taufik) • Wireframe UI/UX (Selly) |
| **2** | 18– 24 Mei 2026 | Training & Dev Awal | Implementasi EfficientNetV2B0 di Colab (Luhung) • Slicing UI ke React (Selly) • Setup server, database, routing API (Asep) |
| **3** | 25– 31 Mei 2026 | Evaluasi & Modul Edukasi | Evaluasi akurasi + konversi model ke ONNX/TFLite (Ardian) • Halaman edukasi obat & penanganan (Selly) • RESTful API untuk image upload & inferensi (Asep) |
| **4** | 1– 7 Juni 2026 | Integrasi & Testing | Integrasi penuh Front-End ↔ API ↔ Model ML • Pengujian end-to-end • Stress testing & error handling (Semua) |
| **5** | 8– 14 Juni 2026 | Deployment & Finalisasi | Deployment ke VPS (Asep) • Bug fixing & optimalisasi UI/UX (Selly) • Dokumentasi teknis & materi presentasi (Semua) |
---
## ⚠️ Manajemen Risiko
| Risiko | Solusi |
|---|---|
| **Overfitting akibat imbalanced data** | Augmentasi tingkat lanjut (kecerahan, noise, rotasi) + confidence threshold < 75% → minta user foto ulang |
| **Server downtime / latensi tinggi** | Batasan upload ≤ 5 MB + kompresi server-side + rate limiting + container Docker isolasi resource |
| **Foto blur / objek bukan daun jagung** | Panduan visual (overlay) pada UI + validasi anomali + disclaimer "alat bantu edukasi, bukan pengganti POPT" |
| **Bottleneck integrasi ML ↔ API ↔ UI** | API Contract ketat di minggu ke-1 + integrasi bertahap (CI) mulai minggu ke-3 |
---
## 🏗️ Arsitektur Proyek
2026-06-16 00:23:18 +07:00
```
2026-05-22 21:53:01 +00:00
.
2026-05-22 21:40:42 +00:00
├── apps/
2026-06-16 00:25:47 +07:00
│ ├── api/ # Backend Elysia/Bun + Drizzle ORM + PostgreSQL
│ ├── ml-service/ # Rust/Axum + ONNX Runtime inference service
│ └── web/ # Frontend React + Vite + Tailwind CSS
├── Machine_Learning/ # Pipeline dataset, training Colab, ekspor model
│ └── README.md # ⤷ Panduan lengkap pipeline ML
2026-06-16 00:23:18 +07:00
├── infra/
2026-06-16 00:25:47 +07:00
│ └── README.md # ⤷ Panduan deployment multi-VPS
├── packages/shared/ # Tipe & utilitas TypeScript bersama
├── telemetry/ # Submodule — Prometheus → ClickHouse pipeline
├── docker-compose.yml # Konfigurasi deployment container
├── package.json # Root workspace Bun + Moon
└── README.md # ⤷ Anda di sini
2026-05-22 21:40:42 +00:00
```
2026-06-16 00:23:18 +07:00
| Komponen | Teknologi | Dokumentasi |
|---|---|---|
2026-06-16 00:25:47 +07:00
| Web Frontend | React, Vite, Tailwind, Zustand, TanStack Query | `apps/web/` |
2026-06-16 00:23:18 +07:00
| API Backend | Bun, Elysia, Drizzle ORM, PostgreSQL | `apps/api/` |
| ML Inference | Rust, Axum, ONNX Runtime | [`apps/ml-service/README.md` ](apps/ml-service/README.md ) |
| ML Pipeline | Python, TensorFlow/Keras, EfficientNetV2B0 | [`Machine_Learning/README.md` ](Machine_Learning/README.md ) |
| Infrastruktur | Docker, Coolify, Traefik, Tailscale | [`infra/README.md` ](infra/README.md ) |
| Telemetry | Prometheus, ClickHouse, Vector, Vue 3 | `telemetry/` |
---
2026-06-16 00:25:47 +07:00
## 🛠️ Tech Stack
2026-05-22 21:40:42 +00:00
2026-05-22 21:53:01 +00:00
### Frontend
2026-06-16 00:23:18 +07:00
React • Vite • TypeScript • React Router • TanStack Query • Zustand • Tailwind CSS
2026-05-22 21:40:42 +00:00
2026-05-22 21:53:01 +00:00
### Backend API
2026-06-16 00:25:47 +07:00
Bun • Elysia • Drizzle ORM • PostgreSQL • prom-client
2026-05-22 21:40:42 +00:00
2026-05-22 21:53:01 +00:00
### Machine Learning
2026-06-16 00:25:47 +07:00
Python • TensorFlow/Keras • EfficientNetV2B0 • Google Colab (GPU T4)
Rust • Axum • ONNX Runtime • TFLite • TensorFlow.js
2026-05-22 21:53:01 +00:00
2026-06-16 00:25:47 +07:00
### DevOps & Infrastruktur
Docker • Docker Compose • Coolify • Traefik • Tailscale • GitHub Actions (CI/CD)
2026-05-22 21:53:01 +00:00
2026-06-16 00:25:47 +07:00
### Observabilitas
2026-06-16 00:23:18 +07:00
Prometheus • Metric Ingester (Go) • Vector • ClickHouse • Query Proxy (Go) • Telemetry UI (Vue 3)
2026-05-22 21:40:42 +00:00
2026-06-16 00:23:18 +07:00
---
2026-06-07 21:00:22 +07:00
2026-06-16 00:25:47 +07:00
## 🚀 Memulai
2026-06-07 21:00:22 +07:00
2026-06-16 00:23:18 +07:00
### Prasyarat
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
- **Bun** — runtime & package manager
- **Python 3.9– 3.11** — pipeline ML
- **Rust & Cargo** — `apps/ml-service`
- **Docker & Docker Compose** — deployment & telemetry
- **PostgreSQL** — backend API
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
### Instalasi
2026-05-22 21:40:42 +00:00
```bash
2026-06-16 00:25:47 +07:00
git clone https://github.com/ATLAS-PJK-GM007/ZeaVis-Edu.git
cd ZeaVis-Edu
2026-05-22 21:40:42 +00:00
bun install
```
2026-06-16 00:25:47 +07:00
### Menjalankan Development
2026-05-22 21:53:01 +00:00
2026-05-22 21:40:42 +00:00
```bash
2026-06-16 00:25:47 +07:00
bun run dev # Semua service (web + api)
cd apps/web && bun run dev # Hanya frontend
cd apps/api && bun run start # Hanya backend API
cd apps/ml-service && cargo run # Hanya ML service (port 8000)
2026-05-22 21:40:42 +00:00
```
2026-06-16 00:25:47 +07:00
### Environment Variables
Salin `.env.example` ke `.env` dan isi:
2026-05-22 21:53:01 +00:00
2026-06-16 00:23:18 +07:00
| Variable | Keterangan |
|---|---|
| `DATABASE_URL` | URL koneksi PostgreSQL |
| `SESSION_SECRET` | Secret untuk session auth |
| `WEB_APP_URL` | URL frontend (untuk CORS) |
| `ML_SERVICE_URL` | URL layanan inferensi ML |
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
### Pipeline ML (Ringkasan)
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
1. Unduh 3 dataset ZIP → letakkan di `Machine_Learning/`
2. `python preprocessing.py` — gabungkan & bersihkan dataset
3. Upload `dataset.zip` ke Google Drive
4. Jalankan `notebook.ipynb` di Google Colab (GPU T4)
5. Download `best_model.keras`
6. `python save_model.py` → TFLite + SavedModel
7. Konversi ke TFJS & ONNX
2026-05-22 21:53:01 +00:00
2026-06-16 00:23:18 +07:00
> 📖 **Panduan lengkap:** [`Machine_Learning/README.md`](Machine_Learning/README.md)
2026-05-22 21:53:01 +00:00
2026-06-16 00:25:47 +07:00
### Deployment
2026-05-22 21:53:01 +00:00
2026-05-22 21:40:42 +00:00
```bash
2026-06-16 00:25:47 +07:00
docker compose up -d # App services
make telemetry-up # Telemetry stack
2026-05-22 21:40:42 +00:00
```
2026-06-16 00:25:47 +07:00
> 📖 **Panduan infrastruktur:** [`infra/README.md`](infra/README.md)
2026-06-16 00:23:18 +07:00
---
2026-06-16 00:25:47 +07:00
## 📚 Dokumentasi
2026-06-16 00:23:18 +07:00
| Dokumen | Isi |
|---|---|
2026-06-16 00:25:47 +07:00
| [`Machine_Learning/README.md` ](Machine_Learning/README.md ) | Pipeline ML lengkap — preprocessing, training Colab, ekspor TFLite/TFJS/ONNX |
| [`apps/ml-service/README.md` ](apps/ml-service/README.md ) | ML Inference Service — setup, endpoint API, konfigurasi |
2026-06-16 00:23:18 +07:00
| [`infra/README.md` ](infra/README.md ) | Arsitektur multi-VPS — diagram, GitHub Secrets, port, metrics flow |
2026-06-16 00:25:47 +07:00
| [`METRICS.md` ](METRICS.md ) | Daftar lengkap metrik Prometheus |
2026-06-16 00:23:18 +07:00
| `telemetry/` (submodule) | Source code telemetry stack |
---
2026-06-16 00:25:47 +07:00
## 🔧 Troubleshooting
2026-06-16 00:23:18 +07:00
2026-06-16 00:25:47 +07:00
| Masalah | Solusi |
|---|---|
| `bun install` gagal | `bun --version` — pastikan ≥ 1.x |
| API perlu database | Isi `DATABASE_URL` di root `.env` |
| ML service gagal muat model | `ls Machine_Learning/model/model.onnx` — jalankan pipeline ML jika belum ada |
| Docker Compose gagal | `docker network create app-shared-net` |
| Konversi TFJS gagal | `export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python` |
2026-05-22 21:40:42 +00:00
2026-06-16 00:23:18 +07:00
---
2026-06-16 00:25:47 +07:00
## 📖 Daftar Pustaka
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
1. Prayogi, A. et al. *"Klasifikasi Penyakit Daun Jagung Menggunakan CNN"* — [SISTEMATIS ](https://ejournal.rizaniamedia.com/index.php/sistematis/article/view/87/49 )
2. Nugroho, A. et al. *"Deteksi Penyakit Daun Jagung dengan Deep Learning"* — [MIND Journal ](https://ejurnal.itenas.ac.id/index.php/mindjournal/article/view/14032/4209 )
3. Ramadhan, F. et al. *"Identifikasi Penyakit Jagung Berbasis Citra Digital"* — [Informa ](https://www.informa.poltekindonusa.ac.id/index.php/informa/article/view/199/170 )
4. Corteva Agriscience. *"Kenali Ragam Jenis Penyakit Jagung dan Cara Mengatasinya"* — [corteva.com ](https://www.corteva.com/id/berita/Kenali-Ragam-Jenis-Penyakit-Jagung-dan-Cara-Mengatasinya.html )
2026-05-22 21:40:42 +00:00
2026-06-16 00:23:18 +07:00
---
2026-05-22 21:40:42 +00:00
2026-06-16 00:25:47 +07:00
<p align="center">
<sub>
Capstone Project • Pijak × IBM SkillsBuild • AI for Smart Education<br>
© 2026 ZeaVis Edu Team
</sub>
</p>