diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 817f3b3237a623d53cded35747879863f5d77727..2ee2962cb09d26470512fe163883f2bd43f8a553 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -56,6 +56,9 @@ dependencies {
     implementation(libs.poi.ooxml)
     implementation(libs.androidx.activity)
     implementation(libs.play.services.location)
+    implementation(libs.camera.core)
+    implementation(libs.camera.lifecycle)
+    implementation(libs.camera.view)
     annotationProcessor(libs.androidx.room.compiler)
     kapt(libs.androidx.room.compiler)
     implementation(libs.androidx.legacy.support.v4)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 76e4f616973a0c16f369658a8e06df83c26a14d9..c3af3ac6c9e52e8c623da9d2cdec450a3779b2a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,9 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.CAMERA" />
+    <uses-feature android:name="android.hardware.camera.any" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
diff --git a/app/src/main/java/com/example/abe/MainActivity.kt b/app/src/main/java/com/example/abe/MainActivity.kt
index f3174b2c3f3b49fd0c8f869149c50ae1b83590ef..e0b9c7d5de845c43a164e52fde42fb089d274afb 100644
--- a/app/src/main/java/com/example/abe/MainActivity.kt
+++ b/app/src/main/java/com/example/abe/MainActivity.kt
@@ -7,8 +7,8 @@ import android.content.Context
 import android.content.Intent
 import android.content.IntentFilter
 import android.os.Bundle
-import android.util.Log
 import android.view.View
+import android.widget.Toast
 import androidx.activity.result.contract.ActivityResultContracts
 import androidx.activity.viewModels
 import androidx.appcompat.app.AppCompatActivity
@@ -47,7 +47,7 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD
     }
 
     private lateinit var connectivityObserver: ConnectivityObserver
-    private lateinit var networkState:ConnectivityObserver.NetworkState
+    private lateinit var networkState: ConnectivityObserver.NetworkState
 
     private lateinit var user: String
 
@@ -63,6 +63,9 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD
                     val bundle = Bundle().apply {
                         putInt("random_amount", randomAmount)
                     }
+                    navController.navigate(
+                        R.id.action_navigation_settings_to_navigation_transactions
+                    )
                     navController.navigate(
                         R.id.action_navigation_transactions_to_navigation_form_transaction,
                         bundle
@@ -91,6 +94,7 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD
         appBarConfiguration = AppBarConfiguration(
             setOf(
                 R.id.navigation_transactions,
+                R.id.navigation_settings,
                 R.id.navigation_graph
             )
         )
@@ -105,7 +109,7 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD
         LocalBroadcastManager.getInstance(this).registerReceiver(br, filter)
 
         val serviceIntent = Intent(this, AuthService::class.java)
-        startService(serviceIntent);
+        startService(serviceIntent)
 
         connectivityObserver = NetworkConnectivityObserver(applicationContext)
         connectivityObserver.observe().onEach {
@@ -210,6 +214,11 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD
                         viewModel.exportTransactionsToExcel(
                             applicationContext.contentResolver, uri, user
                         )
+                        Toast.makeText(
+                            applicationContext,
+                            "Successfully saved transaction to storage",
+                            Toast.LENGTH_LONG
+                        ).show()
                     }
                 }
             }
@@ -219,7 +228,7 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD
         super.onDestroy()
         LocalBroadcastManager.getInstance(this).registerReceiver(br, filter)
         val serviceIntent = Intent(this, AuthService::class.java)
