Aplikasi manajemen kost (boarding house) modern yang dibangun menggunakan Flutter. Ri-Kost dirancang untuk menjembatani komunikasi dan transaksi antara pemilik kost (Admin) dan penyewa (User) dalam satu platform yang terintegrasi dan mudah digunakan.
Proyek ini bertujuan untuk mendigitalisasi proses manajemen kost yang seringkali masih manual. Dengan Ri-Kost, pemilik kost dapat dengan mudah mengelola data kamar, memproses pengajuan sewa, dan melihat status penghuni. Di sisi lain, calon penyewa dapat dengan mudah menjelajahi kamar yang tersedia, mengajukan sewa, dan mengelola profil mereka dalam satu aplikasi yang intuitif.
Aplikasi ini dibangun dengan fokus pada pemisahan peran (role-based access), pengalaman pengguna (UX) yang bersih, dan integrasi data yang mulus antara panel admin dan pengguna.
- Autentikasi Pengguna: Sistem registrasi dan login yang aman.
- Jelajah Kamar: Melihat semua daftar kamar dengan tampilan kartu yang informatif.
- Filter Kamar: Memfilter kamar berdasarkan status ("Semua", "Kosong", "Booked", "Dihuni") untuk pencarian yang lebih cepat.
- Detail Kamar: Melihat halaman detail untuk setiap kamar, lengkap dengan:
- Galeri Gambar: Image carousel yang bisa digeser untuk melihat foto-foto kamar.
- Informasi lengkap mengenai dimensi, fasilitas, dan harga.
- Pengajuan Sewa: Mengajukan sewa melalui dialog interaktif yang berisi:
- Formulir data diri (Nama, Alamat, No. Telepon).
- Pilihan paket sewa (Lengkap / Mandiri).
- Opsi penambahan fasilitas (AC).
- Rincian biaya yang transparan dan ter-update secara dinamis.
- Manajemen Profil:
- Ubah Foto Profil: Memilih avatar dari beberapa opsi default.
- Edit Nama Lengkap: Memperbarui nama yang ditampilkan di aplikasi.
- Ubah Password: Mengganti password akun dengan aman.
- Sistem Notifikasi: Menerima notifikasi untuk setiap status pengajuan (diajukan, disetujui, ditolak).
- Dasbor Admin: Panel khusus dengan 3 tab utama: Kamar, Tagihan, dan Pengajuan.
- Manajemen Kamar: Melihat daftar semua kamar beserta statusnya ("Kosong", "Booked", "Dihuni").
- Manajemen Pengajuan:
- Melihat semua pengajuan sewa yang masuk dari pengguna.
- Menyetujui atau Menolak pengajuan.
- Saat pengajuan disetujui, status kamar otomatis berubah dari "Booked" menjadi "Dihuni".
- Akses Profil & Notifikasi: Admin juga memiliki halaman profil dan notifikasi sendiri.
- UI Modern: Menggunakan font Poppins untuk tampilan yang bersih dan modern.
- Tema Ganda: Opsi untuk beralih antara Mode Terang (Light Mode) dan Mode Gelap (Dark Mode).
- Splash Screen Animasi: Tampilan pembuka aplikasi dengan logo dan nama "Ri-Kost" yang dianimasikan.
- Struktur Kode Bersih: Mengikuti prinsip-prinsip desain perangkat lunak yang baik, termasuk pemisahan fitur dan layanan.
- Framework: Flutter
- Bahasa: Dart
- Manajemen State:
StatefulWidget&setState - Paket Utama:
google_fonts: Untuk implementasi font kustom (Poppins).shared_preferences: Untuk menyimpan data sesi login secara lokal.intl: Untuk memformat angka menjadi format mata uang Rupiah.
Untuk menjalankan proyek ini secara lokal, ikuti langkah-langkah berikut:
Pastikan Anda sudah menginstal Flutter SDK di komputer Anda. Untuk panduan instalasi, silakan kunjungi dokumentasi resmi Flutter.
-
Clone repositori ini:
git clone https://github.com/your-username/your-repo.git
-
Masuk ke direktori proyek:
cd ri-kost -
Instal semua dependensi:
flutter pub get
-
Jalankan aplikasi:
flutter run
Aplikasi ini memiliki satu akun admin default untuk keperluan demonstrasi:
- Username:
admin - Password:
admin123
Proyek ini menerapkan beberapa pilar utama dari Pemrograman Berorientasi Objek (OOP):
-
Encapsulation (Enkapsulasi):
- Contoh: Kelas-kelas model seperti
Room,AppUser, danAppNotificationmembungkus semua data (properti) dan perilaku (metode/konstruktor) yang relevan ke dalam satu unit tunggal. Ini membuat data lebih terstruktur dan mudah dikelola.
- Contoh: Kelas-kelas model seperti
-
Inheritance (Pewarisan):
- Contoh: Semua kelas halaman (seperti
LoginScreen,AdminPanel,ProfileScreen) adalah turunan (extends) dari kelas dasar Flutter, yaituStatefulWidgetatauStatelessWidget. Mereka mewarisi semua fungsionalitas inti dari widget Flutter.
- Contoh: Semua kelas halaman (seperti
-
Polymorphism (Polimorfisme):
- Contoh: Penggunaan anotasi
@overridepada metodebuild(BuildContext context)di setiap kelas widget. Setiap kelas menyediakan implementasibuild-nya sendiri untuk merender UI yang unik, meskipun semuanya berbagi "kontrak" yang sama dari kelas induknya.
- Contoh: Penggunaan anotasi
-
Abstraction (Abstraksi):
- Contoh: Kelas
AuthServicedanDummyService. Kode di UI (misalnya,LoginScreen) hanya perlu memanggilAuthService.signIn(), tanpa perlu tahu bagaimana proses verifikasi dan penyimpanan data dilakukan di dalamnya. Detail implementasi yang kompleks disembunyikan.
- Contoh: Kelas
Aplikasi ini dibuat dengan ❤️ oleh:
Kelompok Mopro Pak Gustian
© 2025