diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index e2f0395892c16b8bd15af1161fbbfbd73161a146..f7ae50242b2115a02fa51376396134f309b5f06e 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -13,7 +13,7 @@ android {
         targetSdk = 34
         versionCode = 1
         versionName = "1.0"
-
+        multiDexEnabled = true
         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
     }
 
@@ -54,6 +54,7 @@ dependencies {
     implementation("androidx.security:security-crypto:1.0.0")
     implementation("org.apache.poi:poi:5.2.4")
     implementation("org.apache.poi:poi-ooxml:5.2.4")
+    implementation("com.github.PhilJay:MPAndroidChart:v3.1.0")
     testImplementation(libs.junit)
     androidTestImplementation(libs.androidx.junit)
     androidTestImplementation(libs.androidx.espresso.core)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 153034667596fe6cb8296d41ad3ee3209d057143..ea1f55da6151968670bba7bc6589ae268f3922ae 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,18 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools">
-
     <!-- Permissions -->
     <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER"
+    <uses-permission
+        android:name="android.permission.ACCESS_SURFACE_FLINGER"
         tools:ignore="ProtectedPermissions" />
 
     <queries>
+
         <!-- Query GMail -->
         <intent>
             <action android:name="android.intent.action.SENDTO" />
+
             <data android:scheme="mailto" />
         </intent>
         <!-- Add more queries for other email apps if needed -->
@@ -28,9 +30,12 @@
         android:supportsRtl="true"
         android:theme="@style/Theme.Bondoman"
         tools:targetApi="34">
+        <activity
+            android:name=".TransactionDetailActivity"
+            android:exported="false" />
         <activity
             android:name=".MainActivity"
-            android:exported="false"/>
+            android:exported="false" />
         <activity
             android:name=".LoginActivity"
             android:exported="false" />
@@ -42,11 +47,10 @@
             android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
-        </activity>
-
-        <!-- Provider -->
+        </activity> <!-- Provider -->
         <provider
             android:name="androidx.core.content.FileProvider"
             android:authorities="${applicationId}.provider"
@@ -55,21 +59,17 @@
             <meta-data
                 android:name="android.support.FILE_PROVIDER_PATHS"
                 android:resource="@xml/file_paths" />
-        </provider>
-        <!-- Service -->
-        <service android:name="itb.bos.bondoman.services.JWTService"
-            android:exported="false" />
-
-        <!-- Broadcast Receiver -->
+        </provider> <!-- Service -->
+        <service
+            android:name=".services.JWTService"
+            android:exported="false" /> <!-- Broadcast Receiver -->
         <receiver
-            android:name="itb.bos.bondoman.receivers.TokenExpiryBroadcastReceiver"
+            android:name=".receivers.TokenExpiryBroadcastReceiver"
             android:exported="false">
             <intent-filter>
                 <action android:name="itb.bos.bondoman.ACTION_TOKEN_EXPIRED" />
             </intent-filter>
         </receiver>
-
-
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/itb/bos/bondoman/MainActivity.kt b/app/src/main/java/itb/bos/bondoman/MainActivity.kt
index bee32619274d14636054c1543526ac4e3151b917..76ee7d33535e596ffe7c680166322b5d9def5e99 100644
--- a/app/src/main/java/itb/bos/bondoman/MainActivity.kt
+++ b/app/src/main/java/itb/bos/bondoman/MainActivity.kt
@@ -2,14 +2,7 @@ package itb.bos.bondoman
 
 import android.os.Bundle
 import androidx.appcompat.app.AppCompatActivity
-import androidx.navigation.ui.AppBarConfiguration
-import androidx.navigation.ui.setupActionBarWithNavController
 import androidx.fragment.app.Fragment
-import androidx.fragment.app.FragmentManager
-import androidx.navigation.NavController
-import androidx.navigation.findNavController
-import androidx.navigation.ui.setupWithNavController
-import com.google.android.material.bottomnavigation.BottomNavigationView
 import itb.bos.bondoman.databinding.ActivityMainBinding
 import itb.bos.bondoman.fragment.ui.settings.SettingsFragment
 import itb.bos.bondoman.fragment.ui.statistic.StatisticFragment
@@ -28,7 +21,7 @@ class MainActivity : AppCompatActivity() {
 
         binding.navView.setOnItemSelectedListener { item ->
             when(item.itemId){
-                R.id.navigation_statistic -> openFragment(QrFragment())
+                R.id.navigation_statistic -> openFragment(StatisticFragment())
                 R.id.navigation_settings -> openFragment(SettingsFragment())
                 R.id.navigation_transaction -> openFragment(TransactionFragment())
             }
diff --git a/app/src/main/java/itb/bos/bondoman/TransactionAdapter.kt b/app/src/main/java/itb/bos/bondoman/TransactionAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9e7caa25896e7a9ecac2be821fd8a41c8bce2f7f
--- /dev/null
+++ b/app/src/main/java/itb/bos/bondoman/TransactionAdapter.kt
@@ -0,0 +1,37 @@
+package itb.bos.bondoman
+
+import android.view.LayoutInflater
+import androidx.recyclerview.widget.RecyclerView
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import itb.bos.bondoman.retrofit.data.Transaction
+
+class TransactionAdapter(private  val listData: ArrayList<Transaction>): RecyclerView.Adapter<TransactionAdapter.DataViewHolder>(){
+
+    override fun onBindViewHolder(holder: DataViewHolder, position: Int) {
+        val currentData = listData[position]
+        holder.txtName.text = currentData.name
+        holder.txtCategory.text = currentData.category
+        val temp = "IDR " + currentData.price.toString()
+        holder.txtPrice.text = temp
+        holder.txtLocation.text = currentData.location
+        holder.txtDate.text = currentData.date
+    }
+
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DataViewHolder {
+        val view: View = LayoutInflater.from(parent.context).inflate(R.layout.row_transaction,parent,false)
+        return DataViewHolder(view)
+    }
+
+    override fun getItemCount(): Int {
+        return listData.count()
+    }
+    class DataViewHolder(item: View) : RecyclerView.ViewHolder(item) {
+        val txtName: TextView = item.findViewById(R.id.itemName)
+        val txtCategory:TextView= item.findViewById(R.id.category)
+        val txtDate: TextView= item.findViewById(R.id.itemDate)
+        val txtPrice : TextView= item.findViewById(R.id.itemPrice)
+        val txtLocation : TextView = item.findViewById(R.id.itemLocation)
+    }
+}
diff --git a/app/src/main/java/itb/bos/bondoman/TransactionDetailActivity.kt b/app/src/main/java/itb/bos/bondoman/TransactionDetailActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..bb857d89ba88fea55c5b882b8a9b7a1068a0b1b8
--- /dev/null
+++ b/app/src/main/java/itb/bos/bondoman/TransactionDetailActivity.kt
@@ -0,0 +1,14 @@
+package itb.bos.bondoman
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+
+class TransactionDetailActivity : AppCompatActivity() {
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(R.layout.activity_transaction_detail)
+    }
+}
diff --git a/app/src/main/java/itb/bos/bondoman/fragment/ui/statistic/StatisticFragment.kt b/app/src/main/java/itb/bos/bondoman/fragment/ui/statistic/StatisticFragment.kt
index f8bed221f9e39901044e9871470638519df5066b..7f6ec271c277f63199cc8bf1318fd6ec77fa8bc8 100644
--- a/app/src/main/java/itb/bos/bondoman/fragment/ui/statistic/StatisticFragment.kt
+++ b/app/src/main/java/itb/bos/bondoman/fragment/ui/statistic/StatisticFragment.kt
@@ -10,33 +10,19 @@ import androidx.lifecycle.ViewModelProvider
 import itb.bos.bondoman.databinding.FragmentStatisticBinding
 
 class StatisticFragment : Fragment() {
-
-    private var _binding: FragmentStatisticBinding? = null
-
-    // This property is only valid between onCreateView and
-    // onDestroyView.
-    private val binding get() = _binding!!
+    private lateinit var binding : FragmentStatisticBinding
 
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
         savedInstanceState: Bundle?
     ): View {
-        val statisticViewModel =
-            ViewModelProvider(this).get(StatisticViewModel::class.java)
-
-        _binding = FragmentStatisticBinding.inflate(inflater, container, false)
-        val root: View = binding.root
-
-        val textView: TextView = binding.textStatistic
-        statisticViewModel.text.observe(viewLifecycleOwner) {
-            textView.text = it
-        }
-        return root
+        binding = FragmentStatisticBinding.inflate(inflater, container, false)
+        return binding.root
     }
 
-    override fun onDestroyView() {
-        super.onDestroyView()
-        _binding = null
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/itb/bos/bondoman/fragment/ui/transaction/TransactionFragment.kt b/app/src/main/java/itb/bos/bondoman/fragment/ui/transaction/TransactionFragment.kt
index 8a214b97d6953574d61c0d15507d8cbb17ead5cc..f79a7015c7b40d6ab56a92b9ca2d5a312817ba75 100644
--- a/app/src/main/java/itb/bos/bondoman/fragment/ui/transaction/TransactionFragment.kt
+++ b/app/src/main/java/itb/bos/bondoman/fragment/ui/transaction/TransactionFragment.kt
@@ -1,42 +1,85 @@
 package itb.bos.bondoman.fragment.ui.transaction
 
 import android.os.Bundle
+import android.text.Editable
+import android.text.TextWatcher
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
 import androidx.fragment.app.Fragment
-import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import itb.bos.bondoman.TransactionAdapter
 import itb.bos.bondoman.databinding.FragmentTransactionBinding
+import itb.bos.bondoman.retrofit.data.Transaction
 
 class TransactionFragment : Fragment() {
 
-    private var _binding: FragmentTransactionBinding? = null
-
-    // This property is only valid between onCreateView and
-    // onDestroyView.
-    private val binding get() = _binding!!
-
+    private lateinit var binding : FragmentTransactionBinding
+    private lateinit var transactionData : RecyclerView
+    private val listTransaction= ArrayList<Transaction>()
+    private lateinit var searchBar: TextView
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
         savedInstanceState: Bundle?
     ): View {
-        val transactionViewModel =
-            ViewModelProvider(this).get(TransactionViewModel::class.java)
+        binding = FragmentTransactionBinding.inflate(inflater, container, false)
+        return binding.root
+    }
 
-        _binding = FragmentTransactionBinding.inflate(inflater, container, false)
-        val root: View = binding.root
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        transactionData = binding.itemTransaction
+        transactionData.setHasFixedSize(true)
+        transactionData.layoutManager = LinearLayoutManager(requireContext())
+
+        listTransaction.add(Transaction("Semen Tiga Roda","22 Maret 2024", "Pengeluaran", 200000, "Jakarta"))
+        listTransaction.add(Transaction("Semen Tiga Roda","22 Maret 2024", "Pengeluaran", 300000, "Jakarta"))
+        listTransaction.add(Transaction("Semen Tiga Roda","22 Maret 2024", "Pengeluaran", 300000, "Jakarta"))
+        listTransaction.add(Transaction("Mapel Sirup","22 Maret 2024", "Pengeluaran", 100000, "Jakarta"))
+        listTransaction.add(Transaction("Jeruks","22 Maret 2024", "Pengeluaran", 200000, "Jakarta"))
+        listTransaction.add(Transaction("Apel","22 Maret 2024", "Pengeluaran", 300000, "Jakarta"))
+
+        val filteredList: ArrayList<Transaction> = ArrayList(listTransaction)
+        var transactionAdapter = TransactionAdapter(filteredList)
+        transactionData.adapter = transactionAdapter
+
+        searchBar = binding.searchBar
+
+        searchBar.addTextChangedListener(object : TextWatcher {
+            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
+                // Not used
+            }
+
+            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
+                // Update the filteredList based on the search text
+                val searchText = s.toString().trim()
+                filteredList.clear()
+
+                if (searchText.isEmpty()) {
+                    // If search text is empty, show all items
+                    filteredList.addAll(listTransaction)
+                } else {
+                    // Filter the list based on the search text
+                    filteredList.addAll(listTransaction.filter { transaction ->
+                        transaction.name != null && transaction.name.contains(searchText, ignoreCase = true)
+                    })
+                }
+
+                // Notify the adapter about the updated list
+                transactionAdapter = TransactionAdapter(filteredList)
+                transactionData.adapter = transactionAdapter
+            }
+
+            override fun afterTextChanged(s: Editable?) {
+                // Not used
+            }
+        })
 
-        val textView: TextView = binding.textTransaction
-        transactionViewModel.text.observe(viewLifecycleOwner) {
-            textView.text = it
-        }
-        return root
-    }
 