-        stopService(serviceIntent);
+        stopService(serviceIntent)
     }
 
     override fun onSupportNavigateUp(): Boolean {
diff --git a/app/src/main/java/com/example/abe/MainActivityViewModel.kt b/app/src/main/java/com/example/abe/MainActivityViewModel.kt
index f57c4241e06e3787055308f09038ee868bb3cd43..632c54d5072e132ea639b69d5aeb28e15a541b63 100644
--- a/app/src/main/java/com/example/abe/MainActivityViewModel.kt
+++ b/app/src/main/java/com/example/abe/MainActivityViewModel.kt
@@ -19,28 +19,27 @@ class MainActivityViewModel(private val transactionRepository: TransactionReposi
     var newExcelFormat: Boolean = false
 
     fun getExportFileName(): String {
-        val date = SimpleDateFormat("yyyy-MM-dd_hh:mm:ss" , Locale.ENGLISH).format(Date())
+        val date = SimpleDateFormat("yyyy-MM-dd_hh-mm-ss" , Locale.ENGLISH).format(Date())
         return "Daftar-Transaksi_$date"
     }
 
     suspend fun exportTransactionsToExcel(contentResolver: ContentResolver, uri: Uri, user: String) {
         val headerList = listOf("ID Transaksi", "Email", "Judul", "Nominal", "Pengeluaran", "Waktu Transasksi")
-        val transactions = transactionRepository.getAll(user).value
+        val transactions = transactionRepository.getAll(user)
+
         val dataList = mutableListOf<List<String>>()
         val currencyFormatter = FormatCurrencyUseCase()
 
-        if (transactions != null) {
-            for (trx in transactions) {
-                val rowData = listOf<String>(
-                    trx.id.toString(),
-                    trx.email,
-                    trx.title,
-                    currencyFormatter(trx.amount),
-                    if (trx.isExpense) "Ya" else "Tidak",
-                    SimpleDateFormat("d MMM yyyy" , Locale.ENGLISH).format(trx.timestamp)
-                )
-                dataList.add(rowData)
-            }
+        for (trx in transactions) {
+            val rowData = listOf<String>(
+                trx.id.toString(),
+                trx.email,
+                trx.title,
+                currencyFormatter(trx.amount),
+                if (trx.isExpense) "Ya" else "Tidak",
+                SimpleDateFormat("d MMM yyyy" , Locale.ENGLISH).format(trx.timestamp)
+            )
+            dataList.add(rowData)
         }
 
         val generateExcel = GenerateExcelUseCase(newExcelFormat, contentResolver,  uri, "Transaksi", headerList, dataList)
diff --git a/app/src/main/java/com/example/abe/data/TransactionDAO.kt b/app/src/main/java/com/example/abe/data/TransactionDAO.kt
index 64be7b656a7feb231d8dde067791772a1ec493d4..3dda96965e6c03661ab3d23607972eefa1c26989 100644
--- a/app/src/main/java/com/example/abe/data/TransactionDAO.kt
+++ b/app/src/main/java/com/example/abe/data/TransactionDAO.kt
@@ -23,7 +23,10 @@ interface TransactionDAO {
     suspend fun deleteAll()
 
     @Query("SELECT * FROM transactions WHERE email = :email")
-    fun getAll(vararg email: String): LiveData<List<Transaction>>
+    fun getAllObservable(vararg email: String): LiveData<List<Transaction>>
+
+    @Query("SELECT * FROM transactions WHERE email = :email")
+    suspend fun getAll(vararg email: String): List<Transaction>
 
     @Query("SELECT * FROM transactions WHERE id = :id")
     suspend fun getById(id: Int): Transaction
diff --git a/app/src/main/java/com/example/abe/data/TransactionRepository.kt b/app/src/main/java/com/example/abe/data/TransactionRepository.kt
index 487f2c2082aafa5e5fed68d231d9e884ba3c1a38..be06b77be5b9af340837eee3bdbcf74f37297898 100644
--- a/app/src/main/java/com/example/abe/data/TransactionRepository.kt
+++ b/app/src/main/java/com/example/abe/data/TransactionRepository.kt
@@ -5,7 +5,12 @@ import androidx.lifecycle.LiveData
 
 class TransactionRepository(private val transactionDAO: TransactionDAO) {
 
-    fun getAll(email: String): LiveData<List<Transaction>> {
+    fun getAllObservable(email: String): LiveData<List<Transaction>> {
+        return transactionDAO.getAllObservable(email)
+    }
+
+    @WorkerThread
+    suspend fun getAll(email: String): List<Transaction> {
         return transactionDAO.getAll(email)
     }
 
diff --git a/app/src/main/java/com/example/abe/services/AuthService.kt b/app/src/main/java/com/example/abe/services/AuthService.kt
index 02cf0054244801fb834833dd008b9603de898942..131e986a73fc3a1690fd9ff8573b84af43215a7a 100644
--- a/app/src/main/java/com/example/abe/services/AuthService.kt
+++ b/app/src/main/java/com/example/abe/services/AuthService.kt
@@ -22,7 +22,6 @@ class AuthService : Service(), CheckAuthResultCallback {
         isRunning = true
         Thread {
             while (isRunning) {
-                Log.d("ABE-SRV", "Service still running")
                 val retrofit = Retrofit()
                 val sharedPref = getSharedPreferences(
                     getString(R.string.preference_file_key),
@@ -31,7 +30,7 @@ class AuthService : Service(), CheckAuthResultCallback {
                 val token = sharedPref.getString("login_token", "").toString()
                 retrofit.checkAuth(token, this)
                 try {
-                    Thread.sleep(10000)
+                    Thread.sleep(30000)
                 } catch (e: InterruptedException) {
                     e.printStackTrace()
                 }
diff --git a/app/src/main/java/com/example/abe/ui/settings/settingsFragment.kt b/app/src/main/java/com/example/abe/ui/settings/settingsFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7acd7f6a7f30a521c256f9427f380e7de1cf53fa
--- /dev/null
+++ b/app/src/main/java/com/example/abe/ui/settings/settingsFragment.kt
@@ -0,0 +1,58 @@
+package com.example.abe.ui.settings
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.localbroadcastmanager.content.LocalBroadcastManager
+import com.example.abe.databinding.FragmentSettingsBinding
+import com.example.abe.ui.transactions.ExportAlertDialogFragment
+import com.example.abe.ui.transactions.ExportAlertDialogTypeEnum
+
+class SettingsFragment : Fragment() {
+
+    private var _binding: FragmentSettingsBinding? = null
+    private val binding get() = _binding!!
+
+    override fun onCreateView(
+            inflater: LayoutInflater,
+            container: ViewGroup?,
+            savedInstanceState: Bundle?
+    ): View {
+        _binding = FragmentSettingsBinding.inflate(inflater, container, false)
+
+        binding.clSave.setOnClickListener {
+            ExportAlertDialogFragment.newInstance(ExportAlertDialogTypeEnum.EXPORT)
+                .show(requireActivity().supportFragmentManager, "EXPORT_DIALOG")
+        }
+
+        binding.clSend.setOnClickListener {
+            ExportAlertDialogFragment.newInstance(ExportAlertDialogTypeEnum.SEND_EMAIL)
+                .show(requireActivity().supportFragmentManager, "EXPORT_DIALOG")
+        }
+
+        binding.clRandomize.setOnClickListener {
+            Intent().also { intent ->
+                intent.setAction("RANDOMIZE_TRANSACTION")
+                intent.putExtra("random_amount", (10000..100000).random())
+                LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+            }
+        }
+
+        binding.clLogout.setOnClickListener {
+            Intent().also { intent ->
+                intent.setAction("EXPIRED_TOKEN")
+                LocalBroadcastManager.getInstance(requireActivity().applicationContext).sendBroadcast(intent)
+            }
+        }
+
+        return binding.root
+    }
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        _binding = null
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/abe/ui/transactions/TransactionFragment.kt b/app/src/main/java/com/example/abe/ui/transactions/TransactionFragment.kt
index 6acd1f46e1f5b0fec0d8d746bfc80676d0fdb3cb..a9604587b5fc95659f41aae0fff8b89acb75c140 100644
--- a/app/src/main/java/com/example/abe/ui/transactions/TransactionFragment.kt
+++ b/app/src/main/java/com/example/abe/ui/transactions/TransactionFragment.kt
@@ -1,14 +1,12 @@
 package com.example.abe.ui.transactions
 
 import android.content.Context
-import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
-import androidx.localbroadcastmanager.content.LocalBroadcastManager
 import androidx.recyclerview.widget.LinearLayoutManager
 import com.example.abe.ABEApplication
 import com.example.abe.R
@@ -56,24 +54,6 @@ class TransactionFragment : Fragment() {
             }
         }
 
-        binding.fabExport.setOnClickListener {
-            ExportAlertDialogFragment.newInstance(ExportAlertDialogTypeEnum.EXPORT)
-                .show(requireActivity().supportFragmentManager, "EXPORT_DIALOG")
-        }
-
-        binding.fabEmail.setOnClickListener {
-            ExportAlertDialogFragment.newInstance(ExportAlertDialogTypeEnum.SEND_EMAIL)
-                .show(requireActivity().supportFragmentManager, "EXPORT_DIALOG")
-        }
-
-        binding.fabRandom.setOnClickListener {
-            Intent().also { intent ->
-                intent.setAction("RANDOMIZE_TRANSACTION")
-                intent.putExtra("random_amount", (10000..100000).random())
-                LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
-            }
-        }
-
         binding.addTransactionBtn.setOnClickListener {
             (activity as FragmentListener).onIntentReceived("OPEN_FORM", "")
         }
diff --git a/app/src/main/java/com/example/abe/ui/transactions/TransactionViewModel.kt b/app/src/main/java/com/example/abe/ui/transactions/TransactionViewModel.kt
index 76bcd3688e4213aaa490462f81161ae52e8f0569..0439e20100b49ae6e598e593a6a9fbc42d42ccf4 100644
--- a/app/src/main/java/com/example/abe/ui/transactions/TransactionViewModel.kt
+++ b/app/src/main/java/com/example/abe/ui/transactions/TransactionViewModel.kt
@@ -10,7 +10,7 @@ import com.example.abe.data.TransactionRepository
 class TransactionViewModel(private val transactionRepository: TransactionRepository) : ViewModel() {
 
     fun getAllTransactions(user: String): LiveData<List<Transaction>> {
-        return transactionRepository.getAll(user)
+        return transactionRepository.getAllObservable(user)
     }
 }
 
diff --git a/app/src/main/res/drawable/baseline_add_24.xml b/app/src/main/res/drawable/baseline_add_24.xml
index 067a32546e29187c14e397455c7f5f1772238b2f..622c544ab8b7359d1e3e2a955239cf3eb0eb9fef 100644
--- a/app/src/main/res/drawable/baseline_add_24.xml
+++ b/app/src/main/res/drawable/baseline_add_24.xml
@@ -1,5 +1,5 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="20dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="20dp">
       
-    <path android:fillColor="@android:color/white" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
+    <path android:fillColor="@android:color/black" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
     
 </vector>
diff --git a/app/src/main/res/drawable/ic_dices.xml b/app/src/main/res/drawable/ic_dices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..571d22488f353137eddbcc5030d4998c9b6d1873
--- /dev/null
+++ b/app/src/main/res/drawable/ic_dices.xml
@@ -0,0 +1,52 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="20dp"
+    android:height="20dp"
+    android:viewportWidth="20"
+    android:viewportHeight="20">
+  <group>
+    <clip-path
+        android:pathData="M0,0h20v20h-20z"/>
+    <path
+        android:pathData="M10,8.333H3.333C2.413,8.333 1.667,9.08 1.667,10V16.667C1.667,17.587 2.413,18.333 3.333,18.333H10C10.92,18.333 11.667,17.587 11.667,16.667V10C11.667,9.08 10.92,8.333 10,8.333Z"
+        android:strokeLineJoin="round"
+        android:strokeWidth="2"
+        android:fillColor="#00000000"
+        android:strokeColor="#9759C4"
+        android:strokeLineCap="round"/>
+    <path
+        android:pathData="M14.933,11.667L17.85,8.75C18.159,8.407 18.33,7.962 18.33,7.5C18.33,7.038 18.159,6.593 17.85,6.25L13.683,2.15C13.34,1.841 12.895,1.67 12.433,1.67C11.972,1.67 11.526,1.841 11.183,2.15L8.333,5"
+        android:strokeLineJoin="round"
+        android:strokeWidth="2"
+        android:fillColor="#00000000"
+        android:strokeColor="#9759C4"
+        android:strokeLineCap="round"/>
+    <path
+        android:pathData="M5,15H5.008"
+        android:strokeLineJoin="round"
+        android:strokeWidth="2"
+        android:fillColor="#00000000"
+        android:strokeColor="#9759C4"
+        android:strokeLineCap="round"/>
+    <path
+        android:pathData="M8.333,11.667H8.342"
+        android:strokeLineJoin="round"
+        android:strokeWidth="2"
+        android:fillColor="#00000000"
+        android:strokeColor="#9759C4"
+        android:strokeLineCap="round"/>
+    <path
+        android:pathData="M12.5,5H12.508"
+        android:strokeLineJoin="round"
+        android:strokeWidth="2"
+        android:fillColor="#00000000"
+        android:strokeColor="#9759C4"
+        android:strokeLineCap="round"/>
+    <path
+        android:pathData="M15,7.5H15.008"
+        android:strokeLineJoin="round"
+        android:strokeWidth="2"
+        android:fillColor="#00000000"
+        android:strokeColor="#9759C4"
+        android:strokeLineCap="round"/>
+  </group>
+</vector>
diff --git a/app/src/main/res/drawable/ic_log_out.xml b/app/src/main/res/drawable/ic_log_out.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35da1c9282581a31d676cd75c0b221a72ce6e211
--- /dev/null
+++ b/app/src/main/res/drawable/ic_log_out.xml
@@ -0,0 +1,27 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="20dp"
+    android:height="20dp"
+    android:viewportWidth="20"
+    android:viewportHeight="20">
+  <path
+      android:pathData="M7.5,17.5H4.167C3.725,17.5 3.301,17.324 2.988,17.012C2.676,16.699 2.5,16.275 2.5,15.833V4.167C2.5,3.725 2.676,3.301 2.988,2.988C3.301,2.675 3.725,2.5 4.167,2.5H7.5"
+      android:strokeLineJoin="round"
+      android:strokeWidth="1.66667"
+      android:fillColor="#00000000"
+      android:strokeColor="#C81823"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M13.333,14.167L17.5,10L13.333,5.833"
+      android:strokeLineJoin="round"
+      android:strokeWidth="1.66667"
+      android:fillColor="#00000000"
+      android:strokeColor="#C81823"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M17.5,10H7.5"
+      android:strokeLineJoin="round"
+      android:strokeWidth="1.66667"
+      android:fillColor="#00000000"
+      android:strokeColor="#C81823"
+      android:strokeLineCap="round"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_save.xml b/app/src/main/res/drawable/ic_save.xml
new file mode 100644
index 0000000000000000000000000000000000000000..da9e167a4392fdc782d8b933a3d4e37556e29505
--- /dev/null
+++ b/app/src/main/res/drawable/ic_save.xml
@@ -0,0 +1,27 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="20dp"
+    android:height="20dp"
+    android:viewportWidth="20"
+    android:viewportHeight="20">
+  <path
+      android:pathData="M15.833,17.5H4.167C3.725,17.5 3.301,17.324 2.988,17.012C2.676,16.699 2.5,16.275 2.5,15.833V4.167C2.5,3.725 2.676,3.301 2.988,2.988C3.301,2.675 3.725,2.5 4.167,2.5H13.333L17.5,6.667V15.833C17.5,16.275 17.324,16.699 17.012,17.012C16.699,17.324 16.275,17.5 15.833,17.5Z"
+      android:strokeLineJoin="round"
+      android:strokeWidth="1.66667"
+      android:fillColor="#00000000"
+      android:strokeColor="#8346AA"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M14.167,17.5V10.833H5.833V17.5"
+      android:strokeLineJoin="round"
+      android:strokeWidth="1.66667"
+      android:fillColor="#00000000"
+      android:strokeColor="#8346AA"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M5.833,2.5V6.667H12.5"
+      android:strokeLineJoin="round"
+      android:strokeWidth="1.66667"
+      android:fillColor="#00000000"
+      android:strokeColor="#8346AA"
+      android:strokeLineCap="round"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_send.xml b/app/src/main/res/drawable/ic_send.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0ded3dad0d9e37ea0c5770e79f2a4423cfb4833a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_send.xml
@@ -0,0 +1,24 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="20dp"
+    android:height="20dp"
+    android:viewportWidth="20"
+    android:viewportHeight="20">
+  <group>
+    <clip-path
+        android:pathData="M0,0h20v20h-20z"/>
+    <path
+        android:pathData="M18.333,1.667L12.5,18.333L9.167,10.833L1.667,7.5L18.333,1.667Z"
+        android:strokeLineJoin="round"
+        android:strokeWidth="1.66667"
+        android:fillColor="#00000000"
+        android:strokeColor="#8346AA"
+        android:strokeLineCap="round"/>
+    <path
+        android:pathData="M18.333,1.667L9.167,10.833"
+        android:strokeLineJoin="round"
+        android:strokeWidth="1.66667"
+        android:fillColor="#00000000"
+        android:strokeColor="#8346AA"
+        android:strokeLineCap="round"/>
+  </group>
+</vector>
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a18339ec9adcd61f0f47b001a69842e65ba52213
--- /dev/null
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingTop="16dp"
+    tools:context=".ui.settings.SettingsFragment">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/clSave"
+        android:layout_width="0dp"
+        android:layout_height="48dp"
+        android:clickable="true"
+        android:focusable="true"
+        android:background="@drawable/bg_graph_detail_item"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.0"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_chainStyle="packed">
+
+        <ImageView
+            android:id="@+id/Save"
+            android:layout_width="26dp"
+            android:layout_height="26dp"
+            android:layout_marginStart="24dp"
+            android:src="@drawable/ic_save"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/textSave"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="16dp"
+            android:textStyle="bold"
+            android:textColor="@android:color/black"
+            android:text="Save transaction"
+            app:layout_constraintBottom_toBottomOf="@+id/Save"
+            app:layout_constraintStart_toEndOf="@+id/Save"
+            app:layout_constraintTop_toTopOf="@+id/Save" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/clSend"
+        android:layout_width="0dp"
+        android:layout_height="48dp"
+        android:clickable="true"
+        android:focusable="true"
+        android:background="@drawable/bg_graph_detail_item"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="@+id/clSave"
+        app:layout_constraintTop_toBottomOf="@+id/clSave">
+
+        <ImageView
+            android:id="@+id/Send"
+            android:layout_width="26dp"
+            android:layout_height="26dp"
+            android:layout_marginStart="24dp"
+            android:src="@drawable/ic_send"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/textSend"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="16dp"
+            android:text="Send transaction"
+            android:textStyle="bold"
+            android:textColor="@android:color/black"
+            app:layout_constraintBottom_toBottomOf="@+id/Send"
+            app:layout_constraintStart_toEndOf="@+id/Send"
+            app:layout_constraintTop_toTopOf="@+id/Send" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/clRandomize"
+        android:layout_width="0dp"
+        android:layout_height="48dp"
+        android:clickable="true"
+        android:focusable="true"
+        android:background="@drawable/bg_graph_detail_item"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="@+id/clSend"
+        app:layout_constraintTop_toBottomOf="@+id/clSend">
+
+        <ImageView
+            android:id="@+id/Randomize"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="24dp"
+            android:src="@drawable/ic_dices"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/textRandomize"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="16dp"
+            android:text="Randomize transaction"
+            android:textStyle="bold"
+            android:textColor="@android:color/black"
+            app:layout_constraintBottom_toBottomOf="@+id/Randomize"
+            app:layout_constraintStart_toEndOf="@+id/Randomize"
+            app:layout_constraintTop_toTopOf="@+id/Randomize" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/clLogout"
+        android:layout_width="0dp"
+        android:layout_height="48dp"
+        android:clickable="true"
+        android:focusable="true"
+        android:background="@drawable/bg_graph_detail_item"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="@+id/clRandomize"
+        app:layout_constraintTop_toBottomOf="@+id/clRandomize">
+
+        <ImageView
+            android:id="@+id/Logout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="24dp"
+            android:src="@drawable/ic_log_out"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/textLogout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="16dp"
+            android:text="Logout"
+            android:textStyle="bold"
+            android:textColor="@color/destructive"
+            app:layout_constraintBottom_toBottomOf="@+id/Logout"
+            app:layout_constraintStart_toEndOf="@+id/Logout"
+            app:layout_constraintTop_toTopOf="@+id/Logout" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_transactions.xml b/app/src/main/res/layout/fragment_transactions.xml
index ed123034afaa7d6e5684acfaa00b959d5d42d63c..ffe0477ff9ab5319191c89ff94b0195cc7d1bffe 100644
--- a/app/src/main/res/layout/fragment_transactions.xml
+++ b/app/src/main/res/layout/fragment_transactions.xml
@@ -17,39 +17,6 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-        android:id="@+id/fabExport"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="68dp"
-        android:layout_marginBottom="100dp"
-        android:backgroundTint="@android:color/holo_purple"
-        android:src="@drawable/ic_transactions"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-        android:id="@+id/fabEmail"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="68dp"
-        android:layout_marginBottom="100dp"
-        android:backgroundTint="@android:color/holo_purple"
-        android:src="@drawable/ic_scan"
-        app:layout_constraintBottom_toBottomOf="@+id/rvTransactions"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-        android:id="@+id/fabRandom"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="150dp"
-        android:layout_marginBottom="100dp"
-        android:backgroundTint="@android:color/holo_purple"
-        android:src="@drawable/ic_scan"
-        app:layout_constraintBottom_toBottomOf="@+id/rvTransactions"
-        app:layout_constraintStart_toStartOf="parent" />
-
     <com.google.android.material.floatingactionbutton.FloatingActionButton
         android:id="@+id/addTransactionBtn"
         android:layout_width="wrap_content"
diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml
index c40a103cc357df8767810402a46823636cfc5c3c..cd5cb7f7c224557b131277efbce9121f5c666bb1 100644
--- a/app/src/main/res/menu/bottom_nav_menu.xml
+++ b/app/src/main/res/menu/bottom_nav_menu.xml
@@ -16,10 +16,10 @@
         android:icon="@drawable/ic_graph"
         android:title="Graph" />
 
-<!--    <item-->
-<!--        android:id="@+id/navigation_settings"-->
-<!--        android:icon="@drawable/ic_settings"-->
-<!--        android:title="Settings"-->
-<!--        />-->
+    <item
+        android:id="@+id/navigation_settings"
+        android:icon="@drawable/ic_settings"
+        android:title="Settings"
+        />
 
 </menu>
\ No newline at end of file
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index 275ccb7100f64bb1854dd940b78cbb977b904dc0..6b817e8f061acda53c67e1547f0709d95b6e4fce 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -26,6 +26,12 @@
         tools:layout="@layout/fragment_form_transaction"
         />
 
+<!--    <fragment-->
+<!--        android:id="@+id/navigation_scan"-->
+<!--        android:name="com.example.abe.ui.scanner.ScannerFragment"-->
+<!--        android:label="Scan"-->
+<!--        tools:layout="@layout/fragment_scan" />-->
+
     <fragment
         android:id="@+id/navigation_graph"
         android:label="Graph"
@@ -33,17 +39,19 @@
         tools:layout="@layout/fragment_graph"
         />
 
-<!--    <fragment-->
-<!--        android:id="@+id/navigation_scan"-->
-<!--        android:label="Scan" />-->
-
 <!--    <fragment-->
 <!--        android:id="@+id/navigation_graph"-->
 <!--        android:label="Graph" />-->
 
-<!--    <fragment-->
-<!--        android:id="@+id/navigation_settings"-->
-<!--        android:label="Settings" />-->
+    <fragment
+        android:id="@+id/navigation_settings"
+        android:name="com.example.abe.ui.settings.SettingsFragment"
+        android:label="Settings"
+        tools:layout="@layout/fragment_settings" >
+        <action
+            android:id="@+id/action_navigation_settings_to_navigation_transactions"
+            app:destination="@id/navigation_transactions" />
+    </fragment>
 
 <!--    Example when fragment & layout is done-->
 <!--    <fragment-->
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index c6e8a71a185c517d0b44728ebe9c653685ffae5e..0016c8555aad7b0adf46b96f07a24acfc83d5bb0 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -24,6 +24,7 @@ poi = "5.2.5"
 poiOoxml = "5.2.5"
 activity = "1.8.0"
 playServicesLocation = "21.2.0"
+camerax = "1.4.0-alpha04"
 
 [libraries]
 androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
@@ -49,6 +50,9 @@ poi = { group = "org.apache.poi", name = "poi", version.ref = "poi" }
 poi-ooxml = { group = "org.apache.poi", name = "poi-ooxml", version.ref = "poiOoxml" }
 androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
 play-services-location = { group = "com.google.android.gms", name = "play-services-location", version.ref = "playServicesLocation" }
+camera-core = { module = "androidx.camera:camera-camera2", version.ref = "camerax" }
+camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "camerax" }
+camera-view = { module = "androidx.camera:camera-view", version.ref = "camerax" }
 
 [plugins]
 androidApplication = { id = "com.android.application", version.ref = "agp" }