Platform donasi barang layak pakai yang menghubungkan donatur dan penerima secara transparan, aman, dan efisien.
- Gambaran Proyek
- Fitur Utama
- Teknologi yang Digunakan
- Struktur Proyek
- Prasyarat Sistem
- Langkah Instalasi
- Konfigurasi Firebase
- Alur Pengguna
- Dokumentasi
- Kontribusi
- Lisensi
Donasiku adalah aplikasi mobile berbasis Flutter yang menjembatani para donatur dengan penerima manfaat secara transparan dan efisien. Aplikasi ini dirancang untuk mempermudah proses penyaluran bantuan barang layak pakai, mulai dari identifikasi kebutuhan di area sekitar hingga pelacakan status bantuan secara real-time.
| Masalah | Solusi Donasiku |
|---|---|
| Sulitnya menemukan penerima manfaat yang tepat | Sistem geolokasi untuk menemukan penerima terdekat |
| Tidak ada transparansi dalam proses donasi | Status tracking real-time dari "Tersedia" hingga "Diterima" |
| Koordinasi yang sulit antara donatur dan penerima | Fitur chat langsung terintegrasi |
| Risiko penyalahgunaan donasi | Sistem verifikasi KTP/SKTM untuk penerima |
Pengalaman pertama pengguna dirancang dengan mulus, mulai dari layar splash animasi, onboarding informatif, kebijakan privasi, hingga registrasi dengan pemilihan peran.
Fitur detail:
- π¬ Splash Screen β Animasi logo saat aplikasi pertama kali dibuka.
- π Onboarding 3 Halaman β Pengenalan konsep donasi Donasiku secara visual.
- π Kebijakan Privasi β Pengguna wajib menyetujui syarat & ketentuan sebelum mendaftar.
- π Login / Register β Autentikasi menggunakan Email & Password via Firebase Auth.
- π€ Pemilihan Peran β Pengguna memilih antara Donatur atau Penerima saat mendaftar.
- π Google Sign-In β Opsi masuk cepat menggunakan akun Google.
Dashboard khusus untuk donatur yang menampilkan ringkasan aktivitas donasi, sistem gamifikasi level, dan daftar donasi yang sedang aktif.
Fitur detail:
- π Sistem Gamifikasi Level β Donatur mendapatkan level (Pemula β Peduli β Pahlawan) berdasarkan jumlah donasi dengan progress bar visual.
- π Statistik Donasi β Menampilkan jumlah donasi selesai (Diterima) dan permintaan yang menunggu.
- π Dampak Donasi β Visualisasi kategori barang yang paling sering didonasikan.
- π Daftar Donasi Aktif β Kartu donasi dengan status berwarna (Tersedia, Diproses, Dikirim, Diterima).
- π Notifikasi Permintaan β Badge merah pada donasi yang memiliki permintaan menunggu.
- β FAB Tambah Donasi β Tombol aksi cepat untuk menambah donasi baru.
Halaman utama untuk penerima yang menampilkan semua donasi tersedia, panduan cara meminta, dan kategori untuk memfilter barang.
Fitur detail:
- π Pencarian Pintar β Search bar dengan filter kategori (Pakaian, Makanan, Buku, Elektronik, Lainnya).
- π Panduan 4 Langkah β Kartu horizontal yang memandu penerima dari "Cari Barang" hingga "Ambil Barang".
- π Baru Ditambahkan β Carousel horizontal menampilkan 4 donasi terbaru berdasarkan waktu.
- π¦ Grid Donasi β Tampilan kartu donasi 2 kolom dengan gambar, kategori, dan lokasi.
β οΈ Mode Preview β Penerima yang belum diverifikasi bisa melihat tapi tidak bisa berinteraksi dengan banner peringatan.
Form lengkap untuk donatur menambahkan item donasi baru dengan upload foto, kategori, lokasi, dan deskripsi.
Fitur detail:
- πΈ Upload Foto β Ambil foto dari kamera atau galeri menggunakan
image_picker. - π·οΈ Kategori Barang β Dropdown pilihan kategori (Pakaian, Makanan, Buku, Elektronik, Lainnya).
- π Lokasi Penjemputan β Input lokasi penjemputan/pengiriman barang.
- π Deskripsi Kondisi β Kolom teks untuk mendeskripsikan kondisi barang.
- β Validasi Form β Semua field wajib diisi sebelum dapat menyimpan.
- π Edit Donasi β Donatur dapat mengedit donasi yang sudah ada.
Modul pencarian berbasis lokasi yang memungkinkan pengguna menemukan donasi di sekitar mereka menggunakan peta interaktif.
Fitur detail:
- πΊοΈ Peta Interaktif β Integrasi
flutter_mapdengan OpenStreetMap untuk visualisasi peta. - π Lokasi Pengguna β Deteksi lokasi terkini menggunakan
geolocator. - π΅ Marker Donasi β Marker pada peta menunjukkan posisi item donasi yang tersedia.
- π Filter Radius β Pencarian berdasarkan radius jarak dari posisi pengguna.
- π» Mode Guest β Pengguna tamu dapat melihat peta tanpa perlu login.
- π Verifikasi Lokasi β Fitur aksi hanya tersedia untuk pengguna yang terverifikasi.
Halaman detail untuk donatur mengelola satu item donasi: melihat daftar pemohon, menerima/menolak permintaan, dan memantau status.
Fitur detail:
- π₯ Daftar Pemohon β Melihat semua pengguna yang mengajukan permintaan untuk item donasi.
- β Terima / Tolak Permintaan β Donatur dapat memilih siapa yang mendapatkan donasi.
- π Detail Lengkap β Foto barang, kategori, deskripsi, dan status ditampilkan lengkap.
- π¬ Buka Chat β Langsung membuka percakapan dengan pemohon yang dipilih.
Layar untuk memantau status pengiriman donasi yang sedang aktif dengan timeline visual.
Fitur detail:
- β±οΈ Timeline Visual β Progress bar 3 tahap (Diproses β Dikirim β Diterima) dengan indikator warna.
- π Aksi Status Donatur β Tombol "Kirim Barang" untuk mengubah status menjadi "Dikirim".
- β Konfirmasi Penerima β Tombol "Konfirmasi Diterima" untuk penerima menandai donasi selesai.
- π¬ Shortcut Chat β Akses cepat ke percakapan langsung dari kartu tracking.
- π Multi-Role View β Tampilan disesuaikan antara Donatur dan Penerima.
Sistem pesan instan antar donatur dan penerima untuk koordinasi lokasi dan waktu penjemputan.
Fitur detail:
- π¬ Chat Langsung β Percakapan real-time menggunakan Firebase Firestore streams.
- π Daftar Chat β Halaman list semua percakapan aktif dengan preview pesan terakhir.
- π Notifikasi Push β Notifikasi lokal saat ada pesan baru menggunakan
flutter_local_notifications. - π Timestamp Pesan β Waktu pengiriman ditampilkan di setiap pesan.
- π Read-Only Mode β Penerima yang belum terverifikasi hanya bisa melihat chat tanpa bisa mengirim.
Halaman profil yang menampilkan informasi akun, opsi edit data, upload foto profil, dan pengaturan akun.
Fitur detail:
- πΌοΈ Foto Profil β Upload dan perbarui foto profil dari galeri atau kamera.
- βοΈ Edit Profil β Ubah nama tampilan dan informasi akun.
- π Upload Dokumen (Penerima) β Upload foto KTP dan SKTM untuk proses verifikasi.
- π΄ Keluar β Tombol logout dengan konfirmasi.
- ποΈ Preview Mode β Profil penerima yang pending verifikasi ditampilkan dengan status "Menunggu Verifikasi".
Rekam jejak lengkap semua aktivitas donasi yang telah selesai atau dibatalkan.
Fitur detail:
- π Riwayat Lengkap β Daftar semua donasi yang pernah dilakukan/diterima.
- π¨ Badge Status β Warna status berbeda untuk setiap tahap (Tersedia, Diproses, Dikirim, Diterima).
- π Informasi Tanggal β Tanggal pembuatan donasi ditampilkan pada setiap kartu.
Panel admin khusus untuk memverifikasi atau menolak akun penerima berdasarkan dokumen yang diunggah.
Fitur detail:
- π Review Dokumen β Admin dapat melihat foto KTP dan SKTM/foto rumah yang diunggah.
- β Approve Akun β Menyetujui akun penerima agar dapat menggunakan fitur penuh.
- β Reject Akun β Menolak dan menghapus akun penerima yang tidak memenuhi syarat.
- π Queue Verifikasi β Menampilkan antrian semua akun penerima yang menunggu verifikasi.
- π State Kosong β Tampilan konfirmasi jika semua akun sudah diverifikasi.
Pengguna dapat menggunakan aplikasi sebagai tamu tanpa login untuk melihat donasi yang tersedia di area mereka.
Fitur detail:
- π» Akses Tanpa Akun β Lihat daftar donasi dan peta tanpa perlu mendaftar.
- π Batasan Aksi β Tidak dapat mengajukan permintaan, chat, atau berinteraksi.
- π Prompt Login β Ajakan untuk mendaftar saat tamu mencoba melakukan aksi terbatas.
| Kategori | Teknologi | Versi |
|---|---|---|
| Framework | Flutter | SDK ^3.11.0 |
| Bahasa | Dart | ^3.11.0 |
| Auth | Firebase Authentication | ^5.1.0 |
| Database | Cloud Firestore | ^5.1.0 |
| Storage | Firebase Storage | ^12.4.10 |
| State Management | Provider | ^6.1.2 |
| Peta | Flutter Map (OpenStreetMap) | ^7.0.2 |
| Geolokasi | Geolocator | ^13.0.1 |
| Gambar | Image Picker + Cached Network Image | ^1.1.2 / ^3.4.1 |
| Notifikasi | Flutter Local Notifications | 18.0.1 |
| Auth Sosial | Google Sign-In | 6.2.1 |
| UI | Google Fonts | ^8.0.2 |
| HTTP | HTTP | ^1.2.2 |
lib/
βββ main.dart # Entry point & konfigurasi routing
βββ theme.dart # Sistem desain & token warna global
β
βββ models/ # Definisi skema data
β βββ donation_model.dart # Model Donasi (status, kategori, dll)
β βββ chat_model.dart # Model Pesan Chat
β
βββ modules/
β βββ pencarian_area/ # Modul fitur Pencarian Berbasis Lokasi
β βββ models/ # DonationItem, UserRole enum
β βββ providers/ # DiscoveryProvider (state management peta)
β βββ screens/ # DiscoveryScreen (UI peta)
β βββ services/ # Layanan geolokasi & query Firestore
β βββ utils/ # Helper kalkulasi jarak
β βββ widgets/ # Widget marker & kartu peta
β
βββ screens/ # Antarmuka pengguna (UI)
β βββ auth/
β β βββ splash_screen.dart # Layar awal animasi
β β βββ onboarding_screen.dart # Pengenalan 3 halaman
β β βββ policy_screen.dart # Kebijakan privasi
β β βββ login_screen.dart # Login Email & Google
β β βββ register_screen.dart # Registrasi dengan pemilihan peran
β β βββ pending_verification_screen.dart # Status menunggu verifikasi
β β
β βββ dashboards/
β β βββ donor_dashboard.dart # Dashboard utama Donatur
β β βββ receiver_dashboard.dart # Dashboard utama Penerima
β β βββ admin_dashboard.dart # Panel Verifikasi Admin
β β
β βββ dashboard_screen.dart # Shell navigasi 5-tab (bottom nav)
β βββ add_donation_screen.dart # Form tambah donasi baru
β βββ edit_donation_screen.dart # Form edit donasi
β βββ donation_detail_screen.dart # Detail donasi + tombol Minta
β βββ donation_management_screen.dart # Manajemen pemohon (Donatur)
β βββ tracking_screen.dart # Tracking status pengiriman
β βββ chat_list_screen.dart # Daftar percakapan
β βββ chat_screen.dart # Percakapan individual
β βββ history_screen.dart # Riwayat donasi selesai
β βββ profile_screen.dart # Profil & edit akun
β
βββ services/ # Logika bisnis & komunikasi Firebase
β βββ auth_service.dart # Autentikasi, registrasi, manajemen sesi
β βββ donation_service.dart # CRUD donasi & manajemen status
β βββ chat_service.dart # Manajemen room chat & pesan
β βββ app_notification_service.dart # Notifikasi lokal & pengingat harian
β
βββ utils/ # Utilitas umum
β βββ app_error_handler.dart # Penanganan error terpusat & logging
β
βββ widgets/ # Komponen UI yang dapat digunakan ulang
βββ donation_image.dart # Widget gambar donasi dengan cache & fallback
Sebelum memulai, pastikan perangkat Anda telah memenuhi syarat berikut:
- Flutter SDK v3.11.0 atau lebih tinggi
- Dart SDK yang kompatibel (disertakan bersama Flutter)
- Android Studio atau VS Code dengan ekstensi Flutter terpasang
- Android Emulator atau perangkat Android fisik (API Level 21+)
- Koneksi internet untuk layanan Firebase
git clone https://github.com/athallacode/donasiku.git
cd donasikuflutter pub getflutter runProyek ini membutuhkan Firebase. Karena file konfigurasi diabaikan dalam kontrol versi demi keamanan, ikuti langkah berikut:
- Buat Proyek Firebase di Firebase Console.
- Tambahkan Aplikasi Android ke proyek Firebase (gunakan package name:
com.example.donasiku). - Unduh & Letakkan file konfigurasi:
google-services.jsonβandroid/app/google-services.json
- Aktifkan Layanan Firebase berikut:
- β Authentication (Email/Password + Google Sign-In)
- β Cloud Firestore
- β Firebase Storage
- Buat Koleksi Firestore awal:
usersβ data profil penggunadonationsβ data item donasichatRoomsβ data room percakapan
Splash β Onboarding β Kebijakan β Register (Donatur) β Login
β Dashboard Donatur β Tambah Donasi β Terima Permintaan
β Tracking (Kirim Barang) β Selesai (Diterima)
Splash β Onboarding β Kebijakan β Register (Penerima)
β Upload KTP & SKTM β Menunggu Verifikasi Admin
β [Setelah Diverifikasi] β Dashboard Penerima
β Cari Donasi β Kirim Permintaan β Chat Koordinasi
β Tracking β Konfirmasi Diterima
Login (Akun Admin) β Panel Verifikasi β Review Dokumen KTP/SKTM
β Approve / Reject Akun Penerima
Pilih "Masuk sebagai Tamu" β Discovery Map (Read-only)
β Lihat Donasi Tersedia β Prompt Login jika ingin berinteraksi
| Dokumen | Deskripsi |
|---|---|
| π Dokumen SRS | Software Requirements Specification lengkap |
| π Proposal Tugas Besar | Proposal pengembangan aplikasi |
Kami menerima kontribusi dalam bentuk apapun! Jika Anda menemukan bug atau memiliki ide fitur baru:
- Fork repositori ini.
- Buat branch fitur baru:
git checkout -b fitur/NamaFitur
- Commit perubahan Anda:
git commit -m 'feat: Menambahkan fitur XYZ' - Push ke branch tersebut:
git push origin fitur/NamaFitur
- Buat Pull Request dan deskripsikan perubahan yang Anda buat.
| Prefix | Penggunaan |
|---|---|
feat: |
Fitur baru |
fix: |
Perbaikan bug |
docs: |
Perubahan dokumentasi |
refactor: |
Refaktor kode |
style: |
Perubahan styling/UI |
Proyek ini dilisensikan di bawah MIT License. Lihat file LICENSE untuk detail lebih lanjut.
Dibuat dengan β€οΈ oleh Kelompok 5 APB
Donasiku β Berbagi itu Mudah, Berbagi itu Indah ποΈ













