diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index c661268957eb56058df4c347bcb3edc02b4c05b6..a1fd2442e6d4e8cc20603bd6cc8a0461dc9c6e94 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -47,6 +47,7 @@ dependencies {
     implementation("com.android.volley:volley:1.2.1")
     implementation("androidx.core:core-ktx:1.12.0")
     implementation("androidx.appcompat:appcompat:1.6.1")
+    implementation("com.github.PhilJay:MPAndroidChart:v3.1.0")
     implementation("com.google.android.material:material:1.11.0")
     implementation("androidx.constraintlayout:constraintlayout:2.1.4")
     testImplementation("junit:junit:4.13.2")
diff --git a/app/src/main/java/com/example/nerbos/fragments/statistic/StatisticFragment.kt b/app/src/main/java/com/example/nerbos/fragments/statistic/StatisticFragment.kt
index 55768bf7c265c09097eb8f4c1c0ad305f85daab6..8eba3594b4d5a3cf449300f8a316cc6119c0ae5c 100644
--- a/app/src/main/java/com/example/nerbos/fragments/statistic/StatisticFragment.kt
+++ b/app/src/main/java/com/example/nerbos/fragments/statistic/StatisticFragment.kt
@@ -1,16 +1,26 @@
 package com.example.nerbos.fragments.statistic
 
+import android.graphics.Color
+import android.graphics.Typeface
 import android.os.Bundle
+import android.util.Log
 import androidx.fragment.app.Fragment
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.lifecycle.ViewModelProvider
 import com.example.nerbos.R
-
-// 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"
+import com.example.nerbos.databinding.FragmentStatisticBinding
+import com.example.nerbos.model.TransactionCategory
+import com.example.nerbos.viewmodel.TransactionViewModel
+import com.example.nerbos.service.Authentication
+import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.PieChart
+import com.github.mikephil.charting.data.PieData
+import com.github.mikephil.charting.data.PieDataSet
+import com.github.mikephil.charting.data.PieEntry
+import com.github.mikephil.charting.formatter.PercentFormatter
+import com.github.mikephil.charting.utils.MPPointF
 
 /**
  * A simple [Fragment] subclass.
@@ -18,43 +28,57 @@ private const val ARG_PARAM2 = "param2"
  * create an instance of this fragment.
  */
 class StatisticFragment : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
+
+    private lateinit var transactionViewModel: TransactionViewModel
+    private lateinit var authentication: Authentication
+    private lateinit var pieChart: PieChart
+    private var sumIncome: Float = 0.0f
+    private var sumOutcome : Float = 0.0f
 
     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? {
+    ): View {
         // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_statistic, container, false)
-    }
+        val binding = FragmentStatisticBinding.inflate(inflater, container, false)
+        pieChart = binding.pieChart
 
-    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 Statistic.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            StatisticFragment().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
+        // Create an authentication object
+        authentication = Authentication(requireContext())
+        // Set the view model for the transaction and set the user id
+        transactionViewModel = ViewModelProvider(this)[TransactionViewModel::class.java]
+        transactionViewModel.setReadDataUserId(authentication.getNim())
+
+        // log all the transactions
+        transactionViewModel.readAllData!!.observe(viewLifecycleOwner) { transactions ->
+            transactions.forEach {
+                Log.d("Transaction", it.toString())
+                if (it.category == TransactionCategory.INCOME) {
+                    sumIncome += it.nominal
+                } else {
+                    sumOutcome += it.nominal
                 }
             }
+        }
+
+        // Set up the pie chart
+        pieChartSetup()
+
+
+
+        return binding.root
     }
