ETS - MoneyMate (Aplikasi Pencatatan Keuangan Pribadi)

 Naufal Khairul Rizky - 5025221127


ETS - MoneyMate (Aplikasi Pencatatan Keuangan Pribadi)


Aplikasi ini merupakan implementasi aplikasi pencatatan keuangan pribadi menggunakan Jetpack Compose. MoneyMate membantu pengguna dalam mencatat transaksi pemasukan dan pengeluaran, menganalisis keuangan, serta mengelola keuangan berdasarkan kategori tertentu. Aplikasi ini dibangun dengan pendekatan arsitektur MVVM secara implisit.

1. Ringkasan Aplikasi

MoneyMate menyediakan berbagai fitur untuk pengguna dalam mengelola keuangan sehari-hari:

  • Mencatat transaksi pemasukan dan pengeluaran secara rinci.

  • Melihat statistik keuangan melalui visualisasi data.

  • Menganalisis pola pengeluaran dan pemasukan berdasarkan kategori.

  • Mengelola transaksi keuangan dengan cara yang lebih terorganisir.


2. Alur Utama Aplikasi

  • Tampilan Awal: Menampilkan daftar transaksi, saldo total, total pemasukan, dan total pengeluaran.

  • Tambah Transaksi: Pengguna dapat menambahkan transaksi baru dengan detail lengkap.

  • Filter & Edit Transaksi: Menyediakan opsi untuk memfilter transaksi, serta fitur edit dan hapus.

  • Laporan & Statistik: Menampilkan analisis keuangan pengguna dengan grafik pie chart dan rincian kategori.

  • Pengaturan Aplikasi: Mengatur preferensi pengguna seperti mata uang.


3. Komponen Utama dan Fungsinya

a. Model Data

  • Transaction: Data class untuk menyimpan informasi transaksi (judul, jumlah, tanggal, waktu, tipe, kategori, catatan).

  • TransactionType: Enum untuk membedakan transaksi INCOME (pemasukan) dan EXPENSE (pengeluaran).

  • TransactionCategory: Enum untuk kategori transaksi seperti makanan, transportasi, gaji, bisnis, dan lain-lain.

b. Tampilan Utama (MoneyNotesApp)

  • Scaffold utama yang mengatur:

    • TopBar: Menampilkan judul aplikasi dan filter.

    • BottomBar: Navigasi antar layar utama.

    • FloatingActionButton: Tombol untuk menambah transaksi.

  • State aplikasi dikelola untuk menampilkan transaksi, laporan, dan pengaturan.

c. Komponen Transaksi

  • TransactionList: Menampilkan daftar transaksi dalam bentuk scrollable menggunakan LazyColumn.

  • TransactionItemCard: Kartu individu untuk setiap transaksi, menampilkan informasi seperti judul, jumlah, dan kategori.

  • AddTransactionDialog & EditTransactionDialog: Dialog input untuk menambah atau mengedit transaksi dengan validasi input.

d. Komponen Laporan

  • ReportsScreen: Halaman laporan keuangan, menampilkan:

    • PieChartByCategory: Visualisasi distribusi transaksi berdasarkan kategori.

    • CategoryReportItem: Menampilkan rincian pemasukan dan pengeluaran dengan progress bar.

  • Statistik Visual: Diagram pie dan tampilan kategori pemasukan/pengeluaran.

e. Komponen Pendukung

  • BalanceSummary: Menunjukkan saldo total, pemasukan, dan pengeluaran.

  • EmptyState: Menampilkan ilustrasi dan ajakan menambahkan transaksi ketika daftar kosong.

  • SettingsScreen: Pengaturan mata uang dan preferensi aplikasi.

f. Komponen UI Umum

  • TransactionTypeSelector: Pilihan tipe transaksi (Income/Expense).

  • CategoryDropdown: Pemilihan kategori transaksi.

  • DeleteConfirmationDialog: Konfirmasi sebelum menghapus transaksi.

  • ExpandableSection: Bagian UI yang dapat diperluas untuk menampilkan isi tambahan.


4. Alur Data

  • Inisialisasi: Data dummy transaksi dimuat saat aplikasi pertama kali dijalankan.

  • Operasi CRUD:

    • Create: Menambah transaksi baru ke daftar.

    • Read: Menampilkan daftar transaksi berdasarkan filter yang aktif.

    • Update: Mengedit transaksi melalui dialog edit.

    • Delete: Menghapus transaksi dengan konfirmasi.

  • Statistik: Menghitung total pemasukan, pengeluaran, dan membentuk data visualisasi untuk laporan.

  • Persistence: Saat ini data hanya disimpan sementara di memori (tidak menggunakan database).


5. Fitur Khusus

  • Filter Transaksi: Berdasarkan tipe (pemasukan/pengeluaran), kategori, atau tanggal.

  • Visualisasi Data:

    • Pie chart untuk distribusi pemasukan dan pengeluaran.

    • Progress bar untuk proporsi per kategori.

  • Responsive UI: Desain adaptif dengan dukungan animasi untuk pengalaman pengguna yang lebih halus.

  • Validasi Input: Memastikan input transaksi valid sebelum disimpan.


6. Arsitektur UI

Aplikasi ini mengikuti prinsip desain modern:

  • Composable Functions: Setiap tampilan dibangun dari komponen kecil dan reusable.

  • State Hoisting: Pengelolaan state pada level lebih tinggi untuk komponen yang membutuhkannya.

  • Unidirectional Data Flow: Aliran data satu arah untuk memastikan konsistensi UI dan state aplikasi.



Powerpoint:

RepositoriGithub

Video Demo:


Komentar