diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 741e417c6331097475581578e91bbda38cfd59c6..38454a5253b469f4580a66342a601d4216dd798e 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -46,6 +46,7 @@ dependencies {
     implementation(libs.androidx.lifecycle.viewmodel.ktx)
     implementation(libs.androidx.navigation.fragment.ktx)
     implementation(libs.androidx.navigation.ui.ktx)
+    implementation(libs.androidx.lifecycle.viewmodel.compose)
     testImplementation(libs.junit)
     androidTestImplementation(libs.androidx.junit)
     androidTestImplementation(libs.androidx.espresso.core)
diff --git a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7f8e861bbcd897e96fa857e18fa6ffdee14eb234
--- /dev/null
+++ b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
@@ -0,0 +1,55 @@
+package com.onionsquad.bondoman
+
+import android.content.Intent
+import android.os.Bundle
+import android.widget.Button
+import android.widget.EditText
+import androidx.appcompat.app.AppCompatActivity
+import androidx.lifecycle.ViewModelProvider
+import com.onionsquad.bondoman.room.TransactionEntity
+import com.onionsquad.bondoman.ui.transaction.TransactionViewModel
+import java.text.SimpleDateFormat
+import java.util.Date
+import java.util.Locale
+
+class AddTransactionActivity : AppCompatActivity() {
+    private lateinit var viewModel: TransactionViewModel
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(R.layout.activity_add_transaction)
+
+        val titleEditText: EditText = findViewById(R.id.titleEditText)
+        val amountEditText: EditText = findViewById(R.id.amountEditText)
+        val categoryEditText: EditText = findViewById(R.id.categoryEditText)
+        val locationEditText: EditText = findViewById(R.id.locationEditText)
+
+        viewModel = ViewModelProvider(this).get(TransactionViewModel::class.java)
+
+        val saveButton: Button = findViewById(R.id.saveButton)
+        saveButton.setOnClickListener {
+            val title = titleEditText.text.toString()
+            val amount = amountEditText.text.toString().toDoubleOrNull() ?: 0.0
+            val category = categoryEditText.text.toString()
+            val location = locationEditText.text.toString()
+
+            // Dapatkan tanggal saat ini
+            val currentDate = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(Date())
+
+            val transaction = TransactionEntity(
+                title = title,
+                amount = amount,
+                category = category,
+                date = currentDate,
+                location = location
+            )
+
+            viewModel.insertTransaction(transaction)
+
+
+            // Navigasi kembali ke halaman daftar transaksi
+            Intent(this@AddTransactionActivity, MainActivity::class.java).also {
+                startActivity(it)
+            }
+        }
+    }
+}
\ No newline at end of file
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 d43791d0f9b611492d3e60d466a0a93a6fe3c877..915ec662c638d026f1c3fc530550b248df2de390 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
@@ -1,11 +1,15 @@
 package com.onionsquad.bondoman.ui.transaction
 
+import android.content.Intent
 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
 
 class TransactionFragment : Fragment() {
@@ -26,6 +30,11 @@ class TransactionFragment : Fragment() {
 
         _binding = FragmentTransactionBinding.inflate(inflater, container, false)
 
+        binding.button.setOnClickListener {
+            val intent = Intent(activity, AddTransactionActivity::class.java)
+            startActivity(intent)
+        }
+
         return binding.root
     }
 
diff --git a/app/src/main/res/layout/activity_add_transaction.xml b/app/src/main/res/layout/activity_add_transaction.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1858a85b38c01dfd8eda38a6101a69ec026fd3a5
--- /dev/null
+++ b/app/src/main/res/layout/activity_add_transaction.xml
@@ -0,0 +1,54 @@
+<?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="match_parent"
+    android:orientation="vertical"
+    android:padding="16dp">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Transaksi"
+        android:textSize="24sp"
+        android:textStyle="bold" />
+
+    <EditText
+        android:id="@+id/titleEditText"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:hint="Judul"
+        android:inputType="text" />
+
+    <EditText
+        android:id="@+id/amountEditText"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:hint="Nominal"
+        android:inputType="numberDecimal" />
+
+    <EditText
+        android:id="@+id/categoryEditText"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:hint="Kategori"
+        android:inputType="text" />
+
+    <EditText
+        android:id="@+id/locationEditText"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:hint="Lokasi"
+        android:inputType="text" />
+
+    <Button
+        android:id="@+id/saveButton"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:text="Simpan" />
+
+</LinearLayout>
\ 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 57a856060acfaabd0a791420812b73e086ff07f7..26af3dd3316b3d39d8d4a93547724bcb95a87311 100644
--- a/app/src/main/res/layout/fragment_transaction.xml
+++ b/app/src/main/res/layout/fragment_transaction.xml
@@ -4,4 +4,17 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".ui.transaction.TransactionFragment"/>
\ No newline at end of file
+    tools:context=".ui.transaction.TransactionFragment">
+
+    <Button
+        android:id="@+id/button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Button"
+        android:visibility="visible"
+        app:layout_constraintBottom_toBottomOf="parent"
+        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/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 7a4150f5990e4ff059bbeecc36965eb4d87cdadf..8031a6ace0040befe3adec2b86274f0cd7293bed 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -14,6 +14,7 @@ navigationFragmentKtx = "2.6.0"
 navigationUiKtx = "2.6.0"
 room = "2.6.1"
 kapt = "1.9.23"
+lifecycleViewmodelCompose = "2.7.0"
 
 [libraries]
 androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
@@ -31,6 +32,7 @@ room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "
 room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" }
 room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" }
 room-common = { group = "androidx.room", name = "room-common", version.ref = "room" }
+androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycleViewmodelCompose" }
 
 [plugins]
 androidApplication = { id = "com.android.application", version.ref = "agp" }