diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html
index 95ec1ee58a534f65270862f791cd32f71eaecce2..8ead412485d4c20696fcc2dffde7caea0460c11b 100644
--- a/app/templates/dashboard.html
+++ b/app/templates/dashboard.html
@@ -3,7 +3,7 @@
 
 {% block title %}
 <title>Riwayat Unggah | Digipus</title>
-{% endblock %} 
+{% endblock %}
 
 {% block content %}
 <!-- Page Heading -->
@@ -43,10 +43,12 @@
             <td class="verif-buttons">
               <span>
                 <a href="/materi/{{materi.id}}/" class="accept-button button-decoration"
-                style="background-color:#4e73df">Detail</a>
+                  style="background-color:#4e73df">Detail</a>
                 {% if materi.get_status_display == "Ditolak" or materi.get_status_display == "Perbaikan" %}
                 <a href="/revisi/materi/{{materi.id}}/" class="reject-button button-decoration">Revisi</a>
                 {% endif %}
+                <a type="button" href="/materi/{{materi.id}}/delete" class="reject-button button-decoration"
+                  style="background-color:red">Hapus</a>
               </span>
             </td>
           </tr>
diff --git a/app/tests.py b/app/tests.py
index abbc2e4171efae4217485787ec0304c9b2d5689e..cd744649543950569e2d52bd34f189fd461291c5 100644
--- a/app/tests.py
+++ b/app/tests.py
@@ -917,6 +917,25 @@ class DashboardKontributorViewTest(TestCase):
         self.assertIn(ERROR_403_MESSAGE, html)
 
 
+class DeleteMateriTest(TestCase):
+    def setUp(self):
+        self.client = Client()
+        self.content = SimpleUploadedFile(
+            "content.txt", b"Test")
+        self.cover = SimpleUploadedFile(
+            "flower.jpg", b"Test file")
+        self.contributor = User.objects.create_contributor(email="kontributor@gov.id",
+                                                           password="kontributor")
+        Materi(title="Materi 1", author="Agas", uploader=self.contributor,
+               publisher="Kelas SC", descriptions="Deskripsi Materi 1",
+               status="APPROVE", cover=self.cover, content=self.content).save()
+        self.materi1 = Materi.objects.first()
+        self.url = "/materi/" + str(self.materi1.id) + "/delete"
+
+    def test_url_delete_materi_is_success(self):
+        response = self.client.get(self.url)
+        self.assertEqual(response.status_code, 302) 
+        
 class ProfilAdminTest(TestCase):
     def setUp(self):
         self.client = Client()
diff --git a/app/urls.py b/app/urls.py
index 7ccc70c3a5dc1c82dbcb59772f950b9a04e9c2da..8cc94d38e80b5fc56f3b5a2d2dab1318408af9bc 100644
--- a/app/urls.py
+++ b/app/urls.py
@@ -13,6 +13,7 @@ urlpatterns = [
     path("materi/like/", views.toggle_like, name="PostLikeToggle"),
     path("delete/<int:pk_materi>/<int:pk_comment>",
          views.delete_comment, name="delete-comment"),
+    path("materi/<int:pk>/delete", views.delete_materi, name="detele-materi"),
     path("materi/<int:pk>/unduh", views.download_materi, name="download-materi"),
     path("materi/<int:pk>/view", views.view_materi, name="view-materi"),
     path("dashboard/", DashboardKontributorView.as_view(), name="dashboard"),
diff --git a/app/views.py b/app/views.py
index bc0b9f0f74d23bdfb3e4cfd994a52138a020bac5..7de048df03cc147d221b5dd8b9d736283a549651 100644
--- a/app/views.py
+++ b/app/views.py
@@ -348,6 +348,11 @@ def view_materi(request, pk):
         raise Http404("File tidak dapat ditemukan.")
 
 
+def delete_materi(request, pk):
+    materi = get_object_or_404(Materi, pk=pk)
+    materi.delete()
+    return HttpResponseRedirect("/dashboard/")
+
 class UploadMateriView(TemplateView):
     template_name = "unggah.html"
     context = {}