diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
index c931bbd4ae41e89218eb8cca3af29ca12ea01b1a..621029c9755d123c91d49dfc106367fecfe12c48 100644
--- a/.github/workflows/unit-test.yml
+++ b/.github/workflows/unit-test.yml
@@ -5,6 +5,8 @@ on:
     branches:
       - main
       - dev
+      - result-page
+      - home-page
 
 jobs:
   build-and-test:
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 56d3bf360f34c62501fb0fd75b776533bf0f2794..e15f3774c371523dab63227cf87873082705b8d8 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -41,7 +41,8 @@ dependencies {
     implementation("androidx.appcompat:appcompat:1.6.1")
     implementation("com.google.android.material:material:1.11.0")
     implementation("androidx.constraintlayout:constraintlayout:2.1.4")
+	implementation("com.github.chrisbanes:PhotoView:2.3.0")
     testImplementation("junit:junit:4.13.2")
     androidTestImplementation("androidx.test.ext:junit:1.1.5")
     androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
-}
\ No newline at end of file
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 679213792fcc2bb3f4342d71fd7495727907cbd7..61fd85e7049292664c23728e0229f6ef1501b7e6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,7 +13,7 @@
         android:theme="@style/Theme.Omrekap"
         tools:targetApi="31">
         <activity
