Tugas Besar 1 PBD IF3210 Android NOS
IF3210 Platform Based Development
NerbOS - NOS
Table of Contents
App Description
Android NOS is a simple application for keeping track of your income and outcome. This application is created for the purpose of fulfilling the project of the IF3210 Platform Based Development course.
Technologies Used
Basic technologies used in the project:
- Android Studio
- Kotlin
- Java
Libraries used in the project:
- Volley
- jitpack.io
- OkHttp
- CameraX
Features
- Add new transaction
- Edit transaction
- View income vs outcome chart
- Authentication
- Scan
- Twibbon
- Randomize transaction
- Export transaction to excel
- Send transaction to email
- View transaction history
- View user profile
OWASP
-
Insufficient Input/Output Validation (M4)
- Pada aplikasi ini, di beberapa input yang butuh validasi seperti nominal yang sudah diatur agar hanya bisa diisi dengan angka dan beberapa hal lainnya. Namun, beberapa input yang lain seperti email dan password tidak divalidasi. Kami menangani jika ada salah satu input yang tidak sesuai dengan yang sebenarnya dengan memberikan pesan error yang sesuai.
-
Security Misconfiguration (M8)
- Pada aplikasi ini, menurut kami konfigurasi yang ada sudah cukup aman. Kami mengatur semua string, color, dan resource lainnya di dalam folder res.
-
Insecure Data Storage (M9)
- Pada aplikasi ini, terdapat autentikasi yang menggunakan JWT. Token ini kami enkripsi dahulu sebelum disimpan di shared preference dengan mode private.
- Key yang digunakan untuk enkripsi dan dekripsi token disimpan di dalam KeyStore Android.
- Sistem Android Keystore melindungi materi kunci dari penggunaan tanpa izin dengan dua cara. Pertama, mengurangi risiko penggunaan materi kunci tanpa izin dari luar perangkat Android dengan mencegah ekstraksi materi kunci dari proses aplikasi dan dari perangkat Android secara keseluruhan. Kedua, sistem keystore mengurangi risiko penggunaan materi kunci tanpa izin dalam perangkat Android dengan membuat aplikasi menentukan penggunaan kuncinya dengan izin, lalu menerapkan batasan tersebut di luar proses aplikasi.
- Dengan melakukan enkripsi dan dekripsi token, maka data yang disimpan di shared preference akan jauh lebih aman.
Accessibility
List of changes:
- Mengubah contrast text
- Menambah label element
- Memperbesar button
- Mengubah deskripsi yang tidak diperlukan
- Mengubah layout transaction item location menjadi location text dan location button (untuk akses map), karena button terlalu kecil untuk ditekan
Screenshots Before Accessibility Testing
Portrait
Landscape
Screenshots After Accessibility Testing
Screenshots after accessibility testing did not get uploaded because there are no major changes made to the application UI/layout.
How to Run
- Clone this repository
- Open the project in Android Studio
- Build then install the application
- Run the application in an emulator or a physical device
Project Status
Project is: complete
Room for Improvement
Room for improvement:
- improve performance
- improve UI/UX design
Contributors
-
Nigel Sahl (13521043)
- Membuat login page
- Membuat user profile page
- Membuat sistem autentikasi
- Membuat header dan navigation bar
- Membuat statistics page
- Mengatur splash screen
- Membuat background service (pengecekan expiry jwt)
- OWASP
-
Ghazi Akmal Fauzan (13521058)
- Mendesain high fidelity aplikasi
- Mengimplamentasikan fitur scan nota
- Mengimplementasikan intent Gmail
- Mengimplementasikan fitur network sensing (deteksi sinyal)
- Mengimplementasikan fitur broadcast receiver (randomize transaksi)
- Mengimplementasikan fitur twibbon
- Accessibility testing
-
Muhammad Fadhil Amri (13521066)
- Membuat Room Database dengan repository pattern
- Membuat penambahan, pengubahan, dan penghapusan transaksi
- Melihat transaksi yang sudah dilakukan
- Mengimplementasikan sensor lokasi
- Mengimplementasikan penampilan lokasi pada Google Map
- Menyimpan daftar transaksi dalam format .xlsx dan .xls