diff --git a/src/App.tsx b/src/App.tsx
index 30d87dd..698c66f 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -4,20 +4,20 @@ import polyglotI18nProvider from "ra-i18n-polyglot";
import { Admin, CustomRoutes, Resource, resolveBrowserLocale } from "react-admin";
import { Route } from "react-router-dom";
-import reports from "./components/EventReports";
import { ImportFeature } from "./components/ImportFeature";
-import LoginPage from "./components/LoginPage";
-import registrationToken from "./components/RegistrationTokens";
-import roomDirectory from "./components/RoomDirectory";
-import destinations from "./components/destinations";
-import rooms from "./components/rooms";
-import userMediaStats from "./components/statistics";
-import users from "./components/users";
import germanMessages from "./i18n/de";
import englishMessages from "./i18n/en";
import frenchMessages from "./i18n/fr";
import italianMessages from "./i18n/it";
import chineseMessages from "./i18n/zh";
+import LoginPage from "./pages/LoginPage";
+import destinations from "./resources/destinations";
+import registrationToken from "./resources/registration_tokens";
+import reports from "./resources/reports";
+import roomDirectory from "./resources/room_directory";
+import rooms from "./resources/rooms";
+import userMediaStats from "./resources/user_media_statistics";
+import users from "./resources/users";
import authProvider from "./synapse/authProvider";
import dataProvider from "./synapse/dataProvider";
diff --git a/src/components/LoginPage.test.tsx b/src/pages/LoginPage.test.tsx
similarity index 100%
rename from src/components/LoginPage.test.tsx
rename to src/pages/LoginPage.test.tsx
diff --git a/src/components/LoginPage.tsx b/src/pages/LoginPage.tsx
similarity index 100%
rename from src/components/LoginPage.tsx
rename to src/pages/LoginPage.tsx
diff --git a/src/components/destinations.tsx b/src/resources/destinations.tsx
similarity index 98%
rename from src/components/destinations.tsx
rename to src/resources/destinations.tsx
index 540c616..8a249a1 100644
--- a/src/components/destinations.tsx
+++ b/src/resources/destinations.tsx
@@ -29,7 +29,7 @@ import {
useTranslate,
} from "react-admin";
-import { DATE_FORMAT } from "./date";
+import { DATE_FORMAT } from "../components/date";
const DestinationPagination = () => ;
diff --git a/src/components/RegistrationTokens.tsx b/src/resources/registration_tokens.tsx
similarity index 97%
rename from src/components/RegistrationTokens.tsx
rename to src/resources/registration_tokens.tsx
index 5b8e48c..0a1502f 100644
--- a/src/components/RegistrationTokens.tsx
+++ b/src/resources/registration_tokens.tsx
@@ -23,7 +23,7 @@ import {
Toolbar,
} from "react-admin";
-import { DATE_FORMAT, dateFormatter, dateParser } from "./date";
+import { DATE_FORMAT, dateFormatter, dateParser } from "../components/date";
const validateToken = [regex(/^[A-Za-z0-9._~-]{0,64}$/)];
const validateUsesAllowed = [number()];
diff --git a/src/components/EventReports.tsx b/src/resources/reports.tsx
similarity index 97%
rename from src/components/EventReports.tsx
rename to src/resources/reports.tsx
index 1cab058..2f7ec2f 100644
--- a/src/components/EventReports.tsx
+++ b/src/resources/reports.tsx
@@ -21,8 +21,8 @@ import {
useTranslate,
} from "react-admin";
-import { DATE_FORMAT } from "./date";
-import { MXCField } from "./media";
+import { DATE_FORMAT } from "../components/date";
+import { MXCField } from "../components/media";
const ReportPagination = () => ;
diff --git a/src/components/RoomDirectory.tsx b/src/resources/room_directory.tsx
similarity index 98%
rename from src/components/RoomDirectory.tsx
rename to src/resources/room_directory.tsx
index 2e1f905..a9017fd 100644
--- a/src/components/RoomDirectory.tsx
+++ b/src/resources/room_directory.tsx
@@ -27,7 +27,7 @@ import {
} from "react-admin";
import { useMutation } from "react-query";
-import AvatarField from "./AvatarField";
+import AvatarField from "../components/AvatarField";
const RoomDirectoryPagination = () => ;
diff --git a/src/components/rooms.tsx b/src/resources/rooms.tsx
similarity index 99%
rename from src/components/rooms.tsx
rename to src/resources/rooms.tsx
index 2a1b600..6da77db 100644
--- a/src/components/rooms.tsx
+++ b/src/resources/rooms.tsx
@@ -43,8 +43,8 @@ import {
RoomDirectoryBulkPublishButton,
RoomDirectoryUnpublishButton,
RoomDirectoryPublishButton,
-} from "./RoomDirectory";
-import { DATE_FORMAT } from "./date";
+} from "./room_directory";
+import { DATE_FORMAT } from "../components/date";
const RoomPagination = () => ;
diff --git a/src/components/statistics.tsx b/src/resources/user_media_statistics.tsx
similarity index 96%
rename from src/components/statistics.tsx
rename to src/resources/user_media_statistics.tsx
index 7c795cb..8b84370 100644
--- a/src/components/statistics.tsx
+++ b/src/resources/user_media_statistics.tsx
@@ -13,7 +13,7 @@ import {
useListContext,
} from "react-admin";
-import { DeleteMediaButton } from "./media";
+import { DeleteMediaButton } from "../components/media";
const ListActions = () => {
const { isLoading, total } = useListContext();
diff --git a/src/components/users.tsx b/src/resources/users.tsx
similarity index 97%
rename from src/components/users.tsx
rename to src/resources/users.tsx
index 1fdd550..7544ee2 100644
--- a/src/components/users.tsx
+++ b/src/resources/users.tsx
@@ -50,11 +50,11 @@ import {
} from "react-admin";
import { Link } from "react-router-dom";
-import AvatarField from "./AvatarField";
-import { ServerNoticeButton, ServerNoticeBulkButton } from "./ServerNotices";
-import { DATE_FORMAT } from "./date";
-import { DeviceRemoveButton } from "./devices";
-import { MediaIDField, ProtectMediaButton, QuarantineMediaButton } from "./media";
+import AvatarField from "../components/AvatarField";
+import { ServerNoticeButton, ServerNoticeBulkButton } from "../components/ServerNotices";
+import { DATE_FORMAT } from "../components/date";
+import { DeviceRemoveButton } from "../components/devices";
+import { MediaIDField, ProtectMediaButton, QuarantineMediaButton } from "../components/media";
const choices_medium = [
{ id: "email", name: "resources.users.email" },