diff --git a/packages/pl-fe/src/features/ui/util/async-components.ts b/packages/pl-fe/src/features/ui/util/async-components.ts
index 6582aeac6..91f0d9c52 100644
--- a/packages/pl-fe/src/features/ui/util/async-components.ts
+++ b/packages/pl-fe/src/features/ui/util/async-components.ts
@@ -19,11 +19,11 @@ export const CommunityTimeline = lazy(() => import('pl-fe/pages/timelines/commun
export const ComposeEditor = lazy(() => import('pl-fe/features/compose/editor'));
export const ComposeEvent = lazy(() => import('pl-fe/features/compose-event'));
export const Conversations = lazy(() => import('pl-fe/pages/status-lists/conversations'));
-export const CreateApp = lazy(() => import('pl-fe/features/developers/apps/create'));
+export const CreateApp = lazy(() => import('pl-fe/pages/developers/create-app'));
export const CryptoDonate = lazy(() => import('pl-fe/features/crypto-donate'));
-export const Dashboard = lazy(() => import('pl-fe/features/admin'));
+export const Dashboard = lazy(() => import('pl-fe/pages/dashboard/dashboard'));
export const DeleteAccount = lazy(() => import('pl-fe/features/delete-account'));
-export const Developers = lazy(() => import('pl-fe/features/developers'));
+export const Developers = lazy(() => import('pl-fe/pages/developers/developers'));
export const Directory = lazy(() => import('pl-fe/features/directory'));
export const DomainBlocks = lazy(() => import('pl-fe/features/domain-blocks'));
export const Domains = lazy(() => import('pl-fe/features/admin/domains'));
@@ -63,8 +63,8 @@ export const LandingTimeline = lazy(() => import('pl-fe/pages/timelines/landing-
export const LinkTimeline = lazy(() => import('pl-fe/pages/timelines/link-timeline'));
export const Lists = lazy(() => import('pl-fe/features/lists'));
export const ListTimeline = lazy(() => import('pl-fe/pages/timelines/list-timeline'));
-export const LoginPage = lazy(() => import('pl-fe/features/auth-login/components/login-page'));
-export const LogoutPage = lazy(() => import('pl-fe/features/auth-login/components/logout'));
+export const LoginPage = lazy(() => import('pl-fe/pages/auth/login'));
+export const LogoutPage = lazy(() => import('pl-fe/pages/auth/logout'));
export const ManageGroup = lazy(() => import('pl-fe/features/group/manage-group'));
export const MediaGallery = lazy(() => import('pl-fe/components/media-gallery'));
export const Migration = lazy(() => import('pl-fe/pages/settings/migration'));
@@ -78,17 +78,17 @@ export const PinnedStatuses = lazy(() => import('pl-fe/pages/status-lists/pinned
export const PlFeConfig = lazy(() => import('pl-fe/features/pl-fe-config'));
export const PublicTimeline = lazy(() => import('pl-fe/pages/timelines/public-timeline'));
export const Quotes = lazy(() => import('pl-fe/pages/status-lists/quotes'));
-export const RegisterInvite = lazy(() => import('pl-fe/features/register-invite'));
-export const RegistrationPage = lazy(() => import('pl-fe/features/auth-login/components/registration-page'));
+export const RegisterInvite = lazy(() => import('pl-fe/pages/auth/register-with-invite'));
+export const RegistrationPage = lazy(() => import('pl-fe/pages/auth/registration'));
export const Relays = lazy(() => import('pl-fe/features/admin/relays'));
export const RemoteTimeline = lazy(() => import('pl-fe/pages/timelines/remote-timeline'));
export const Rules = lazy(() => import('pl-fe/features/admin/rules'));
export const ScheduledStatuses = lazy(() => import('pl-fe/features/scheduled-statuses'));
export const Search = lazy(() => import('pl-fe/features/search'));
export const ServerInfo = lazy(() => import('pl-fe/features/server-info'));
-export const ServiceWorkerInfo = lazy(() => import('pl-fe/features/developers/service-worker-info'));
+export const ServiceWorkerInfo = lazy(() => import('pl-fe/pages/developers/service-worker-info'));
export const Settings = lazy(() => import('pl-fe/pages/settings/settings'));
-export const SettingsStore = lazy(() => import('pl-fe/features/developers/settings-store'));
+export const SettingsStore = lazy(() => import('pl-fe/pages/developers/settings-store'));
export const Share = lazy(() => import('pl-fe/pages/utils/share'));
export const Status = lazy(() => import('pl-fe/features/status'));
export const TestTimeline = lazy(() => import('pl-fe/pages/timelines/test-timeline'));
diff --git a/packages/pl-fe/src/features/auth-login/components/login-page.test.tsx b/packages/pl-fe/src/pages/auth/login.test.tsx
similarity index 97%
rename from packages/pl-fe/src/features/auth-login/components/login-page.test.tsx
rename to packages/pl-fe/src/pages/auth/login.test.tsx
index 103172437..882edb12f 100644
--- a/packages/pl-fe/src/features/auth-login/components/login-page.test.tsx
+++ b/packages/pl-fe/src/pages/auth/login.test.tsx
@@ -4,7 +4,7 @@ import * as v from 'valibot';
import { render, screen } from 'pl-fe/jest/test-helpers';
-import LoginPage from './login-page';
+import LoginPage from './login';
describe('', () => {
it('renders correctly on load', () => {
diff --git a/packages/pl-fe/src/features/auth-login/components/login-page.tsx b/packages/pl-fe/src/pages/auth/login.tsx
similarity index 93%
rename from packages/pl-fe/src/features/auth-login/components/login-page.tsx
rename to packages/pl-fe/src/pages/auth/login.tsx
index f13f4cde3..175c36257 100644
--- a/packages/pl-fe/src/features/auth-login/components/login-page.tsx
+++ b/packages/pl-fe/src/pages/auth/login.tsx
@@ -8,16 +8,15 @@ import { BigCard } from 'pl-fe/components/big-card';
import Button from 'pl-fe/components/ui/button';
import Stack from 'pl-fe/components/ui/stack';
import Text from 'pl-fe/components/ui/text';
+import ConsumersList from 'pl-fe/features/auth-login/components/consumers-list';
+import LoginForm from 'pl-fe/features/auth-login/components/login-form';
+import OtpAuthForm from 'pl-fe/features/auth-login/components/otp-auth-form';
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
import { useAppSelector } from 'pl-fe/hooks/use-app-selector';
import { useModalsStore } from 'pl-fe/stores/modals';
import { getRedirectUrl } from 'pl-fe/utils/redirect';
import { isStandalone } from 'pl-fe/utils/state';
-import ConsumersList from './consumers-list';
-import LoginForm from './login-form';
-import OtpAuthForm from './otp-auth-form';
-
import type { PlfeResponse } from 'pl-fe/api';
const LoginPage = () => {
diff --git a/packages/pl-fe/src/features/auth-login/components/logout.tsx b/packages/pl-fe/src/pages/auth/logout.tsx
similarity index 89%
rename from packages/pl-fe/src/features/auth-login/components/logout.tsx
rename to packages/pl-fe/src/pages/auth/logout.tsx
index 7f2edb59d..d79e763c2 100644
--- a/packages/pl-fe/src/features/auth-login/components/logout.tsx
+++ b/packages/pl-fe/src/pages/auth/logout.tsx
@@ -6,7 +6,7 @@ import { logOut } from 'pl-fe/actions/auth';
import Spinner from 'pl-fe/components/ui/spinner';
/** Component that logs the user out when rendered */
-const Logout: React.FC = () => {
+const LogoutPage: React.FC = () => {
const dispatch = useDispatch();
const [done, setDone] = useState(false);
@@ -23,4 +23,4 @@ const Logout: React.FC = () => {
}
};
-export { Logout as default };
+export { LogoutPage as default };
diff --git a/packages/pl-fe/src/features/register-invite/index.tsx b/packages/pl-fe/src/pages/auth/register-with-invite.tsx
similarity index 91%
rename from packages/pl-fe/src/features/register-invite/index.tsx
rename to packages/pl-fe/src/pages/auth/register-with-invite.tsx
index 4591d3222..5891810b2 100644
--- a/packages/pl-fe/src/features/register-invite/index.tsx
+++ b/packages/pl-fe/src/pages/auth/register-with-invite.tsx
@@ -11,7 +11,7 @@ interface RegisterInviteParams {
}
/** Page to register with an invitation. */
-const RegisterInvite: React.FC = () => {
+const RegisterWithInvitePage: React.FC = () => {
const instance = useInstance();
const { token } = useParams();
@@ -37,4 +37,4 @@ const RegisterInvite: React.FC = () => {
);
};
-export { RegisterInvite as default };
+export { RegisterWithInvitePage as default };
diff --git a/packages/pl-fe/src/features/auth-login/components/registration-page.tsx b/packages/pl-fe/src/pages/auth/registration.tsx
similarity index 92%
rename from packages/pl-fe/src/features/auth-login/components/registration-page.tsx
rename to packages/pl-fe/src/pages/auth/registration.tsx
index cce5bf427..21c7d0840 100644
--- a/packages/pl-fe/src/features/auth-login/components/registration-page.tsx
+++ b/packages/pl-fe/src/pages/auth/registration.tsx
@@ -3,11 +3,10 @@ import { FormattedMessage } from 'react-intl';
import { BigCard } from 'pl-fe/components/big-card';
import Text from 'pl-fe/components/ui/text';
+import RegistrationForm from 'pl-fe/features/auth-login/components/registration-form';
import { useInstance } from 'pl-fe/hooks/use-instance';
import { useRegistrationStatus } from 'pl-fe/hooks/use-registration-status';
-import RegistrationForm from './registration-form';
-
const RegistrationPage: React.FC = () => {
const instance = useInstance();
const { isOpen } = useRegistrationStatus();
diff --git a/packages/pl-fe/src/features/admin/index.tsx b/packages/pl-fe/src/pages/dashboard/dashboard.tsx
similarity index 71%
rename from packages/pl-fe/src/features/admin/index.tsx
rename to packages/pl-fe/src/pages/dashboard/dashboard.tsx
index baaae72cc..235e66dc1 100644
--- a/packages/pl-fe/src/features/admin/index.tsx
+++ b/packages/pl-fe/src/pages/dashboard/dashboard.tsx
@@ -5,16 +5,16 @@ import { Switch, Route } from 'react-router-dom';
import Column from 'pl-fe/components/ui/column';
import { useOwnAccount } from 'pl-fe/hooks/use-own-account';
-import AdminTabs from './components/admin-tabs';
-import Waitlist from './tabs/awaiting-approval';
-import Dashboard from './tabs/dashboard';
-import Reports from './tabs/reports';
+import AdminTabs from '../../features/admin/components/admin-tabs';
+import Waitlist from '../../features/admin/tabs/awaiting-approval';
+import Dashboard from '../../features/admin/tabs/dashboard';
+import Reports from '../../features/admin/tabs/reports';
const messages = defineMessages({
heading: { id: 'column.admin.dashboard', defaultMessage: 'Dashboard' },
});
-const AdminPage: React.FC = () => {
+const DashboardPage: React.FC = () => {
const intl = useIntl();
const { account } = useOwnAccount();
@@ -33,4 +33,4 @@ const AdminPage: React.FC = () => {
);
};
-export { AdminPage as default };
+export { DashboardPage as default };
diff --git a/packages/pl-fe/src/features/developers/apps/create.tsx b/packages/pl-fe/src/pages/developers/create-app.tsx
similarity index 98%
rename from packages/pl-fe/src/features/developers/apps/create.tsx
rename to packages/pl-fe/src/pages/developers/create-app.tsx
index 9d98b515c..ce72649e0 100644
--- a/packages/pl-fe/src/features/developers/apps/create.tsx
+++ b/packages/pl-fe/src/pages/developers/create-app.tsx
@@ -32,7 +32,7 @@ const BLANK_PARAMS = {
type Params = typeof BLANK_PARAMS;
-const CreateApp: React.FC = () => {
+const CreateAppPage: React.FC = () => {
const intl = useIntl();
const { account } = useOwnAccount();
@@ -202,4 +202,4 @@ const CreateApp: React.FC = () => {
);
};
-export { CreateApp as default };
+export { CreateAppPage as default };
diff --git a/packages/pl-fe/src/features/developers/index.tsx b/packages/pl-fe/src/pages/developers/developers.tsx
similarity index 98%
rename from packages/pl-fe/src/features/developers/index.tsx
rename to packages/pl-fe/src/pages/developers/developers.tsx
index e3c460d2a..71de19726 100644
--- a/packages/pl-fe/src/features/developers/index.tsx
+++ b/packages/pl-fe/src/pages/developers/developers.tsx
@@ -28,7 +28,7 @@ const DashWidget: React.FC = ({ to, onClick, children }) => {
}
};
-const Developers: React.FC = () => {
+const DevelopersPage: React.FC = () => {
const intl = useIntl();
const showToast = (event: React.MouseEvent) => {
@@ -111,4 +111,4 @@ const Developers: React.FC = () => {
);
};
-export { Developers as default };
+export { DevelopersPage as default };
diff --git a/packages/pl-fe/src/features/developers/service-worker-info.tsx b/packages/pl-fe/src/pages/developers/service-worker-info.tsx
similarity index 98%
rename from packages/pl-fe/src/features/developers/service-worker-info.tsx
rename to packages/pl-fe/src/pages/developers/service-worker-info.tsx
index 542fc7013..dbffa2c6d 100644
--- a/packages/pl-fe/src/features/developers/service-worker-info.tsx
+++ b/packages/pl-fe/src/pages/developers/service-worker-info.tsx
@@ -9,10 +9,9 @@ import HStack from 'pl-fe/components/ui/hstack';
import Icon from 'pl-fe/components/ui/icon';
import Stack from 'pl-fe/components/ui/stack';
import Text from 'pl-fe/components/ui/text';
+import Indicator from 'pl-fe/features/developers/components/indicator';
import { unregisterSW } from 'pl-fe/utils/sw';
-import Indicator from './components/indicator';
-
const messages = defineMessages({
heading: { id: 'column.developers.service_worker', defaultMessage: 'Service Worker' },
status: { id: 'sw.status', defaultMessage: 'Status' },
diff --git a/packages/pl-fe/src/features/developers/settings-store.tsx b/packages/pl-fe/src/pages/developers/settings-store.tsx
similarity index 100%
rename from packages/pl-fe/src/features/developers/settings-store.tsx
rename to packages/pl-fe/src/pages/developers/settings-store.tsx