All Projects
MobileCompleted
E-Plantation Mobile — Palm Oil Plantation Management App
Juni 2025 — April 2026
Overview
E-Plantation Mobile adalah aplikasi React Native yang dirancang untuk membantu mandor, asisten afdeling, dan manajer kebun dalam mengelola operasional perkebunan kelapa sawit secara efisien. Aplikasi ini mendukung alur kerja mulai dari pencatatan hasil panen (BPBKS, SPB), perencanaan kerja harian (RKH), pemantauan mandor (PMA), hingga manajemen permintaan material dan kas. Dengan kemampuan offline-first, seluruh aktivitas lapangan tetap bisa dicatat meski tanpa koneksi internet, dan data akan disinkronisasi secara otomatis saat koneksi kembali tersedia.
Key Features
- BPBKS & SPB Lokal — pencatatan bukti panen dan surat pengantar buah dengan full offline + auto-sync
- Monitoring TPH — monitoring Tempat Pengumpulan Hasil secara read-only (cached)
- BKM Harvest & Take Care — buku kas mandor untuk panen dan perawatan
- PMA — pemantauan mandor afdeling lengkap dengan form dan preview
- Tonnage Garden & PKS — pencatatan dan upload data tonase kebun dan pabrik
- RKH Harvest & Take Care — perencanaan rencana kerja harian
- AKP & Perpajakan — anggaran kerja perkebunan dan data perpajakan
- Realisasi Pemupukan — pencatatan realisasi kegiatan pemupukan
- My Request — permintaan material, kas, alat, dan transportasi
- Warehouse Management — manajemen gudang dan BPU
- Master Data — manajemen organisasi, divisi, blok, TPH, item, raw material, dan lainnya
- Field Report & Attendance — laporan lapangan dan absensi karyawan
- QR Scanner — scan QR code untuk validasi BPBKS
- Dashboard — ringkasan data produksi dan organisasi
- Push Notification — notifikasi real-time via Firebase
- Approval Flow — alur persetujuan dokumen
Challenges
- Sinkronisasi data offline yang kompleks — data yang dibuat saat offline harus tetap konsisten saat di-sync ke server, menghindari duplikasi dan konflik data.
- Performa lokal database — jumlah data transaksi harian yang besar (panen, TPH, tonase) membutuhkan query yang cepat meski disimpan secara lokal.
- Alur bisnis yang panjang dan kompleks — setiap modul memiliki aturan bisnis yang berbeda (validasi form, status dokumen, hierarki approval) yang harus diimplementasikan secara konsisten.
- Multi-role user — satu aplikasi digunakan oleh berbagai level jabatan (mandor, asisten, manajer) dengan akses dan tampilan yang berbeda.
- Stabilitas kamera dan file upload — pengambilan foto lapangan dan upload file tonnage harus andal di berbagai jenis perangkat Android.
Solutions
- Sequential sync dengan concatMap (RxJS) — antrian sinkronisasi diproses secara berurutan untuk menghindari race condition dan memastikan urutan data tetap terjaga.
- WatermelonDB sebagai local-first storage — database lokal berbasis SQLite yang dioptimasi untuk React Native, memungkinkan query kompleks dengan performa tinggi.
- Epic pattern (Redux Observable) — setiap side effect bisnis dikelola dalam epic yang terisolasi, membuat logika per modul mudah di-maintain dan di-test.
- Role-based navigation & screen guard — akses screen dikontrol berdasarkan role dan permission yang disimpan di Redux state.
- React Native Vision Camera — library kamera modern yang memberikan kontrol penuh atas pengambilan foto dan kompatibel dengan berbagai versi Android/iOS.
Lessons Learned
- Offline-first bukan fitur tambahan, tapi arsitektur — merancang offline support sejak awal jauh lebih mudah daripada menambahkannya belakangan; skema data lokal harus sejalan dengan skema API.
- RxJS sangat powerful tapi butuh disiplin — Redux Observable memudahkan penanganan async yang kompleks, tapi tanpa konvensi yang jelas bisa menjadi sulit di-debug.
- WatermelonDB membutuhkan perencanaan schema yang matang — migrasi schema di WatermelonDB lebih rigid dibanding ORM biasa; perubahan model di tengah development membutuhkan effort ekstra.
- Modularisasi domain lebih penting dari modularisasi UI — memisahkan logic per domain (harvest, takecare, plan) lebih memberikan maintainability dibanding hanya memisahkan per komponen UI.
- CI/CD dari awal mempercepat delivery — setup Codemagic sejak tahap awal mengurangi overhead distribusi build ke tim QA dan stakeholder secara signifikan.