Skip to content
Snippets Groups Projects

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

  1. 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.
  2. 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.
  3. 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

  1. Before Testing acessibility screen before screenshot acessibility category before screenshot

  2. After Testing acessibility after screenshot

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

  1. Login Page login screenshot

  2. Transactions Page transaction screenshot

  3. Add Transaction add transaction screenshot

  4. Modify Transaction modify transaction screenshot

  5. Randomize Transaction randomize transaction screenshot

  6. Maps maps screenshot

  7. No Internet Connection Page no internet screenshot

  8. Scan Page scan screenshot

  9. Twibbon Page twibbon screenshot

  10. Statistic Page statistic screenshot

  11. User Profile Page user screenshot

Landscape

  1. Login Page login screenshot landscape

  2. Transactions Page transaction screenshot landscape

  3. Add Transaction add transaction screenshot landscape

  4. Modify Transaction modify transaction screenshot landscape

  5. Randomize Transaction randomize transaction screenshot landscape

  6. Maps maps screenshot landscape

  7. No Internet Connection Page no internet screenshot landscape

  8. Scan Page scan screenshot landscape

  9. Twibbon Page twibbon screenshot landscape

  10. Statistic Page statistic screenshot landscape

  11. User Profile Page user screenshot 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

  1. Clone this repository
  2. Open the project in Android Studio
  3. Build then install the application
  4. 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

  1. 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
  2. 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
  3. 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