+
+    // Display a pie chart of the income and outcome
+    private fun pieChartSetup() {
+
+    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_circle.xml b/app/src/main/res/drawable/ic_circle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f974c6002e895d87f9ea13cdc3e4d052be61018c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_circle.xml
@@ -0,0 +1,5 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="15dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="15dp">
+      
+    <path android:fillColor="@android:color/white" android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2z"/>
+    
+</vector>
diff --git a/app/src/main/res/layout/fragment_statistic.xml b/app/src/main/res/layout/fragment_statistic.xml
index c90a5c1c7ad6b85e52a6d0f3902bd80803bab3f1..7e562b036d83f4113f8e311614cc3b505f9b8d82 100644
--- a/app/src/main/res/layout/fragment_statistic.xml
+++ b/app/src/main/res/layout/fragment_statistic.xml
@@ -1,16 +1,82 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout
+    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:fillViewport="true"
+    android:background="@color/primary_bg"
     tools:context=".fragments.statistic.StatisticFragment">
 
-    <!-- TODO: Update blank fragment layout -->
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="Statistic Fragment"
-        android:textSize="26dp"
-        android:layout_gravity="center" />
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="20dp"
+        tools:ignore="UselessParent">
+
+        <TextView
+            android:id="@+id/titleChart"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:padding="10dp"
+            android:text="@string/pie_chart"
+            android:textAlignment="center"
+            android:textColor="@color/chart_title"
+            android:textSize="25sp"
+            android:textStyle="bold" />
+
+
+        <!--Ui component for our pie chart-->
+        <com.github.mikephil.charting.charts.PieChart
+            android:id="@+id/pieChart"
+            android:layout_width="300dp"
+            android:layout_height="300dp"
+            android:layout_below="@+id/titleChart"
+            android:layout_alignParentEnd="false"
+            android:layout_centerHorizontal="true"
+            android:layout_marginTop="20dp"
+            android:layout_marginBottom="5dp" />
+
+        <LinearLayout
+            android:layout_width="300dp"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/pieChart"
+            android:layout_marginTop="25dp"
+            android:orientation="horizontal"
+            android:layout_centerHorizontal="true"
+            android:weightSum="2">
+
+            <TextView
+                android:id="@+id/totalIncome"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_margin="3dp"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:padding="4dp"
+                android:text="@string/income"
+                android:textAlignment="center"
+                android:textColor="@color/white"
+                app:drawableTint="@color/purple_200"
+                app:drawableLeftCompat="@drawable/ic_circle" />
+
+            <TextView
+                android:id="@+id/totalOutcome"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_margin="3dp"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:padding="4dp"
+                android:text="@string/outcome"
+                android:textAlignment="center"
+                android:textColor="@color/white"
+                app:drawableLeftCompat="@drawable/ic_circle"
+                app:drawableTint="@color/red" />
+        </LinearLayout>
+
+    </RelativeLayout>
 
 </FrameLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 20f56ac656d92d996a3a20df82ea73e84d0f8d30..b9f39245f02ffbfb7aeeb029d7e07b644c1fc3ca 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -20,4 +20,15 @@
     <color name="strong_blue_button">#0DA6C2</color>
     <color name="weak_blue_button">#800DA6C2</color>
     <color name="transparent">#00FFFFFF</color>
+
+    <color name="purple_200">#0F9D58</color>
+    <color name="purple_500">#0F9D58</color>
+    <color name="purple_700">#0F9D58</color>
+    <color name="teal_200">#FF03DAC5</color>
+    <color name="teal_700">#FF018786</color>
+    <color name="grey">#aaa</color>
+    <color name="button_color">#1E573B</color>
+    <color name="yellow">#FFEB3B</color>
+    <color name="chart_title">#AEACCC</color>
+
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 93156b4b00eeac9c58eece350969a1b530d0fa4a..343b4c377de55b935141ff6ae6d1579d790ea1b1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -48,5 +48,6 @@
     <string name="outcome">Outcome</string>
     <string name="network_sensing_string">No Internet Connection Please check your connection and try again.</string>
     <string name="close_button">Close Button</string>
+    <string name="pie_chart">Pie Chart</string>
 
 </resources>
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index f4f7ca044d42341d3ea2d11ed06fa2983bcacc3f..f677740f90476b45d0068ed3e06d785a3e0b6271 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -9,6 +9,7 @@ dependencyResolutionManagement {
     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
     repositories {
         google()
+        maven { url = uri("https://jitpack.io") }
         mavenCentral()
     }
 }