diff --git a/backend/routes/mod/routes.go b/backend/routes/mod/routes.go
index ca3db57..8b64139 100644
--- a/backend/routes/mod/routes.go
+++ b/backend/routes/mod/routes.go
@@ -20,6 +20,7 @@ func Mount(srv *server.Server, r chi.Router) {
 		r.Get("/reports/by-user/{id}", server.WrapHandler(s.getReportsByUser))
 		r.Get("/reports/by-reporter/{id}", server.WrapHandler(s.getReportsByReporter))
 
+		r.Get("/reports/{id}", nil)
 		r.Patch("/reports/{id}", nil)
 	})
 
diff --git a/frontend/src/lib/api/entities.ts b/frontend/src/lib/api/entities.ts
index 2117de8..b285187 100644
--- a/frontend/src/lib/api/entities.ts
+++ b/frontend/src/lib/api/entities.ts
@@ -81,6 +81,19 @@ export interface Invite {
   used: boolean;
 }
 
+export interface Report {
+  id: string;
+  user_id: string;
+  member_id: string | null;
+  reason: string;
+  reporter_id: string;
+
+  created_at: string;
+  resolved_at: string | null;
+  admin_id: string | null;
+  admin_comment: string | null;
+}
+
 export interface APIError {
   code: ErrorCode;
   message?: string;
diff --git a/frontend/src/routes/reports/+layout.svelte b/frontend/src/routes/reports/+layout.svelte
new file mode 100644
index 0000000..4fa864c
--- /dev/null
+++ b/frontend/src/routes/reports/+layout.svelte
@@ -0,0 +1 @@
+<slot />
diff --git a/frontend/src/routes/reports/+layout.ts b/frontend/src/routes/reports/+layout.ts
new file mode 100644
index 0000000..a3d1578
--- /dev/null
+++ b/frontend/src/routes/reports/+layout.ts
@@ -0,0 +1 @@
+export const ssr = false;
diff --git a/frontend/src/routes/reports/+page.svelte b/frontend/src/routes/reports/+page.svelte
new file mode 100644
index 0000000..7f17dcf
--- /dev/null
+++ b/frontend/src/routes/reports/+page.svelte
@@ -0,0 +1,5 @@
+<script lang="ts">
+  import type { PageData } from "./$types";
+
+  export let data: PageData;
+</script>
diff --git a/frontend/src/routes/reports/+page.ts b/frontend/src/routes/reports/+page.ts
new file mode 100644
index 0000000..260f0d4
--- /dev/null
+++ b/frontend/src/routes/reports/+page.ts
@@ -0,0 +1,15 @@
+import type { Report } from "$lib/api/entities";
+import { apiFetchClient } from "$lib/api/fetch";
+
+export const load = async () => {
+  const reports = await apiFetchClient<Report[]>("/admin/reports");
+  return { page: 0, isClosed: false, userId: null, reporterId: null, reports } as PageLoadData;
+};
+
+interface PageLoadData {
+  page: number;
+  isClosed: boolean;
+  userId: string | null;
+  reporterId: string | null;
+  reports: Report[];
+}