-    override fun onDestroyView() {
-        super.onDestroyView()
-        _binding = null
     }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/itb/bos/bondoman/helper/SpreadsheetHelper.kt b/app/src/main/java/itb/bos/bondoman/helper/SpreadsheetHelper.kt
index 40a8b182e1d4fb770fe208ea9084b76f73f78b1d..6728a479a27b2392824975e2c4c5914c3aec2cdf 100644
--- a/app/src/main/java/itb/bos/bondoman/helper/SpreadsheetHelper.kt
+++ b/app/src/main/java/itb/bos/bondoman/helper/SpreadsheetHelper.kt
@@ -27,17 +27,17 @@ class SpreadsheetHelper {
             }
 
             // Populate data rows
-            for ((index, transaction) in transactionList.withIndex()) {
-                val row = sheet.createRow(index + 1)
-                row.createCell(0).setCellValue(transaction.id)
-                row.createCell(1).setCellValue(transaction.name)
-                row.createCell(2).setCellValue(transaction.amount)
-                // Set values for additional fields (Tanggal, Kategori Transaksi, Lokasi)
-                // Example:
-                row.createCell(3).setCellValue(transaction.date)
-                row.createCell(4).setCellValue(transaction.category)
-                row.createCell(5).setCellValue(transaction.location)
-            }
+//            for ((index, transaction) in transactionList.withIndex()) {
+//                val row = sheet.createRow(index + 1)
+//                row.createCell(0).setCellValue(transaction.id)
+//                row.createCell(1).setCellValue(transaction.name)
+//                row.createCell(2).setCellValue(transaction.amount)
+//                // Set values for additional fields (Tanggal, Kategori Transaksi, Lokasi)
+//                // Example:
+//                row.createCell(3).setCellValue(transaction.date)
+//                row.createCell(4).setCellValue(transaction.category)
+//                row.createCell(5).setCellValue(transaction.location)
+//            }
 
             // Write the workbook to a file
             val fileName = "transaction_list.$fileFormat"
diff --git a/app/src/main/java/itb/bos/bondoman/retrofit/data/TransactionData.kt b/app/src/main/java/itb/bos/bondoman/retrofit/data/TransactionData.kt
index ac40e0b720b0c425621b18721f887f131acb4902..8a3108a20a4e7b18d4165c0b4cd833f7d234a22a 100644
--- a/app/src/main/java/itb/bos/bondoman/retrofit/data/TransactionData.kt
+++ b/app/src/main/java/itb/bos/bondoman/retrofit/data/TransactionData.kt
@@ -3,11 +3,47 @@ package itb.bos.bondoman.retrofit.data
 import java.util.Date
 
 // Dummy Transaction
-data class Transaction(
-    val id: String,
-    val name: String,
-    val amount: Double,
-    val date: Date,
-    val category: String,
-    val location: String
-)
\ No newline at end of file
+//data class Transaction(
+//    val id: String,
+//    val name: String,
+//    val amount: Double,
+//    val date: Date,
+//    val category: String,
+//    val location: String
+//)
+
+import android.os.Parcel
+import android.os.Parcelable
+
+data class Transaction(val name: String?, val date: String?, val category: String?, val price: Int?, val location: String?) : Parcelable {
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readValue(Int::class.java.classLoader) as? Int,
+        parcel.readString()
+    )
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(name)
+        parcel.writeString(date)
+        parcel.writeString(category)
+        parcel.writeValue(price)
+        parcel.writeString(location)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<Transaction> {
+        override fun createFromParcel(parcel: Parcel): Transaction {
+            return Transaction(parcel)
+        }
+
+        override fun newArray(size: Int): Array<Transaction?> {
+            return arrayOfNulls(size)
+        }
+    }
+}
+
diff --git a/app/src/main/res/drawable/bg_transaction.xml b/app/src/main/res/drawable/bg_transaction.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fa6bbc9a306ee9d6b6c509dd99403538124f02f8
--- /dev/null
+++ b/app/src/main/res/drawable/bg_transaction.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="430dp"
+    android:height="859dp"
+    android:viewportWidth="430"
+    android:viewportHeight="859">
+    <path
+        android:pathData="M212.29,966.03C175.41,957.71 148.96,924.19 125.64,894.61C113.14,878.78 101.33,863.82 88.71,853.08C60.18,828.83 34.74,819.61 10.14,810.71C-29.64,796.33 -70.77,781.44 -115.03,706.23C-159.59,630.49 -176.3,558.4 -166.11,485.81C-156.12,414.63 -120.55,353.09 -90.69,307.46C-71.2,277.65 -57.58,240.78 -43.19,201.74C-30.66,167.79 -17.71,132.69 -0.15,100.85C44.9,19.24 88.76,-10.06 146.51,2.97C168.78,7.99 191.68,18.8 215.9,30.26C237.33,40.36 259.47,50.82 284.28,59.04C286.67,59.83 289.22,60.54 291.82,61.13C304.44,63.98 317.74,64.05 331.8,64.16C346.82,64.26 362.32,64.36 378.1,67.92C396.97,72.17 413.21,80.85 427.7,94.42C472.51,136.33 476.62,184.2 480.59,230.47C482.21,249.33 483.89,268.8 488.36,289.03C494.07,314.84 504.35,338.63 515.24,363.86C531.9,402.39 549.12,442.24 550.84,492.35C554.13,588.81 507.25,642.38 471.72,674.29C460.32,684.55 449.09,692.62 438.24,700.43C415.67,716.67 493.39,757.72 480.59,786C476.77,794.45 377.53,781.9 375.57,795.89C373.21,812.69 370.77,830.07 364.76,845.7C343.01,902.3 295.45,961.93 238.23,967.63C229.41,968.45 220.69,967.91 212.29,966.03Z"
+        android:fillColor="#1C4A5A"/>
+    <path
+        android:pathData="M-43.51,777.98C23.28,891.48 77.28,852.57 155.51,919.1C200.09,956.99 239.64,980.71 302.35,974.5C349.51,969.82 392.39,921.26 413.53,866.24C423.4,840.53 426.73,801.77 437.49,777.98C459.7,728.88 491.68,716.9 526.79,685.39C567.24,649.05 600.12,602.4 597.5,525.82C594.96,451.12 551.15,398.19 535.78,328.61C519.68,255.77 536.98,198.66 482.45,147.6C439.08,107.01 390.35,130.99 345.27,116.05C230.01,77.9 167.04,-8.58 80.43,148.37C44.19,214.03 27.82,297.12 -11.11,356.6C-80.29,462.4 -132.12,627.39 -43.51,777.98Z"
+        android:fillColor="#1C4A5A"/>
+</vector>
diff --git a/app/src/main/res/drawable/cornered_box.xml b/app/src/main/res/drawable/cornered_box.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2ba77577b8df9a0880b81f8af3b5464bc24985c9
--- /dev/null
+++ b/app/src/main/res/drawable/cornered_box.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/cardview_dark_background" />
+    <corners android:radius="20dp" />
+</shape>
diff --git a/app/src/main/res/drawable/icon_edit.xml b/app/src/main/res/drawable/icon_edit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e72b0abfb5475f15e63bc99161ce60f96f247497
--- /dev/null
+++ b/app/src/main/res/drawable/icon_edit.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="30dp"
+    android:height="30dp"
+    android:viewportWidth="30"
+    android:viewportHeight="30">
+    <path
+        android:pathData="M24.991,23.692H17.873C17.179,23.692 16.614,24.265 16.614,24.971C16.614,25.678 17.179,26.25 17.873,26.25H24.991C25.685,26.25 26.25,25.678 26.25,24.971C26.25,24.265 25.685,23.692 24.991,23.692Z"
+        android:strokeAlpha="0.4"
+        android:fillColor="#1C4A5A"
+        android:fillAlpha="0.4"/>
+    <path
+        android:pathData="M12.886,8.63L19.631,14.08C19.794,14.21 19.822,14.45 19.695,14.616L11.698,25.035C11.196,25.679 10.455,26.043 9.661,26.056L5.296,26.11C5.063,26.113 4.86,25.952 4.807,25.721L3.815,21.407C3.643,20.615 3.815,19.795 4.317,19.163L12.353,8.694C12.483,8.526 12.722,8.497 12.886,8.63Z"
+        android:fillColor="#1C4A5A"/>
+    <path
+        android:pathData="M22.651,10.832L21.35,12.455C21.219,12.62 20.984,12.647 20.821,12.516C19.24,11.236 15.193,7.954 14.07,7.044C13.906,6.909 13.883,6.67 14.016,6.504L15.269,4.946C16.407,3.482 18.391,3.347 19.992,4.624L21.83,6.088C22.584,6.68 23.087,7.459 23.259,8.279C23.458,9.18 23.246,10.066 22.651,10.832Z"
+        android:strokeAlpha="0.4"
+        android:fillColor="#1C4A5A"
+        android:fillAlpha="0.4"/>
+</vector>
diff --git a/app/src/main/res/drawable/icon_filter.xml b/app/src/main/res/drawable/icon_filter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..37aa56eec8f16a9c49faf3a78d119fe9b0d437aa
--- /dev/null
+++ b/app/src/main/res/drawable/icon_filter.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="50dp"
+    android:height="50dp"
+    android:viewportWidth="50"
+    android:viewportHeight="50">
+    <path
+        android:pathData="M15,0L35,0A15,15 0,0 1,50 15L50,35A15,15 0,0 1,35 50L15,50A15,15 0,0 1,0 35L0,15A15,15 0,0 1,15 0z"
+        android:fillColor="#1C4A5A"/>
+    <path
+        android:pathData="M22.604,29.947H14.385C13.344,29.947 12.5,30.777 12.5,31.799C12.5,32.82 13.344,33.651 14.385,33.651H22.604C23.644,33.651 24.489,32.82 24.489,31.799C24.489,30.777 23.644,29.947 22.604,29.947Z"
+        android:strokeAlpha="0.4"
+        android:fillColor="#FAFAFA"
+        android:fillAlpha="0.4"/>
+    <path
+        android:pathData="M37.5,17.973C37.5,16.952 36.655,16.123 35.617,16.123H27.397C26.357,16.123 25.513,16.952 25.513,17.973C25.513,18.995 26.357,19.825 27.397,19.825H35.617C36.655,19.825 37.5,18.995 37.5,17.973Z"
+        android:strokeAlpha="0.4"
+        android:fillColor="#FAFAFA"
+        android:fillAlpha="0.4"/>
+    <path
+        android:pathData="M21.097,17.973C21.097,20.306 19.174,22.198 16.799,22.198C14.425,22.198 12.5,20.306 12.5,17.973C12.5,15.641 14.425,13.75 16.799,13.75C19.174,13.75 21.097,15.641 21.097,17.973Z"
+        android:fillColor="#FAFAFA"/>
+    <path
+        android:pathData="M37.5,31.749C37.5,34.081 35.576,35.972 33.201,35.972C30.828,35.972 28.903,34.081 28.903,31.749C28.903,29.416 30.828,27.524 33.201,27.524C35.576,27.524 37.5,29.416 37.5,31.749Z"
+        android:fillColor="#FAFAFA"/>
+</vector>
diff --git a/app/src/main/res/drawable/icon_search.xml b/app/src/main/res/drawable/icon_search.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1b963a69450d246b59fe14c5145a23992486d66
--- /dev/null
+++ b/app/src/main/res/drawable/icon_search.xml
@@ -0,0 +1,14 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="30dp"
+    android:height="30dp"
+    android:viewportWidth="30"
+    android:viewportHeight="30">
+    <path
+        android:pathData="M2.5,13.317a10.749,10.817 0,1 0,21.498 0a10.749,10.817 0,1 0,-21.498 0z"
+        android:fillColor="#9DB2CE"/>
+    <path
+        android:pathData="M25.843,27.444C25.426,27.431 25.029,27.259 24.732,26.963L22.186,23.988C21.64,23.489 21.596,22.64 22.086,22.086C22.316,21.854 22.628,21.723 22.953,21.723C23.279,21.723 23.591,21.854 23.82,22.086L27.022,24.648C27.483,25.12 27.625,25.82 27.385,26.437C27.145,27.053 26.567,27.469 25.91,27.5L25.843,27.444Z"
+        android:strokeAlpha="0.4"
+        android:fillColor="#9DB2CE"
+        android:fillAlpha="0.4"/>
+</vector>
diff --git a/app/src/main/res/drawable/searcbar_rec.xml b/app/src/main/res/drawable/searcbar_rec.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cb4ac54f975e81d5656c37ebc341a1e35b227359
--- /dev/null
+++ b/app/src/main/res/drawable/searcbar_rec.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="318dp"
+    android:height="58dp"
+    android:viewportWidth="318"
+    android:viewportHeight="58">
+    <path
+        android:pathData="M24,0L294,0A20,20 0,0 1,314 20L314,30A20,20 0,0 1,294 50L24,50A20,20 0,0 1,4 30L4,20A20,20 0,0 1,24 0z"
+        android:fillColor="#ffffff"/>
+</vector>
diff --git a/app/src/main/res/drawable/transaction_detail_box.xml b/app/src/main/res/drawable/transaction_detail_box.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b2be28c978d512396ef29a2e04df52fa23e57249
--- /dev/null
+++ b/app/src/main/res/drawable/transaction_detail_box.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="390dp"
+    android:height="666dp"
+    android:viewportWidth="390"
+    android:viewportHeight="666">
+    <path
+        android:pathData="M40,6L350,6A30,30 0,0 1,380 36L380,622A30,30 0,0 1,350 652L40,652A30,30 0,0 1,10 622L10,36A30,30 0,0 1,40 6z"
+        android:fillColor="#ffffff"/>
+</vector>
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index bc80cdc7995b4c712604ab4e389a1c8b40e72c1f..0e13c19ae82d2bf7cccf3b2d70ad79af49de7457 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -8,12 +8,6 @@
     android:layout_height="match_parent"
     tools:context=".MainActivity"
     >
-    <fragment
-        android:id="@+id/header"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        app:layout_constraintTop_toTopOf="parent"/>
-
 
     <fragment
             android:id="@+id/fragments"
diff --git a/app/src/main/res/layout/activity_transaction_detail.xml b/app/src/main/res/layout/activity_transaction_detail.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bbeb850f3169355255c138cfad209e8848abc4d9
--- /dev/null
+++ b/app/src/main/res/layout/activity_transaction_detail.xml
@@ -0,0 +1,306 @@
+<?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:id="@+id/container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingTop="?attr/actionBarSize">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@drawable/bg_transaction"
+        android:orientation="vertical"
+        android:gravity="top">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:gravity="top">
+            <ImageView
+                android:id="@+id/btn_back"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="32dp"
+                android:layout_marginStart="40dp"
+                android:src="@drawable/btn_back"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <ImageView
+                android:id="@+id/editButton"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity=""
+                android:layout_marginStart="280dp"
+                android:layout_marginTop="25dp"
+                android:src="@drawable/icon_edit"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="340dp"
+            android:layout_height="500dp"
+            android:layout_gravity="center"
+            android:layout_marginTop="10dp"
+            android:paddingTop="10dp"
+            android:orientation="vertical"
+            android:background="@drawable/transaction_detail_box">
+
+            <TextView
+                android:layout_marginTop="10dp"
+                android:id="@+id/itemName"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center|top"
+                android:text="Semen Tiga Roda"
+                android:textSize="20sp">
+
+            </TextView>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:paddingTop="10dp"
+                android:paddingStart="20dp"
+                android:paddingEnd="20dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_marginTop="10dp"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center|top"
+                    android:text="Kategori"
+                    android:textSize="15sp">
+
+                </TextView>
+
+                <TextView
+                    android:id="@+id/category"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="end"
+                    android:layout_weight="1"
+                    android:text="Pemasukan"
+                    android:textSize="15sp"
+                    android:textStyle="bold">
+
+                </TextView>
+
+
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:paddingTop="10dp"
+                android:paddingStart="20dp"
+                android:paddingEnd="20dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_marginTop="10dp"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center|top"
+                    android:text="Kode Transaksi"
+                    android:textSize="15sp">
+
+                </TextView>
+
+                <TextView
+                    android:id="@+id/transactioncode"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="end"
+                    android:layout_weight="1"
+                    android:text="ID-01"
+                    android:textSize="15sp"
+                    android:textStyle="bold">
+
+                </TextView>
+
+
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:paddingTop="10dp"
+                android:paddingStart="20dp"
+                android:paddingEnd="20dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_marginTop="10dp"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center|top"
+                    android:text="Time"
+                    android:textSize="15sp">
+
+                </TextView>
+
+                <TextView
+                    android:id="@+id/time"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="end"
+                    android:layout_weight="1"
+                    android:text="2:00 PM, Jul 21, 2021"
+                    android:textSize="15sp"
+                    android:textStyle="bold">
+
+                </TextView>
+
+
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:paddingTop="10dp"
+                android:paddingStart="20dp"
+                android:paddingEnd="20dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_marginTop="10dp"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center|top"
+                    android:text="Jumlah"
+                    android:textSize="15sp">
+
+                </TextView>
+
+                <TextView
+                    android:id="@+id/amount"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="end"
+                    android:layout_weight="1"
+                    android:text="4"
+                    android:textSize="15sp"
+                    android:textStyle="bold">
+
+                </TextView>
+
+
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:paddingTop="10dp"
+                android:paddingStart="20dp"
+                android:paddingEnd="20dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_marginTop="10dp"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center|top"
+                    android:text="Tipe"
+                    android:textSize="15sp">
+
+                </TextView>
+
+                <TextView
+                    android:id="@+id/type"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="end"
+                    android:layout_weight="1"
+                    android:text="Bahan"
+                    android:textSize="15sp"
+                    android:textStyle="bold">
+
+                </TextView>
+
+
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:paddingTop="10dp"
+                android:paddingStart="20dp"
+                android:paddingEnd="20dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_marginTop="10dp"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center|top"
+                    android:text="Harga"
+                    android:textSize="15sp">
+
+                </TextView>
+
+                <TextView
+                    android:id="@+id/price"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="end"
+                    android:layout_weight="1"
+                    android:text="IDR 200.000"
+                    android:textSize="15sp"
+                    android:textStyle="bold">
+
+                </TextView>
+
+
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:paddingTop="10dp"
+                android:paddingStart="20dp"
+                android:paddingEnd="20dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_marginTop="10dp"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center|top"
+                    android:text="Lokasi"
+                    android:textSize="15sp">
+
+                </TextView>
+
+                <TextView
+                    android:id="@+id/location"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="end"
+                    android:layout_weight="1"
+                    android:text="Jakarta"
+                    android:textSize="15sp"
+                    android:textStyle="bold">
+
+                </TextView>
+
+
+            </LinearLayout>
+
+
+        </LinearLayout>
+    </LinearLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout/fragment_statistic.xml b/app/src/main/res/layout/fragment_statistic.xml
index 5cab5663afbc0e8e7d366da1dc5f5a22965ae149..43bb16d8e145ccfbaba20768e2d1b35b43b28c0d 100644
--- a/app/src/main/res/layout/fragment_statistic.xml
+++ b/app/src/main/res/layout/fragment_statistic.xml
@@ -21,4 +21,5 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
+
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_transaction.xml b/app/src/main/res/layout/fragment_transaction.xml
index 24bc63da79b2a1e81fe5e4788a88ddd4960473a7..3e98237387e001f3c3012a7f71c8101cf3f0ad7b 100644
--- a/app/src/main/res/layout/fragment_transaction.xml
+++ b/app/src/main/res/layout/fragment_transaction.xml
@@ -4,22 +4,67 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/base"
     android:id="@+id/transaction_fragment"
-    tools:context=".fragment.ui.transaction.TransactionFragment">
+    tools:context=".fragment.ui.transaction.TransactionFragment"
+    android:paddingTop="?attr/actionBarSize">
 
-    <TextView
-        android:id="@+id/text_transaction"
+    <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="8dp"
-        android:layout_marginTop="8dp"
-        android:layout_marginEnd="8dp"
-        android:textAlignment="center"
-        android:textSize="20sp"
-        android:background="@color/orange"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        android:layout_height="587dp"
+        android:layout_gravity="top"
+        android:orientation="vertical"
+        app:layout_constraintTop_toTopOf="parent">
+
+
+        <LinearLayout
+            android:layout_width="360dp"
+            android:layout_height="50dp"
+            android:layout_gravity="center"
+            android:orientation="horizontal"
+            android:paddingHorizontal="20dp">
+
+            <LinearLayout
+                android:layout_width="250dp"
+                android:layout_height="50dp"
+                android:layout_gravity="center"
+                android:layout_marginEnd="10dp"
+                android:background="@drawable/bg_input_text"
+                android:orientation="horizontal"
+                android:paddingHorizontal="20dp">
+
+                <ImageView
+                    android:layout_width="24dp"
+                    android:layout_height="24dp"
+                    android:layout_gravity="center"
+                    android:src="@drawable/icon_search" />
+
+                <EditText
+                    android:id="@+id/searchBar"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:background="@android:color/transparent"
+                    android:hint="Search"
+                    android:inputType="textEmailAddress"
+                    android:paddingHorizontal="20dp" />
+
+            </LinearLayout>
+
+            <ImageView
+                android:layout_width="50dp"
+                android:layout_height="50dp"
+                android:layout_gravity="center"
+                android:layout_marginStart="0dp"
+                android:src="@drawable/icon_filter" />
+
+        </LinearLayout>
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/itemTransaction"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_margin="8dp"
+            tools:listitem="@layout/row_transaction" />
+
+    </LinearLayout>
+
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/row_transaction.xml b/app/src/main/res/layout/row_transaction.xml
new file mode 100644
index 0000000000000000000000000000000000000000..97cf8e847c2a270899fe038aa04f93b3ce09395a
--- /dev/null
+++ b/app/src/main/res/layout/row_transaction.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_margin="8dp"
+    android:orientation="horizontal">
+    <LinearLayout
+        android:layout_width="230dp"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:layout_margin="8dp">
+        <TextView
+            android:id="@+id/category"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:background="@drawable/cornered_box"
+            android:textColor="@color/light_grey"
+            android:padding="4dp"
+            android:textSize="12sp"
+            />
+        <TextView
+            android:id="@+id/itemName"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="2dp"
+            android:textSize="16sp"
+            />
+        <TextView
+            android:id="@+id/itemDate"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="2dp"
+            android:textSize="12sp"
+            />
+    </LinearLayout>
+    <LinearLayout
+        android:layout_width="90dp"
+        android:layout_height="match_parent"
+        android:layout_marginEnd="5dp"
+        android:orientation="vertical"
+        android:gravity="end">
+        <TextView
+            android:id="@+id/itemPrice"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="2dp"
+            android:textSize="16sp"
+            android:layout_weight="1"/>
+        <TextView
+            android:id="@+id/itemLocation"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="2dp"
+            android:textSize="12sp"
+            android:layout_weight="2"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/build.gradle.kts b/build.gradle.kts
index a0985efc88dec705956b74f5d6e9ac23c8daebb8..ea5fa98f18bd9ed171cc2d6991539d10f372a5e3 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,5 +1,20 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+    repositories {
+        google()
+        maven{
+            url = uri("https://jitpack.io")
+
+        }
+    }
+    dependencies {
+        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:2.7.7")
+        classpath("com.github.dcendents:android-maven-gradle-plugin:2.0")
+    }
+}
+
 plugins {
     alias(libs.plugins.androidApplication) apply false
     alias(libs.plugins.jetbrainsKotlinAndroid) apply false
-}
\ No newline at end of file
+}
+
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 9878f4d663b51ce40d632a938df8b233ff84cd5c..fd69e79ed7e300dc4c8c6e81d2d51ffd02cbe03c 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,3 +1,4 @@
+
 pluginManagement {
     repositories {
         google {
@@ -8,6 +9,9 @@ pluginManagement {
             }
         }
         mavenCentral()
+        maven {
+            url = uri("https://jitpack.io")
+        }
         gradlePluginPortal()
     }
 }
@@ -16,6 +20,9 @@ dependencyResolutionManagement {
     repositories {
         google()
         mavenCentral()
+        maven {
+            url = uri("https://jitpack.io")
+        }
     }
 }