diff --git a/frontend/src/components/RegionStats/index.tsx b/frontend/src/components/RegionStats/index.tsx
new file mode 100644
index 0000000..5dac6b8
--- /dev/null
+++ b/frontend/src/components/RegionStats/index.tsx
@@ -0,0 +1,83 @@
+import React, { useState, useCallback } from "react";
+import { pickBy } from "lodash";
+import {
+ Loader,
+ Statistic,
+ Pagination,
+ Segment,
+ Header,
+ Menu,
+ Table,
+ Icon,
+} from "semantic-ui-react";
+import { useObservable } from "rxjs-hooks";
+import { of, from, concat, combineLatest } from "rxjs";
+import { map, switchMap, distinctUntilChanged } from "rxjs/operators";
+import { Duration, DateTime } from "luxon";
+
+import api from "api";
+
+function formatDuration(seconds) {
+ return (
+ Duration.fromMillis((seconds ?? 0) * 1000)
+ .as("hours")
+ .toFixed(1) + " h"
+ );
+}
+
+export default function Stats() {
+ const [page, setPage] = useState(1);
+ const PER_PAGE = 10;
+ const stats = useObservable(
+ () =>
+ of(null).pipe(
+ switchMap(() => concat(of(null), from(api.get("/stats/regions"))))
+ ),
+ null
+ );
+
+ const pageCount = stats ? Math.ceil(stats.length / PER_PAGE) : 1;
+
+ return (
+ <>
+