Final Project PPB
Mora Wallet
Kelas: Pemrograman Perangkat Bergerak B Anggota 1 Nama: Nathanael Valen Susilo NRP: 5025231099Anggota 2Nama: Stefanus Yosua Mamamoba Link - Source Code (GitHub)
- Download (Drive)
- Blogspot Anggota (Blogspot)
- PowerPoint (PPT)
- Video Presentasi (YouTube)
Deskripsi
Mora Wallet adalah aplikasi pencatatan keuangan pribadi berbasis Android. Aplikasi ini dibuat untuk membantu pengguna mengelola beberapa wallet dengan mata uang berbeda, mencatat pemasukan, pengeluaran, dan transfer, serta melihat laporan keuangan secara visual. Selain fitur pencatatan transaksi, Mora Wallet juga menyediakan informasi kurs mata uang, konverter mata uang, dan berita finansial. Aplikasi dibangun menggunakan Kotlin, Jetpack Compose, Material 3, Firebase, dan beberapa API eksternal.
Fitur Aplikasi
Fitur utama yang tersedia pada Mora Wallet adalah sebagai berikut: - Authentication: Pengguna dapat melakukan register, login, dan login dengan Google. Autentikasi menggunakan Firebase Authentication.
- Dashboard: Menampilkan total balance, ringkasan income dan expense, tombol cepat untuk menambah transaksi, daftar wallet, laporan singkat, transaksi terbaru, dan preview exchange rate.
- Wallets: Digunakan untuk membuat dan mengelola wallet. Setiap wallet memiliki nama, mata uang, saldo, dan warna card. Pada halaman detail wallet, pengguna dapat melihat saldo, riwayat transaksi, dan spending by category.
- Transactions: Digunakan untuk mencatat income, expense, dan transfer antar wallet. Transaksi dapat diberi kategori, jumlah, wallet, catatan, serta waktu pencatatan.
- Reports: Menampilkan laporan income vs expense dan breakdown kategori. Laporan dapat difilter berdasarkan periode seperti week, month, dan year.
- Markets: Menampilkan daftar nilai tukar mata uang dalam bentuk grid. Pengguna dapat mengganti base currency, mencari mata uang, melihat chart riwayat kurs, dan memakai currency converter.
- News: Menampilkan berita finansial dari NewsAPI.org. Berita dapat dilihat dalam bentuk daftar dan detail artikel.
- Settings: Digunakan untuk mengatur preferensi aplikasi, seperti base currency, tema, dan tindakan akun.
Tech Stack
Mora Wallet menggunakan teknologi berikut:
- Kotlin sebagai bahasa pemrograman utama.
- Jetpack Compose untuk membangun antarmuka aplikasi.
- Material 3 untuk komponen dan desain UI.
- MVVM sebagai pola arsitektur aplikasi.
- Firebase Authentication untuk login dan register.
- Cloud Firestore untuk penyimpanan data pengguna, wallet, dan transaksi.
- Retrofit dan OkHttp untuk mengambil data dari API eksternal.
- DataStore Preferences untuk menyimpan preferensi lokal.
- Coil untuk menampilkan gambar berita.
- Navigation Compose untuk navigasi antar halaman.
- Custom Compose Canvas untuk chart seperti donut chart, bar chart, dan line chart.
Struktur Project
Project Mora Wallet terdiri dari satu module utama, yaitu app. Struktur utama project adalah sebagai berikut:- README.md: Berisi dokumentasi project, fitur aplikasi, setup Firebase, API key, cara build, dan struktur project.
- build.gradle.kts dan settings.gradle.kts: Berisi konfigurasi Gradle tingkat project dan deklarasi module aplikasi.
- gradle/libs.versions.toml: Berisi daftar versi dependency dan plugin yang digunakan.
- app/build.gradle.kts: Berisi konfigurasi module Android, dependency, SDK version, dan BuildConfig untuk News API key.
- app/src/main/AndroidManifest.xml: Berisi konfigurasi aplikasi Android, permission internet, MainActivity, icon, label, dan theme.
- app/src/main/java/com/example/morawallet/: Berisi seluruh source code Kotlin aplikasi.
Struktur Source Code
Source code aplikasi dibagi ke beberapa package utama:- core: Berisi komponen dan utility yang digunakan bersama, seperti WalletCard, TransactionRow, chart, formatter mata uang, validator, kategori, dan helper tanggal.
- data: Berisi model data, repository, konfigurasi Firebase, dan interface API. Contohnya Wallet, Transaction, User, WalletRepository, TransactionRepository, NewsRepository, dan ExchangeRateRepository.
- di: Berisi dependency injection manual melalui AppContainer dan helper untuk membuat ViewModel.
- feature: Berisi implementasi fitur aplikasi. Di dalamnya terdapat fitur auth, dashboard, wallet, transaction, markets, news, dan settings.
- navigation: Berisi pengaturan navigasi aplikasi, seperti route, NavHost, top bar, bottom bar, dan root scaffold.
- ui/theme: Berisi konfigurasi tampilan aplikasi, seperti warna, typography, shape, spacing, dan tema utama.
Arsitektur Aplikasi Mora Wallet menggunakan pola MVVM dengan repository layer. Alur sederhananya adalah:
Screen -> ViewModel -> Repository -> Firebase/API/DataStore
Screen bertugas menampilkan UI dan menerima input pengguna. ViewModel menyimpan state dan menjalankan logika layar. Repository menangani akses data dari Firebase, API eksternal, atau DataStore. Dengan pembagian ini, kode menjadi lebih rapi dan mudah dikembangkan.
Penyimpanan dan API
Data utama aplikasi disimpan di Cloud Firestore dan dipisahkan berdasarkan akun pengguna. Autentikasi menggunakan Firebase Authentication. Preferensi seperti base currency dan tema disimpan menggunakan DataStore Preferences.
Untuk data eksternal, aplikasi menggunakan Frankfurter API untuk exchange rate dan NewsAPI.org untuk berita finansial. Frankfurter API tidak membutuhkan API key, sedangkan NewsAPI membutuhkan NEWS_API_KEY pada gradle.properties.
Dokumentasi
- Source Code (GitHub)
- Download (Drive)
- Blogspot Anggota (Blogspot)
- PowerPoint (PPT)
- Video Presentasi (YouTube)
Deskripsi
Mora Wallet adalah aplikasi pencatatan keuangan pribadi berbasis Android. Aplikasi ini dibuat untuk membantu pengguna mengelola beberapa wallet dengan mata uang berbeda, mencatat pemasukan, pengeluaran, dan transfer, serta melihat laporan keuangan secara visual. Selain fitur pencatatan transaksi, Mora Wallet juga menyediakan informasi kurs mata uang, konverter mata uang, dan berita finansial. Aplikasi dibangun menggunakan Kotlin, Jetpack Compose, Material 3, Firebase, dan beberapa API eksternal.
Fitur Aplikasi
Fitur utama yang tersedia pada Mora Wallet adalah sebagai berikut:
Fitur Aplikasi
Fitur utama yang tersedia pada Mora Wallet adalah sebagai berikut:
- Authentication: Pengguna dapat melakukan register, login, dan login dengan Google. Autentikasi menggunakan Firebase Authentication.
- Dashboard: Menampilkan total balance, ringkasan income dan expense, tombol cepat untuk menambah transaksi, daftar wallet, laporan singkat, transaksi terbaru, dan preview exchange rate.
- Wallets: Digunakan untuk membuat dan mengelola wallet. Setiap wallet memiliki nama, mata uang, saldo, dan warna card. Pada halaman detail wallet, pengguna dapat melihat saldo, riwayat transaksi, dan spending by category.
- Transactions: Digunakan untuk mencatat income, expense, dan transfer antar wallet. Transaksi dapat diberi kategori, jumlah, wallet, catatan, serta waktu pencatatan.
- Reports: Menampilkan laporan income vs expense dan breakdown kategori. Laporan dapat difilter berdasarkan periode seperti week, month, dan year.
- Markets: Menampilkan daftar nilai tukar mata uang dalam bentuk grid. Pengguna dapat mengganti base currency, mencari mata uang, melihat chart riwayat kurs, dan memakai currency converter.
- News: Menampilkan berita finansial dari NewsAPI.org. Berita dapat dilihat dalam bentuk daftar dan detail artikel.
- Settings: Digunakan untuk mengatur preferensi aplikasi, seperti base currency, tema, dan tindakan akun.
Mora Wallet menggunakan teknologi berikut:
- Kotlin sebagai bahasa pemrograman utama.
- Jetpack Compose untuk membangun antarmuka aplikasi.
- Material 3 untuk komponen dan desain UI.
- MVVM sebagai pola arsitektur aplikasi.
- Firebase Authentication untuk login dan register.
- Cloud Firestore untuk penyimpanan data pengguna, wallet, dan transaksi.
- Retrofit dan OkHttp untuk mengambil data dari API eksternal.
- DataStore Preferences untuk menyimpan preferensi lokal.
- Coil untuk menampilkan gambar berita.
- Navigation Compose untuk navigasi antar halaman.
- Custom Compose Canvas untuk chart seperti donut chart, bar chart, dan line chart.
Struktur Project
Project Mora Wallet terdiri dari satu module utama, yaitu app. Struktur utama project adalah sebagai berikut:
- README.md: Berisi dokumentasi project, fitur aplikasi, setup Firebase, API key, cara build, dan struktur project.
- build.gradle.kts dan settings.gradle.kts: Berisi konfigurasi Gradle tingkat project dan deklarasi module aplikasi.
- gradle/libs.versions.toml: Berisi daftar versi dependency dan plugin yang digunakan.
- app/build.gradle.kts: Berisi konfigurasi module Android, dependency, SDK version, dan BuildConfig untuk News API key.
- app/src/main/AndroidManifest.xml: Berisi konfigurasi aplikasi Android, permission internet, MainActivity, icon, label, dan theme.
- app/src/main/java/com/example/morawallet/: Berisi seluruh source code Kotlin aplikasi.
Source code aplikasi dibagi ke beberapa package utama:
- core: Berisi komponen dan utility yang digunakan bersama, seperti WalletCard, TransactionRow, chart, formatter mata uang, validator, kategori, dan helper tanggal.
- data: Berisi model data, repository, konfigurasi Firebase, dan interface API. Contohnya Wallet, Transaction, User, WalletRepository, TransactionRepository, NewsRepository, dan ExchangeRateRepository.
- di: Berisi dependency injection manual melalui AppContainer dan helper untuk membuat ViewModel.
- feature: Berisi implementasi fitur aplikasi. Di dalamnya terdapat fitur auth, dashboard, wallet, transaction, markets, news, dan settings.
- navigation: Berisi pengaturan navigasi aplikasi, seperti route, NavHost, top bar, bottom bar, dan root scaffold.
- ui/theme: Berisi konfigurasi tampilan aplikasi, seperti warna, typography, shape, spacing, dan tema utama.
Screen -> ViewModel -> Repository -> Firebase/API/DataStore
Screen bertugas menampilkan UI dan menerima input pengguna. ViewModel menyimpan state dan menjalankan logika layar. Repository menangani akses data dari Firebase, API eksternal, atau DataStore. Dengan pembagian ini, kode menjadi lebih rapi dan mudah dikembangkan.
Data utama aplikasi disimpan di Cloud Firestore dan dipisahkan berdasarkan akun pengguna. Autentikasi menggunakan Firebase Authentication. Preferensi seperti base currency dan tema disimpan menggunakan DataStore Preferences.
Untuk data eksternal, aplikasi menggunakan Frankfurter API untuk exchange rate dan NewsAPI.org untuk berita finansial. Frankfurter API tidak membutuhkan API key, sedangkan NewsAPI membutuhkan NEWS_API_KEY pada gradle.properties.
Comments
Post a Comment