-            android:name=".MainActivity"
+            android:name=".activities.MainActivity"
             android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -21,9 +21,10 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity android:name=".activities.ExpandImageActivity" />
         <meta-data
             android:name="preloaded_fonts"
             android:resource="@array/preloaded_fonts" />
     </application>
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/app/src/main/java/com/k2_9/omrekap/MainActivity.kt b/app/src/main/java/com/k2_9/omrekap/MainActivity.kt
deleted file mode 100644
index e415f54c336e328bf40e0339626559d05228c9e9..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/k2_9/omrekap/MainActivity.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.k2_9.omrekap
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-
-class MainActivity : AppCompatActivity() {
-	override fun onCreate(savedInstanceState: Bundle?) {
-		super.onCreate(savedInstanceState)
-		setContentView(R.layout.activity_main)
-	}
-}
diff --git a/app/src/main/java/com/k2_9/omrekap/ResultPageFragment.kt b/app/src/main/java/com/k2_9/omrekap/ResultPageFragment.kt
deleted file mode 100644
index 9b7354637499f8f6be0502dbb724b5f73e237837..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/k2_9/omrekap/ResultPageFragment.kt
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.k2_9.omrekap
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [ResultPageFragment.newInstance] factory method to
- * create an instance of this fragment.
- */
-class ResultPageFragment : Fragment() {
-	// TODO: Rename and change types of parameters
-	private var param1: String? = null
-	private var param2: String? = null
-
-	override fun onCreate(savedInstanceState: Bundle?) {
-		super.onCreate(savedInstanceState)
-		arguments?.let {
-			param1 = it.getString(ARG_PARAM1)
-			param2 = it.getString(ARG_PARAM2)
-		}
-	}
-
-	override fun onCreateView(
-		inflater: LayoutInflater,
-		container: ViewGroup?,
-		savedInstanceState: Bundle?,
-	): View? {
-		// Inflate the layout for this fragment
-		return inflater.inflate(R.layout.fragment_result_page, container, false)
-	}
-
-	companion object {
-		/**
-		 * Use this factory method to create a new instance of
-		 * this fragment using the provided parameters.
-		 *
-		 * @param param1 Parameter 1.
-		 * @param param2 Parameter 2.
-		 * @return A new instance of fragment ResultPageFragment.
-		 */
-		// TODO: Rename and change types and number of parameters
-		@JvmStatic
-		fun newInstance(
-			param1: String,
-			param2: String,
-		) = ResultPageFragment().apply {
-			arguments =
-				Bundle().apply {
-					putString(ARG_PARAM1, param1)
-					putString(ARG_PARAM2, param2)
-				}
-		}
-	}
-}
diff --git a/app/src/main/java/com/k2_9/omrekap/activities/ExpandImageActivity.kt b/app/src/main/java/com/k2_9/omrekap/activities/ExpandImageActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..25cec8ce843ba769616130d4002040dadf944943
--- /dev/null
+++ b/app/src/main/java/com/k2_9/omrekap/activities/ExpandImageActivity.kt
@@ -0,0 +1,43 @@
+package com.k2_9.omrekap.activities
+
+import android.net.Uri
+import android.os.Build
+import android.os.Build.VERSION
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import com.github.chrisbanes.photoview.PhotoView
+import com.k2_9.omrekap.R
+
+class ExpandImageActivity : AppCompatActivity() {
+	companion object {
+		const val EXTRA_NAME_DRAWABLE_RESOURCE = "DRAWABLE_RESOURCE"
+		const val EXTRA_NAME_IMAGE_RESOURCE = "IMAGE_RESOURRE"
+	}
+
+	override fun onCreate(savedInstanceState: Bundle?) {
+		super.onCreate(savedInstanceState)
+		setContentView(R.layout.activity_expand_image)
+
+		val photoView: PhotoView = findViewById(R.id.fullscreen_content)
+
+		val imageResource =
+			if (VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+				intent.getParcelableExtra("DATA", Uri::class.java)
+			} else {
+				intent.getParcelableExtra<Uri>("DATA")
+			}
+
+		if (imageResource != null) {
+			photoView.setImageURI(imageResource)
+		} else {
+			// Retrieve the image resource ID from the intent
+			val drawableResource = intent.getIntExtra(EXTRA_NAME_DRAWABLE_RESOURCE, 0)
+			// Set the image resource to PhotoView
+			if (drawableResource != 0) {
+				photoView.setImageResource(drawableResource)
+			} else {
+				photoView.setImageResource(R.drawable.ic_image)
+			}
+		}
+	}
+}
diff --git a/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt b/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..91e518b7626f45210d2b53624400de51ea027fb3
--- /dev/null
+++ b/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt
@@ -0,0 +1,21 @@
+package com.k2_9.omrekap.activities
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import com.k2_9.omrekap.R
+import com.k2_9.omrekap.fragments.HomePageFragment
+import com.k2_9.omrekap.fragments.ResultPageFragment
+
+class MainActivity : AppCompatActivity(), ResultPageFragment.OnButtonClickListener {
+	override fun onHomeButtonClick() {
+		// Replace the current fragment with the home fragment
+		supportFragmentManager.beginTransaction()
+			.replace(R.id.fragment_container_view, HomePageFragment())
+			.commit()
+	}
+
+	override fun onCreate(savedInstanceState: Bundle?) {
+		super.onCreate(savedInstanceState)
+		setContentView(R.layout.activity_main)
+	}
+}
diff --git a/app/src/main/java/com/k2_9/omrekap/adapters/ResultAdapter.kt b/app/src/main/java/com/k2_9/omrekap/adapters/ResultAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..acdf2ca476dc40325e49e3802ef40ad0f1112518
--- /dev/null
+++ b/app/src/main/java/com/k2_9/omrekap/adapters/ResultAdapter.kt
@@ -0,0 +1,38 @@
+package com.k2_9.omrekap.adapters
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.k2_9.omrekap.R
+
+class ResultAdapter(private val dataList: List<Pair<String, String>>) :
+	RecyclerView.Adapter<ResultAdapter.ResultViewHolder>() {
+	inner class ResultViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+		val keyTextView: TextView = itemView.findViewById(R.id.result_candidate_text)
+		val valueTextView: TextView = itemView.findViewById(R.id.result_count_text)
+	}
+
+	override fun onCreateViewHolder(
+		parent: ViewGroup,
+		viewType: Int,
+	): ResultViewHolder {
+		val view =
+			LayoutInflater.from(parent.context)
+				.inflate(R.layout.layout_result_row, parent, false)
+		return ResultViewHolder(view)
+	}
+
+	override fun onBindViewHolder(
+		holder: ResultViewHolder,
+		position: Int,
+	) {
+		val item = dataList[position]
+		holder.keyTextView.text = item.first
+		holder.valueTextView.text = item.second
+	}
+
+	override fun getItemCount(): Int {
+		return dataList.size
+	}
+}
diff --git a/app/src/main/java/com/k2_9/omrekap/fragments/HomePageFragment.kt b/app/src/main/java/com/k2_9/omrekap/fragments/HomePageFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..98a69e2d03bc369ea3b620452db6311b6150eb3b
--- /dev/null
+++ b/app/src/main/java/com/k2_9/omrekap/fragments/HomePageFragment.kt
@@ -0,0 +1,26 @@
+package com.k2_9.omrekap.fragments
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.k2_9.omrekap.R
+
+class HomePageFragment : Fragment() {
+	override fun onCreateView(
+		inflater: LayoutInflater,
+		container: ViewGroup?,
+		savedInstanceState: Bundle?,
+	): View? {
+		// Inflate the layout for this fragment
+		return inflater.inflate(R.layout.fragment_home_page, container, false)
+	}
+
+	override fun onViewCreated(
+		view: View,
+		savedInstanceState: Bundle?,
+	) {
+		super.onViewCreated(view, savedInstanceState)
+	}
+}
diff --git a/app/src/main/java/com/k2_9/omrekap/fragments/ResultPageFragment.kt b/app/src/main/java/com/k2_9/omrekap/fragments/ResultPageFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..340dc2e09dac24f973a8c5e972c51795e6cbd373
--- /dev/null
+++ b/app/src/main/java/com/k2_9/omrekap/fragments/ResultPageFragment.kt
@@ -0,0 +1,107 @@
+package com.k2_9.omrekap.fragments
+
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageButton
+import android.widget.ImageView
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.k2_9.omrekap.R
+import com.k2_9.omrekap.activities.ExpandImageActivity
+import com.k2_9.omrekap.adapters.ResultAdapter
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [ResultPageFragment.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class ResultPageFragment : Fragment() {
+	interface OnButtonClickListener {
+		fun onHomeButtonClick()
+	}
+
+	private lateinit var recyclerView: RecyclerView
+	private lateinit var resultAdapter: ResultAdapter
+
+	private var buttonClickListener: OnButtonClickListener? = null
+
+	override fun onAttach(context: Context) {
+		super.onAttach(context)
+
+		if (context is OnButtonClickListener) {
+			buttonClickListener = context
+		} else {
+			throw ClassCastException("$context must implement OnButtonClickListener")
+		}
+	}
+
+	override fun onCreateView(
+		inflater: LayoutInflater,
+		container: ViewGroup?,
+		savedInstanceState: Bundle?,
+	): View? {
+		val view = inflater.inflate(R.layout.fragment_result_page, container, false)
+
+		// Initialize your data (list of key-value pairs)
+		val resultData =
+			listOf(
+				Pair("Prabowo Subianto Djojohadikusumo", "270,20 juta"),
+				Pair("Key2", "Value2"),
+				Pair("Key3", "Value3"),
+				Pair("Key4", "Value4"),
+				Pair("Key5", "Value5"),
+				Pair("Key6", "Value6"),
+				// ... add more key-value pairs as needed
+			)
+
+		// Set up RecyclerView
+		recyclerView = view.findViewById(R.id.result_recycler_view)
+		recyclerView.layoutManager = LinearLayoutManager(requireContext())
+		resultAdapter = ResultAdapter(resultData)
+		recyclerView.adapter = resultAdapter
+
+		// set default image
+		val documentImageView: ImageView = view.findViewById(R.id.document_image)
+		val defaultDrawableId = R.drawable.ic_image
+
+		documentImageView.tag = defaultDrawableId
+		documentImageView.setImageResource(defaultDrawableId)
+
+		// configure expand action
+		val expandButton: ImageButton = view.findViewById(R.id.expand_button)
+		expandButton.setOnClickListener {
+			// Pass the image resource ID to ExpandImageActivity
+			val imageResource = documentImageView.tag ?: R.drawable.ic_image
+			val intent = Intent(requireContext(), ExpandImageActivity::class.java)
+
+			// Choose the appropriate constant based on the type of resource
+			when (imageResource) {
+				is Int -> {
+					intent.putExtra(ExpandImageActivity.EXTRA_NAME_DRAWABLE_RESOURCE, imageResource)
+				}
+				is Uri -> {
+					intent.putExtra(ExpandImageActivity.EXTRA_NAME_IMAGE_RESOURCE, imageResource)
+				}
+				else -> {
+					throw IllegalArgumentException("Unsupported resource type")
+				}
+			}
+
+			startActivity(intent)
+		}
+
+		// set home button listener
+		val homeButton: ImageButton = view.findViewById(R.id.home_button)
+		homeButton.setOnClickListener {
+			buttonClickListener?.onHomeButtonClick()
+		}
+
+		return view
+	}
+}
diff --git a/app/src/main/res/drawable/bg_gradient_result_card.xml b/app/src/main/res/drawable/bg_gradient_result_card.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5b2e43d3123b48af76738a912216aed64399f89e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_gradient_result_card.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <gradient
+
+        android:startColor="@color/purpleResultCardGradient2"
+        android:endColor="@color/purpleResultCardGradient1"
+        android:type="linear"
+        android:angle="90"/>
+</shape>
diff --git a/app/src/main/res/layout/activity_expand_image.xml b/app/src/main/res/layout/activity_expand_image.xml
new file mode 100644
index 0000000000000000000000000000000000000000..90782a40b889e7e1aecbecce03b165a00a69db03
--- /dev/null
+++ b/app/src/main/res/layout/activity_expand_image.xml
@@ -0,0 +1,23 @@
+<?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:background="#000000"
+    tools:context=".activities.ExpandImageActivity">
+
+    <com.github.chrisbanes.photoview.PhotoView
+        android:id="@+id/fullscreen_content"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:scaleType="fitCenter"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintDimensionRatio="@string/ratio_image"
+        />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index a1aa018ed318729d12cd0a2add77c90b2c3d1c1c..f69eaead85b4d4013dce34e75dc9454db5e1a51b 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -12,7 +12,7 @@
         android:layout_width="0dp"
         android:layout_height="0dp"
         android:layout_marginTop="45dp"
-        android:name="com.k2_9.omrekap.ResultPageFragment"
+        android:name="com.k2_9.omrekap.fragments.ResultPageFragment"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
@@ -24,7 +24,7 @@
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="0dp"
         android:layout_height="60dp"
-        android:theme="@style/ThemeOverlay.Omrekap.MainPageRoundBackground"
+        android:theme="@style/ThemeOverlay.Omrekap.MainPageButtonRoundBackground"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
@@ -39,8 +39,8 @@
             android:outlineAmbientShadowColor="@color/purplePrimary"
             android:outlineSpotShadowColor="@color/purplePrimary"
             app:cardCornerRadius="100dp"
-            app:cardElevation="2.5dp"
-            app:layout_constraintDimensionRatio="1:1"
+            app:cardElevation="3dp"
+            app:layout_constraintDimensionRatio="@string/ratio_square"
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent">
@@ -48,23 +48,23 @@
                 android:id="@+id/gallery_button"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:src="@drawable/ic_image"
-                android:scaleType="fitCenter"
                 android:background="@drawable/bg_round"
                 android:contentDescription="@string/gallery_button"
                 android:padding="14dp"
-                app:tint="@color/white" />
+                android:scaleType="fitCenter"
+                android:src="@drawable/ic_image"
+                app:tint="@color/white"
+                tools:ignore="TouchTargetSizeCheck" />
         </androidx.cardview.widget.CardView>
         <androidx.cardview.widget.CardView
-            android:id="@+id/camera_card_view"
             android:layout_width="0dp"
             android:layout_height="0dp"
             android:layout_margin="5dp"
             android:outlineAmbientShadowColor="@color/purplePrimary"
             android:outlineSpotShadowColor="@color/purplePrimary"
             app:cardCornerRadius="100dp"
-            app:cardElevation="2.5dp"
-            app:layout_constraintDimensionRatio="1:1"
+            app:cardElevation="3dp"
+            app:layout_constraintDimensionRatio="@string/ratio_square"
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent">
diff --git a/app/src/main/res/layout/fragment_home_page.xml b/app/src/main/res/layout/fragment_home_page.xml
index baebe7e8f3fd3c9a1c9705ea499bead4501d30a7..d80a15eaacd18b241bb8278d4c631a2bc66339b9 100644
--- a/app/src/main/res/layout/fragment_home_page.xml
+++ b/app/src/main/res/layout/fragment_home_page.xml
@@ -5,15 +5,13 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/bg_gradient_main_background"
-    tools:context=".HomePageFragment">
+    tools:context=".fragments.HomePageFragment">
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/constraintLayout3"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         app:layout_constraintStart_toStartOf="parent"
-        android:layout_marginTop="34dp"
-        android:layout_marginStart="20dp"
         app:layout_constraintTop_toTopOf="parent">
 
         <TextView
@@ -40,69 +38,4 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/constraintLayout3" />
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="0dp"
-        android:layout_height="60dp"
-        android:theme="@style/ThemeOverlay.Omrekap.MainPageRoundBackground"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/imageView"
-        app:layout_constraintWidth_percent="0.9"
-        android:layout_marginTop="100dp">
-
-        <androidx.cardview.widget.CardView
-            android:id="@+id/gallery_card_view"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:layout_margin="5dp"
-            android:outlineAmbientShadowColor="@color/purplePrimary"
-            android:outlineSpotShadowColor="@color/purplePrimary"
-            app:cardCornerRadius="100dp"
-            app:cardElevation="2.5dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintDimensionRatio="1:1"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toTopOf="parent">
-
-            <ImageButton
-                android:id="@+id/gallery_button"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="@drawable/bg_round"
-                android:contentDescription="@string/gallery_button"
-                android:padding="14dp"
-                android:scaleType="fitCenter"
-                android:src="@drawable/ic_image"
-                app:tint="@color/white" />
-        </androidx.cardview.widget.CardView>
-
-        <androidx.cardview.widget.CardView
-            android:id="@+id/camera_card_view"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:layout_margin="5dp"
-            android:outlineAmbientShadowColor="@color/purplePrimary"
-            android:outlineSpotShadowColor="@color/purplePrimary"
-            app:cardCornerRadius="100dp"
-            app:cardElevation="2.5dp"
-
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintDimensionRatio="1:1"
-            app:layout_constraintRight_toRightOf="parent"
-            app:layout_constraintTop_toTopOf="parent">
-            <ImageButton
-                android:id="@+id/camera_button"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="@drawable/bg_round"
-                android:contentDescription="@string/camera_button"
-                android:padding="14dp"
-                android:scaleType="fitCenter"
-                android:elevation="4dp"
-                android:src="@drawable/ic_camera"
-                app:tint="@color/white" />
-        </androidx.cardview.widget.CardView>
-    </androidx.constraintlayout.widget.ConstraintLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout/fragment_result_page.xml b/app/src/main/res/layout/fragment_result_page.xml
index 84f5fd91ee320194a34af351739b66cba9ed7e27..65b80e18dc621f661dd4888f2c9aa49df4f36046 100644
--- a/app/src/main/res/layout/fragment_result_page.xml
+++ b/app/src/main/res/layout/fragment_result_page.xml
@@ -5,50 +5,144 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@drawable/bg_gradient_main_background"
-    tools:context=".ResultPageFragment">
+    tools:context=".fragments.ResultPageFragment">
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/top_layout"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
+        android:theme="@style/ThemeOverlay.Omrekap.MainPageButtonRoundBackground"
         >
+
         <TextView
-            android:id="@+id/textView"
+            android:id="@+id/result_page_title"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:text="@string/result_page_title"
             android:theme="@style/TextAppearance.Heading1"
-            app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent" />
+            app:layout_constraintTop_toTopOf="parent"
+            tools:ignore="TextContrastCheck" />
         <androidx.cardview.widget.CardView
-            android:id="@+id/gallery_card_view"
-            android:layout_width="40dp"
-            android:layout_height="40dp"
+            android:id="@+id/home_card_view"
+            android:layout_width="0dp"
+            android:layout_height="0dp"
             android:layout_margin="5dp"
             android:outlineAmbientShadowColor="@color/purplePrimary"
             android:outlineSpotShadowColor="@color/purplePrimary"
             app:cardCornerRadius="100dp"
-            app:cardElevation="2.5dp"
-            app:layout_constraintDimensionRatio="1:1"
+            app:cardElevation="3dp"
+            app:layout_constraintDimensionRatio="@string/ratio_square"
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintHorizontal_bias="1">
+
             <ImageButton
-                android:id="@+id/gallery_button"
+                android:id="@+id/home_button"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:src="@drawable/ic_home"
-                android:scaleType="fitCenter"
                 android:background="@drawable/bg_round"
                 android:contentDescription="@string/home_button"
-                android:padding="14dp"
-                app:tint="@color/white" />
+                android:padding="8dp"
+                android:scaleType="fitCenter"
+                android:src="@drawable/ic_home"
+                app:tint="@color/white"
+                tools:ignore="TouchTargetSizeCheck" />
         </androidx.cardview.widget.CardView>
     </androidx.constraintlayout.widget.ConstraintLayout>
+    <androidx.cardview.widget.CardView
+        android:id="@+id/result_card_view"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_marginTop="20dp"
+        android:outlineAmbientShadowColor="@color/purplePrimary"
+        android:outlineSpotShadowColor="@color/purplePrimary"
+        app:cardCornerRadius="30dp"
+        app:cardElevation="10dp"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/top_layout"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintWidth_percent="0.9"
+        app:layout_constraintHeight_percent="0.73"
+        app:layout_constraintVertical_bias="0">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:gravity="center_horizontal"
+            android:background="@drawable/bg_gradient_result_card"
+            android:paddingHorizontal="40dp"
+            android:paddingVertical="30dp">
+            <androidx.cardview.widget.CardView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="0dp">
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent">
+
+                    <ImageView
+                        android:id="@+id/document_image"
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:background="@color/purplePrimary"
+                        android:contentDescription="@string/document_photo"
+                        android:padding="20dp"
+                        android:scaleType="fitCenter"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent"
+                        app:tint="@color/documentPhotoAlt"
+                        app:layout_constraintDimensionRatio="@string/ratio_image"
+                        tools:ignore="ImageContrastCheck" />
+                    <ImageButton
+                        android:id="@+id/expand_button"
+                        android:layout_width="30dp"
+                        android:layout_height="30dp"
+                        android:background="@drawable/bg_round"
+                        android:contentDescription="@string/expand_button"
+                        android:scaleType="fitCenter"
+                        android:src="@drawable/ic_expand"
+                        android:theme="@style/ThemeOverlay.Omrekap.ExpandButtonRoundBackground"
+                        android:layout_marginEnd="20dp"
+                        android:layout_marginTop="20dp"
+                        app:tint="@color/white"
+                        app:layout_constraintDimensionRatio="@string/ratio_square"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent"
+                        tools:ignore="TouchTargetSizeCheck" />
+                </androidx.constraintlayout.widget.ConstraintLayout>
+            </androidx.cardview.widget.CardView>
+            <Space
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_weight="1" />
+            <TextView
+                android:id="@+id/result_timestamp"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/result_timestamp"
+
+                android:theme="@style/TextAppearance.Paragraph1" />
+            <Space
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_weight="2" />
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/result_recycler_view"
+                android:theme="@style/TextAppearance.ResultText"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="20" />
+        </LinearLayout>
+    </androidx.cardview.widget.CardView>
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout/layout_result_row.xml b/app/src/main/res/layout/layout_result_row.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b10f0402c803ac6f2dfeee4111b254fc9e5296a0
--- /dev/null
+++ b/app/src/main/res/layout/layout_result_row.xml
@@ -0,0 +1,41 @@
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:padding="8dp">
+
+    <TextView
+        android:id="@+id/result_candidate_text"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="8dp"
+        android:gravity="start"
+        android:scrollHorizontally="true"
+        android:ellipsize="end"
+        android:maxLines="1"
+        app:layout_constraintEnd_toStartOf="@+id/guideline"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"/>
+
+    <TextView
+        android:id="@+id/result_count_text"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:gravity="end"
+        android:scrollHorizontally="true"
+        android:ellipsize="end"
+        android:maxLines="1"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/guideline"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"/>
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_percent="0.6"/>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index cb409dbb55ccbb64a62303ff35e2d0dcc1c6b082..8a9cada7e14cec3842acb1f46a726c7b76b3f41a 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -6,6 +6,10 @@
     <color name="backgroundSecondary">#341369</color>
     <color name="purplePrimary">#8546ED</color>
     <color name="purpleSecondary">#6437A0</color>
+    <color name="purpleResultCardGradient1">#341369</color>
+    <color name="purpleResultCardGradient2">#6437A0</color>
+    <color name="documentPhotoAlt">#66FFFFFF</color>
+    <color name="backgroundExpandButton">#11FFFFFF</color>
     <color name="white_opacity_16">#80FFFFFF</color>
     <color name="white_opacity_0">#00FFFFFF</color>
 </resources>
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000000000000000000000000000000000000..045e125f3d8dad8668061d471dd9869e29e4713a
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 97d9bb9421f81d2dc3442d58242cc7ac4cf12427..783c23ca787cb6cf18850d4bdfe23fac1795a505 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4,5 +4,10 @@
     <string name="camera_button">Camera</string>
     <string name="result_page_title">Hasil</string>
     <string name="home_button">home</string>
+    <string name="result_timestamp">27/02/2024 16:15</string>
+    <string name="document_photo">document</string>
+    <string name="expand_button">expand</string>
+    <string name="ratio_image">3:4</string>
+    <string name="ratio_square">1:1</string>
     <string name="img_omr_description">OMR Illustration</string>
 </resources>
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 2983975a82112ee5463697ff759f94c18bd8828a..b00f458b0783d5fd774e38db85c4b6f101300d4b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -2,16 +2,21 @@
     <!-- Base application theme. -->
     <style name="Base.Theme.Omrekap" parent="Theme.Material3.DayNight.NoActionBar">
         <item name="android:ambientShadowAlpha">0</item>
-        <item name="android:spotShadowAlpha">0.4</item>
+        <item name="android:spotShadowAlpha">1</item>
     </style>
 
     <style name="Theme.Omrekap" parent="Base.Theme.Omrekap" />
 
-    <style name="ThemeOverlay.Omrekap.MainPageRoundBackground" parent="">
+    <style name="ThemeOverlay.Omrekap.MainPageButtonRoundBackground" parent="">
         <item name="RoundBackgroundRadius">100dp</item>
         <item name="RoundBackgroundColor">@color/purplePrimary</item>
     </style>
 
+    <style name="ThemeOverlay.Omrekap.ExpandButtonRoundBackground" parent="">
+        <item name="RoundBackgroundRadius">5dp</item>
+        <item name="RoundBackgroundColor">@color/backgroundExpandButton</item>
+    </style>
+
     <style name="TextAppearance.Heading1" parent="@android:style/TextAppearance">
         <item name="android:textSize">30sp</item>
         <item name="android:fontFamily">@font/inter_bold</item>
@@ -23,10 +28,11 @@
         <item name="android:textColorLink">@color/white</item>
     </style>
     <style name="TextAppearance.Heading3" parent="@android:style/TextAppearance">
-        <item name="android:textSize">16sp</item>
+        <item name="android:textSize">12sp</item>
         <item name="android:fontFamily">@font/inter_bold</item>
         <item name="android:typeface">normal</item>
         <item name="android:textColor">@color/white</item>
+        <item name="android:letterSpacing">0.07</item>
         <item name="android:textColorHighlight">@color/white</item>
         <item name="android:textColorHint">@color/white</item>
         <item name="android:textColorLink">@color/white</item>
@@ -40,5 +46,11 @@
         <item name="android:textColorHint">@color/white</item>
         <item name="android:textColorLink">@color/white</item>
     </style>
+    <style name="TextAppearance.ResultText" parent="TextAppearance.Heading3">
+        <item name="android:shadowColor">@color/white</item>
+        <item name="android:shadowDx">0</item>
+        <item name="android:shadowDy">0</item>
+        <item name="android:shadowRadius">5</item>
+    </style>
 
 </resources>
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 57918f61b4d829b758e4f94bbbfacae0a60f472b..630f1222aeeed5f7ded006fa90bed2b9f3700888 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -10,6 +10,7 @@ dependencyResolutionManagement {
     repositories {
         google()
         mavenCentral()
+		maven("https://www.jitpack.io")
     }
 }