# 🍄 JTA – Jamur Tiram Antirogo (Aplikasi Mobile IoT) Aplikasi mobile **JTA (Jamur Tiram Antirogo)** merupakan komponen antarmuka (*frontend*) dalam ekosistem IoT budidaya jamur tiram. Aplikasi ini memungkinkan pengguna untuk memantau kondisi lingkungan (suhu dan kelembapan) serta mengontrol perangkat keras penyiram (sprayer) secara near real-time. --- ## 🌟 Fitur Utama * **Near Real-Time Monitoring:** Pemantauan suhu dan kelembapan kumbung jamur secara berkala (polling otomatis setiap 5 detik) dilengkapi grafik historis harian dan per jam. * **IoT Remote Control:** Pengaturan mode operasi (Otomatis / Manual) dan tombol penyiraman instan. * **Threshold Settings:** Batasi rentang suhu dan kelembapan ideal untuk mengaktifkan penyiraman otomatis. * **Irrigation Scheduling:** Penjadwalan penyiraman otomatis berdasarkan waktu/jam tertentu. * **Secure Authentication:** Keamanan akun pengguna (login/register) serta persistensi sesi menggunakan layanan **Supabase Auth**. * **Push Notifications:** Notifikasi status perangkat atau peringatan kondisi kumbung via **OneSignal**. --- ## 🏗️ Arsitektur Sistem Aplikasi dikembangkan menggunakan **Layered Architecture** dengan pembagian tanggung jawab sebagai berikut: 1. **Presentation Layer:** Antarmuka pengguna (UI) reaktif (`MonitoringPage`, `ControlPage`, `SchedulePage`, dsb.). 2. **State Management (Riverpod):** Manajemen state terpusat (`MonitoringNotifier`, `ControlNotifier`, `AuthNotifier`). 3. **Repository Layer:** Abstraksi akses data (`IotRepository`, `AuthRepository`). 4. **Service Layer:** Jaringan komunikasi HTTP menggunakan **Dio** (`ApiIotService`, `ApiControlService`) dan **Supabase Flutter SDK** (`SupabaseAuthService`). --- ## 🛠️ Teknologi & Dependensi * **Framework:** Flutter (Dart) * **State Management:** Flutter Riverpod & StateNotifier * **Database & Auth:** Supabase Flutter * **HTTP Client:** Dio * **Notification Service:** OneSignal Flutter * **Chart Visuals:** Fl Chart / Grafik Kustom --- ## 🚀 Langkah Persiapan & Cara Menjalankan Proyek Ikuti langkah-langkah di bawah ini untuk mengkloning dan menjalankan proyek ini di lingkungan lokal Anda. ### 1. Kloning Repositori Jalankan perintah berikut di terminal komputer Anda: ```bash git clone cd JTA ``` ### 2. Konfigurasi Lingkungan Lokal (PENTING 🔑) Untuk keamanan kredensial, berkas asli `env.dart` tidak diunggah ke GitHub (sudah terdaftar di `.gitignore`). Anda harus membuat berkas tersebut secara manual menggunakan template contoh: 1. Salin berkas template [**`lib/core/env.example.dart`**](file:///c:/project/JTA/lib/core/env.example.dart) dan buat berkas baru dengan nama [**`lib/core/env.dart`**](file:///c:/project/JTA/lib/core/env.dart). 2. Buka berkas [**`lib/core/env.dart`**](file:///c:/project/JTA/lib/core/env.dart), kemudian **hilangkan komentar** pada kelas `Env` dan isi dengan kredensial proyek Supabase & OneSignal Anda sendiri: ```dart class Env { // --- BASE API URL --- static const String baseUrl = 'https://api.jta.web.id/api'; // Ganti jika memakai emulator/WiFi lokal // --- SUPABASE CONFIGURATION --- static const String supabaseUrl = 'https://YOUR_SUPABASE_PROJECT.supabase.co'; static const String supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY'; // --- ONESIGNAL CONFIGURATION --- static const String oneSignalAppId = 'YOUR_ONESIGNAL_APP_ID'; } ``` ### 3. Install Dependensi Jalankan perintah berikut untuk mengunduh semua paket dependensi Flutter yang dibutuhkan: ```bash flutter pub get ``` ### 4. Jalankan Aplikasi Hubungkan ponsel asli (aktifkan USB Debugging) atau jalankan emulator Android/iOS Anda, kemudian ketik: ```bash flutter run ``` --- ## 📁 Struktur Direktori Utama ```text lib/ ├── core/ # Tema aplikasi, rute navigasi, dan konfigurasi Env ├── features/ # Modul fitur utama (auth, monitoring, control, schedule) │ ├── auth/ │ ├── monitoring/ │ ├── control/ │ └── schedule/ ├── services/ # Akses layanan eksternal (Supabase Auth & API REST) └── main.dart # Titik masuk utama (Entry point) aplikasi ```