Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

51 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Donasiku 🀝

Banner Donasiku

Flutter Firebase License MIT Platforms Version

Platform donasi barang layak pakai yang menghubungkan donatur dan penerima secara transparan, aman, dan efisien.


πŸ“‹ Daftar Isi

  1. Gambaran Proyek
  2. Fitur Utama
  3. Teknologi yang Digunakan
  4. Struktur Proyek
  5. Prasyarat Sistem
  6. Langkah Instalasi
  7. Konfigurasi Firebase
  8. Alur Pengguna
  9. Dokumentasi
  10. Kontribusi
  11. Lisensi

🌟 Gambaran Proyek

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.

Mengapa Donasiku?

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

✨ Fitur Utama

1. Autentikasi & Onboarding

Pengalaman pertama pengguna dirancang dengan mulus, mulai dari layar splash animasi, onboarding informatif, kebijakan privasi, hingga registrasi dengan pemilihan peran.

Login Screen Β Β  Register Screen Β Β  Register Penerima Screen

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.

2. Dashboard Donatur

Dashboard khusus untuk donatur yang menampilkan ringkasan aktivitas donasi, sistem gamifikasi level, dan daftar donasi yang sedang aktif.

Donor Dashboard Β Β  Discovery List Β Β  Discovery Map

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.

3. Dashboard Penerima

Halaman utama untuk penerima yang menampilkan semua donasi tersedia, panduan cara meminta, dan kategori untuk memfilter barang.

Recipient Dashboard

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.

4. Tambah Donasi

Form lengkap untuk donatur menambahkan item donasi baru dengan upload foto, kategori, lokasi, dan deskripsi.

Add Donation Screen

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.

5. Pencarian Area (Geolokasi)

Modul pencarian berbasis lokasi yang memungkinkan pengguna menemukan donasi di sekitar mereka menggunakan peta interaktif.

Guest Map

Fitur detail:

  • πŸ—ΊοΈ Peta Interaktif β€” Integrasi flutter_map dengan 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.

6. Manajemen Donasi

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.

7. Tracking Donasi

Layar untuk memantau status pengiriman donasi yang sedang aktif dengan timeline visual.

Tracking Screen

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.

8. Chat Real-time

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.

9. Profil Pengguna

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".

10. Riwayat Donasi

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.

11. Verifikasi Admin

Panel admin khusus untuk memverifikasi atau menolak akun penerima berdasarkan dokumen yang diunggah.

Pending Verification Screen Β Β  Admin Dashboard Screen

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.

12. Mode Tamu (Guest)

Pengguna dapat menggunakan aplikasi sebagai tamu tanpa login untuk melihat donasi yang tersedia di area mereka.

Guest Screen Β Β  Guest Map Screen

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.

πŸ› οΈ Teknologi yang Digunakan

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

πŸ“ Struktur Proyek

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

βœ… Prasyarat Sistem

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

πŸš€ Langkah Instalasi

1. Clone Repositori

git clone https://github.com/athallacode/donasiku.git
cd donasiku

2. Instalasi Dependensi

flutter pub get

3. Konfigurasi Firebase (wajib, lihat bagian berikut)

4. Jalankan Aplikasi

flutter run

πŸ”₯ Konfigurasi Firebase

Proyek ini membutuhkan Firebase. Karena file konfigurasi diabaikan dalam kontrol versi demi keamanan, ikuti langkah berikut:

  1. Buat Proyek Firebase di Firebase Console.
  2. Tambahkan Aplikasi Android ke proyek Firebase (gunakan package name: com.example.donasiku).
  3. Unduh & Letakkan file konfigurasi:
    • google-services.json β†’ android/app/google-services.json
  4. Aktifkan Layanan Firebase berikut:
    • βœ… Authentication (Email/Password + Google Sign-In)
    • βœ… Cloud Firestore
    • βœ… Firebase Storage
  5. Buat Koleksi Firestore awal:
    • users β€” data profil pengguna
    • donations β€” data item donasi
    • chatRooms β€” data room percakapan

πŸ”„ Alur Pengguna

Alur Donatur

Splash β†’ Onboarding β†’ Kebijakan β†’ Register (Donatur) β†’ Login
  β†’ Dashboard Donatur β†’ Tambah Donasi β†’ Terima Permintaan
  β†’ Tracking (Kirim Barang) β†’ Selesai (Diterima)

Alur Penerima

Splash β†’ Onboarding β†’ Kebijakan β†’ Register (Penerima)
  β†’ Upload KTP & SKTM β†’ Menunggu Verifikasi Admin
  β†’ [Setelah Diverifikasi] β†’ Dashboard Penerima
  β†’ Cari Donasi β†’ Kirim Permintaan β†’ Chat Koordinasi
  β†’ Tracking β†’ Konfirmasi Diterima

Alur Admin

Login (Akun Admin) β†’ Panel Verifikasi β†’ Review Dokumen KTP/SKTM
  β†’ Approve / Reject Akun Penerima

Alur Tamu (Guest)

Pilih "Masuk sebagai Tamu" β†’ Discovery Map (Read-only)
  β†’ Lihat Donasi Tersedia β†’ Prompt Login jika ingin berinteraksi

πŸ“š Dokumentasi

Dokumen Deskripsi
πŸ“„ Dokumen SRS Software Requirements Specification lengkap
πŸ“‹ Proposal Tugas Besar Proposal pengembangan aplikasi

🀝 Kontribusi

Kami menerima kontribusi dalam bentuk apapun! Jika Anda menemukan bug atau memiliki ide fitur baru:

  1. Fork repositori ini.
  2. Buat branch fitur baru:
    git checkout -b fitur/NamaFitur
  3. Commit perubahan Anda:
    git commit -m 'feat: Menambahkan fitur XYZ'
  4. Push ke branch tersebut:
    git push origin fitur/NamaFitur
  5. Buat Pull Request dan deskripsikan perubahan yang Anda buat.

Panduan Commit Message

Prefix Penggunaan
feat: Fitur baru
fix: Perbaikan bug
docs: Perubahan dokumentasi
refactor: Refaktor kode
style: Perubahan styling/UI

πŸ“„ Lisensi

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 πŸ•ŠοΈ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages