diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4a51b78ff66e9fcbe857133f367055c0b22182a1..497e69a30d2e3148e20ee25c48d931ee8caeb56e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -11,17 +11,19 @@
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/Theme.Bondoman"
-        tools:targetApi="31">
+        >
         <activity
             android:name=".MainActivity"
-            android:exported="true"
-            android:label="@string/app_name">
+            android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity
+            android:name=".AddTransactionActivity"
+            android:exported="false"/>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
index 7f8e861bbcd897e96fa857e18fa6ffdee14eb234..34088743ebf42d06a2a3dcd0815421bae4aedc49 100644
--- a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
@@ -6,14 +6,18 @@ import android.widget.Button
 import android.widget.EditText
 import androidx.appcompat.app.AppCompatActivity
 import androidx.lifecycle.ViewModelProvider
+import com.onionsquad.bondoman.repository.TransactionRepository
+import com.onionsquad.bondoman.room.TransactionDatabase
 import com.onionsquad.bondoman.room.TransactionEntity
 import com.onionsquad.bondoman.ui.transaction.TransactionViewModel
-import java.text.SimpleDateFormat
+import com.onionsquad.bondoman.ui.transaction.TransactionViewModelFactory
 import java.util.Date
-import java.util.Locale
 
 class AddTransactionActivity : AppCompatActivity() {
-    private lateinit var viewModel: TransactionViewModel
+
+    private val database by lazy { TransactionDatabase.getInstance(this) }
+    private val repository by lazy { TransactionRepository(database.transactionDao()) }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_add_transaction)
@@ -23,7 +27,8 @@ class AddTransactionActivity : AppCompatActivity() {
         val categoryEditText: EditText = findViewById(R.id.categoryEditText)
         val locationEditText: EditText = findViewById(R.id.locationEditText)
 
-        viewModel = ViewModelProvider(this).get(TransactionViewModel::class.java)
+        val factory = TransactionViewModelFactory(repository)
+        val viewModel = ViewModelProvider(this, factory)[TransactionViewModel::class.java]
 
         val saveButton: Button = findViewById(R.id.saveButton)
         saveButton.setOnClickListener {
@@ -33,7 +38,7 @@ class AddTransactionActivity : AppCompatActivity() {
             val location = locationEditText.text.toString()
 
             // Dapatkan tanggal saat ini
-            val currentDate = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(Date())
+            val currentDate = Date()
 
             val transaction = TransactionEntity(
                 title = title,
diff --git a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt
index 82452546f5f4802914ba8bbb2dbe51f700b2c5f2..66c176602c7f51214ba4ddd47de96c2ae911e837 100644
--- a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt
@@ -3,8 +3,12 @@ package com.onionsquad.bondoman.room
 import androidx.room.Entity
 import androidx.room.PrimaryKey
 import androidx.room.ColumnInfo
+import androidx.room.TypeConverters
+import com.onionsquad.bondoman.util.DateConverter
+import java.util.Date
 
 @Entity(tableName = "transactions")
+@TypeConverters(DateConverter::class)
 data class TransactionEntity(
     @PrimaryKey(autoGenerate = true)
     val id: Int = 0,
@@ -18,8 +22,8 @@ data class TransactionEntity(
     @ColumnInfo(name = "category")
     val category: String,
 
-    @ColumnInfo(name = "date")
-    val date: String,
+    @ColumnInfo(name = "date", defaultValue = "CURRENT_TIMESTAMP")
+    val date: Date,
 
     @ColumnInfo(name = "location")
     val location: String
diff --git a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionFragment.kt b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionFragment.kt
index 915ec662c638d026f1c3fc530550b248df2de390..4ff1ccc32f50abe95a0e0e74e85e2595bf8997e6 100644
--- a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionFragment.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionFragment.kt
@@ -5,12 +5,12 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
-import android.widget.Button
 import androidx.fragment.app.Fragment
 import androidx.lifecycle.ViewModelProvider
 import com.onionsquad.bondoman.AddTransactionActivity
-import com.onionsquad.bondoman.R
 import com.onionsquad.bondoman.databinding.FragmentTransactionBinding
+import com.onionsquad.bondoman.repository.TransactionRepository
+import com.onionsquad.bondoman.room.TransactionDatabase
 
 class TransactionFragment : Fragment() {
 
@@ -20,13 +20,16 @@ class TransactionFragment : Fragment() {
     // onDestroyView.
     private val binding get() = _binding!!
 
+    private val database by lazy { TransactionDatabase.getInstance(requireContext().applicationContext) }
+    private val repository by lazy { TransactionRepository(database.transactionDao()) }
+
     override fun onCreateView(
             inflater: LayoutInflater,
             container: ViewGroup?,
             savedInstanceState: Bundle?
     ): View {
-        val transactionViewModel =
-                ViewModelProvider(this).get(TransactionViewModel::class.java)
+        val factory = TransactionViewModelFactory(repository)
+        val transactionViewModel = ViewModelProvider(this, factory)[TransactionViewModel::class.java]
 
         _binding = FragmentTransactionBinding.inflate(inflater, container, false)
 
diff --git a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModel.kt b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModel.kt
index a4e10ab1aec043dd0fcbbe484520f06cc3bd08fe..cf96283f3289be47bfd3205f7e6faa0ac4467748 100644
--- a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModel.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModel.kt
@@ -3,9 +3,9 @@ package com.onionsquad.bondoman.ui.transaction
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.viewModelScope
-import kotlinx.coroutines.launch
-import com.onionsquad.bondoman.room.*
 import com.onionsquad.bondoman.repository.TransactionRepository
+import com.onionsquad.bondoman.room.TransactionEntity
+import kotlinx.coroutines.launch
 
 class TransactionViewModel(private val repository : TransactionRepository) : ViewModel() {
     var listTransactions: LiveData<List<TransactionEntity>> = repository.listTransactions
diff --git a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModelFactory.kt b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModelFactory.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d318bade3a0a3dfa99c25021f0e02aac38ab04c7
--- /dev/null
+++ b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModelFactory.kt
@@ -0,0 +1,17 @@
+package com.onionsquad.bondoman.ui.transaction
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import com.onionsquad.bondoman.repository.TransactionRepository
+
+class TransactionViewModelFactory(private val repository: TransactionRepository) :
+    ViewModelProvider.Factory {
+
+    override fun <T : ViewModel> create(modelClass: Class<T>): T {
+        if (modelClass.isAssignableFrom(TransactionViewModel::class.java)) {
+            @Suppress("UNCHECKED_CAST")
+            return TransactionViewModel(repository) as T
+        }
+        throw IllegalArgumentException("Unknown ViewModel class")
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/onionsquad/bondoman/util/DateConverter.kt b/app/src/main/java/com/onionsquad/bondoman/util/DateConverter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..408d43f29d0fef1feb655b043a8080594af926e5
--- /dev/null
+++ b/app/src/main/java/com/onionsquad/bondoman/util/DateConverter.kt
@@ -0,0 +1,19 @@
+package com.onionsquad.bondoman.util
+
+import androidx.room.TypeConverter
+import java.util.Date
+
+object DateConverter {
+
+    @TypeConverter
+    @JvmStatic
+    fun fromTimestamp(value: Long?): Date? {
+        return value?.let { Date(it) }
+    }
+
+    @TypeConverter
+    @JvmStatic
+    fun dateToTimestamp(value: Date?): Long? {
+        return value?.time
+    }
+}
\ 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 fc575e810de8c1a52bac57a9d44e78422bee791d..f7d84c6783037f11b61b8f406f6570a4d374a7a9 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -7,21 +7,21 @@
 
     <fragment
         android:id="@+id/navigation_transaction"
-        android:name="com.onionsquad.bondoman.ui.graph.GraphFragment"
+        android:name="com.onionsquad.bondoman.ui.transaction.TransactionFragment"
         android:label="@string/title_transaction"
-        tools:layout="@layout/fragment_graph" />
+        tools:layout="@layout/fragment_transaction" />
 
     <fragment
         android:id="@+id/navigation_scan"
-        android:name="com.onionsquad.bondoman.ui.transaction.TransactionFragment"
+        android:name="com.onionsquad.bondoman.ui.scan.ScanFragment"
         android:label="@string/title_scan"
-        tools:layout="@layout/fragment_transaction" />
+        tools:layout="@layout/fragment_scan" />
 
     <fragment
         android:id="@+id/navigation_graph"
-        android:name="com.onionsquad.bondoman.ui.scan.ScanFragment"
+        android:name="com.onionsquad.bondoman.ui.graph.GraphFragment"
         android:label="@string/title_graph"
-        tools:layout="@layout/fragment_scan" />
+        tools:layout="@layout/fragment_graph" />
     <fragment
         android:id="@+id/navigation_settings"
         android:name="com.onionsquad.bondoman.ui.settings.SettingsFragment"