diff --git a/apps/web/app/(all)/profile/page.tsx b/apps/web/app/(all)/profile/page.tsx
index 01ff11145..b89759fd4 100644
--- a/apps/web/app/(all)/profile/page.tsx
+++ b/apps/web/app/(all)/profile/page.tsx
@@ -11,7 +11,7 @@ import { ProfileSettingContentWrapper } from "@/components/profile/profile-setti
// hooks
import { useUser } from "@/hooks/store/user";
-const ProfileSettingsPage = observer(() => {
+function ProfileSettingsPage() {
const { t } = useTranslation();
// store hooks
const { data: currentUser, userProfile } = useUser();
@@ -31,6 +31,6 @@ const ProfileSettingsPage = observer(() => {
>
);
-});
+}
-export default ProfileSettingsPage;
+export default observer(ProfileSettingsPage);
diff --git a/apps/web/app/(all)/profile/security/page.tsx b/apps/web/app/(all)/profile/security/page.tsx
index 4f0ad13c7..a0ee1f472 100644
--- a/apps/web/app/(all)/profile/security/page.tsx
+++ b/apps/web/app/(all)/profile/security/page.tsx
@@ -43,7 +43,7 @@ const defaultShowPassword = {
confirmPassword: false,
};
-const SecurityPage = observer(() => {
+const SecurityPage = () => {
// store
const { data: currentUser, changePassword } = useUser();
// states
@@ -254,6 +254,6 @@ const SecurityPage = observer(() => {
>
);
-});
+};
-export default SecurityPage;
+export default observer(SecurityPage);
diff --git a/apps/web/app/(all)/sign-up/layout.tsx b/apps/web/app/(all)/sign-up/layout.tsx
index 815fe08fc..daf5a0307 100644
--- a/apps/web/app/(all)/sign-up/layout.tsx
+++ b/apps/web/app/(all)/sign-up/layout.tsx
@@ -1,13 +1,11 @@
-import type { Metadata } from "next";
+import { Outlet } from "react-router";
+import type { Route } from "./+types/layout";
-export const metadata: Metadata = {
- title: "Sign up - Plane",
- robots: {
- index: true,
- follow: false,
- },
-};
+export const meta: Route.MetaFunction = () => [
+ { title: "Sign up - Plane" },
+ { name: "robots", content: "index, nofollow" },
+];
-export default function SignUpLayout({ children }: { children: React.ReactNode }) {
- return children;
+export default function SignUpLayout() {
+ return ;
}
diff --git a/apps/web/app/(all)/workspace-invitations/layout.tsx b/apps/web/app/(all)/workspace-invitations/layout.tsx
index 535b2f62f..cab6733a6 100644
--- a/apps/web/app/(all)/workspace-invitations/layout.tsx
+++ b/apps/web/app/(all)/workspace-invitations/layout.tsx
@@ -1,9 +1,8 @@
-import type { Metadata } from "next";
+import { Outlet } from "react-router";
+import type { Route } from "./+types/layout";
-export const metadata: Metadata = {
- title: "Workspace Invitations",
-};
-
-export default function WorkspaceInvitationsLayout({ children }: { children: React.ReactNode }) {
- return children;
+export default function WorkspaceInvitationsLayout() {
+ return ;
}
+
+export const meta: Route.MetaFunction = () => [{ title: "Workspace Invitations" }];
diff --git a/apps/web/app/(all)/workspace-invitations/page.tsx b/apps/web/app/(all)/workspace-invitations/page.tsx
index 7883b08c6..67d9b6c5a 100644
--- a/apps/web/app/(all)/workspace-invitations/page.tsx
+++ b/apps/web/app/(all)/workspace-invitations/page.tsx
@@ -24,7 +24,7 @@ import { WorkspaceService } from "@/plane-web/services";
// service initialization
const workspaceService = new WorkspaceService();
-const WorkspaceInvitationPage = observer(() => {
+function WorkspaceInvitationPage() {
// router
const router = useAppRouter();
// query params
@@ -124,6 +124,6 @@ const WorkspaceInvitationPage = observer(() => {
);
-});
+}
-export default WorkspaceInvitationPage;
+export default observer(WorkspaceInvitationPage);
diff --git a/apps/web/app/(home)/layout.tsx b/apps/web/app/(home)/layout.tsx
index d50131fc0..a972f662a 100644
--- a/apps/web/app/(home)/layout.tsx
+++ b/apps/web/app/(home)/layout.tsx
@@ -1,19 +1,12 @@
-import type { Metadata, Viewport } from "next";
+import { Outlet } from "react-router";
+// types
+import type { Route } from "./+types/layout";
-export const metadata: Metadata = {
- robots: {
- index: true,
- follow: false,
- },
-};
+export const meta: Route.MetaFunction = () => [
+ { name: "robots", content: "index, nofollow" },
+ { name: "viewport", content: "width=device-width, initial-scale=1, minimum-scale=1, viewport-fit=cover" },
+];
-export const viewport: Viewport = {
- minimumScale: 1,
- initialScale: 1,
- width: "device-width",
- viewportFit: "cover",
-};
-
-export default function HomeLayout({ children }: { children: React.ReactNode }) {
- return <>{children}>;
+export default function HomeLayout() {
+ return ;
}
diff --git a/apps/web/public/404.svg b/apps/web/app/assets/404.svg
similarity index 100%
rename from apps/web/public/404.svg
rename to apps/web/app/assets/404.svg
diff --git a/apps/web/public/attachment/audio-icon.png b/apps/web/app/assets/attachment/audio-icon.png
similarity index 100%
rename from apps/web/public/attachment/audio-icon.png
rename to apps/web/app/assets/attachment/audio-icon.png
diff --git a/apps/web/public/attachment/css-icon.png b/apps/web/app/assets/attachment/css-icon.png
similarity index 100%
rename from apps/web/public/attachment/css-icon.png
rename to apps/web/app/assets/attachment/css-icon.png
diff --git a/apps/web/public/attachment/csv-icon.png b/apps/web/app/assets/attachment/csv-icon.png
similarity index 100%
rename from apps/web/public/attachment/csv-icon.png
rename to apps/web/app/assets/attachment/csv-icon.png
diff --git a/apps/web/public/attachment/default-icon.png b/apps/web/app/assets/attachment/default-icon.png
similarity index 100%
rename from apps/web/public/attachment/default-icon.png
rename to apps/web/app/assets/attachment/default-icon.png
diff --git a/apps/web/public/attachment/doc-icon.png b/apps/web/app/assets/attachment/doc-icon.png
similarity index 100%
rename from apps/web/public/attachment/doc-icon.png
rename to apps/web/app/assets/attachment/doc-icon.png
diff --git a/apps/web/public/attachment/excel-icon.png b/apps/web/app/assets/attachment/excel-icon.png
similarity index 100%
rename from apps/web/public/attachment/excel-icon.png
rename to apps/web/app/assets/attachment/excel-icon.png
diff --git a/apps/web/public/attachment/figma-icon.png b/apps/web/app/assets/attachment/figma-icon.png
similarity index 100%
rename from apps/web/public/attachment/figma-icon.png
rename to apps/web/app/assets/attachment/figma-icon.png
diff --git a/apps/web/public/attachment/html-icon.png b/apps/web/app/assets/attachment/html-icon.png
similarity index 100%
rename from apps/web/public/attachment/html-icon.png
rename to apps/web/app/assets/attachment/html-icon.png
diff --git a/apps/web/public/attachment/img-icon.png b/apps/web/app/assets/attachment/img-icon.png
similarity index 100%
rename from apps/web/public/attachment/img-icon.png
rename to apps/web/app/assets/attachment/img-icon.png
diff --git a/apps/web/public/attachment/jpg-icon.png b/apps/web/app/assets/attachment/jpg-icon.png
similarity index 100%
rename from apps/web/public/attachment/jpg-icon.png
rename to apps/web/app/assets/attachment/jpg-icon.png
diff --git a/apps/web/public/attachment/js-icon.png b/apps/web/app/assets/attachment/js-icon.png
similarity index 100%
rename from apps/web/public/attachment/js-icon.png
rename to apps/web/app/assets/attachment/js-icon.png
diff --git a/apps/web/public/attachment/pdf-icon.png b/apps/web/app/assets/attachment/pdf-icon.png
similarity index 100%
rename from apps/web/public/attachment/pdf-icon.png
rename to apps/web/app/assets/attachment/pdf-icon.png
diff --git a/apps/web/public/attachment/png-icon.png b/apps/web/app/assets/attachment/png-icon.png
similarity index 100%
rename from apps/web/public/attachment/png-icon.png
rename to apps/web/app/assets/attachment/png-icon.png
diff --git a/apps/web/public/attachment/rar-icon.png b/apps/web/app/assets/attachment/rar-icon.png
similarity index 100%
rename from apps/web/public/attachment/rar-icon.png
rename to apps/web/app/assets/attachment/rar-icon.png
diff --git a/apps/web/public/attachment/svg-icon.png b/apps/web/app/assets/attachment/svg-icon.png
similarity index 100%
rename from apps/web/public/attachment/svg-icon.png
rename to apps/web/app/assets/attachment/svg-icon.png
diff --git a/apps/web/public/attachment/txt-icon.png b/apps/web/app/assets/attachment/txt-icon.png
similarity index 100%
rename from apps/web/public/attachment/txt-icon.png
rename to apps/web/app/assets/attachment/txt-icon.png
diff --git a/apps/web/public/attachment/video-icon.png b/apps/web/app/assets/attachment/video-icon.png
similarity index 100%
rename from apps/web/public/attachment/video-icon.png
rename to apps/web/app/assets/attachment/video-icon.png
diff --git a/apps/web/public/attachment/zip-icon.png b/apps/web/app/assets/attachment/zip-icon.png
similarity index 100%
rename from apps/web/public/attachment/zip-icon.png
rename to apps/web/app/assets/attachment/zip-icon.png
diff --git a/apps/web/public/auth/access-denied.svg b/apps/web/app/assets/auth/access-denied.svg
similarity index 100%
rename from apps/web/public/auth/access-denied.svg
rename to apps/web/app/assets/auth/access-denied.svg
diff --git a/apps/web/public/auth/background-pattern-dark.svg b/apps/web/app/assets/auth/background-pattern-dark.svg
similarity index 100%
rename from apps/web/public/auth/background-pattern-dark.svg
rename to apps/web/app/assets/auth/background-pattern-dark.svg
diff --git a/apps/web/public/auth/background-pattern.svg b/apps/web/app/assets/auth/background-pattern.svg
similarity index 100%
rename from apps/web/public/auth/background-pattern.svg
rename to apps/web/app/assets/auth/background-pattern.svg
diff --git a/apps/web/public/auth/project-not-authorized.svg b/apps/web/app/assets/auth/project-not-authorized.svg
similarity index 100%
rename from apps/web/public/auth/project-not-authorized.svg
rename to apps/web/app/assets/auth/project-not-authorized.svg
diff --git a/apps/web/public/auth/unauthorized.svg b/apps/web/app/assets/auth/unauthorized.svg
similarity index 100%
rename from apps/web/public/auth/unauthorized.svg
rename to apps/web/app/assets/auth/unauthorized.svg
diff --git a/apps/web/public/auth/workspace-not-authorized.svg b/apps/web/app/assets/auth/workspace-not-authorized.svg
similarity index 100%
rename from apps/web/public/auth/workspace-not-authorized.svg
rename to apps/web/app/assets/auth/workspace-not-authorized.svg
diff --git a/apps/web/public/emoji/project-emoji.svg b/apps/web/app/assets/emoji/project-emoji.svg
similarity index 100%
rename from apps/web/public/emoji/project-emoji.svg
rename to apps/web/app/assets/emoji/project-emoji.svg
diff --git a/apps/web/public/empty-state/active-cycle/assignee-dark.webp b/apps/web/app/assets/empty-state/active-cycle/assignee-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/assignee-dark.webp
rename to apps/web/app/assets/empty-state/active-cycle/assignee-dark.webp
diff --git a/apps/web/public/empty-state/active-cycle/assignee-light.webp b/apps/web/app/assets/empty-state/active-cycle/assignee-light.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/assignee-light.webp
rename to apps/web/app/assets/empty-state/active-cycle/assignee-light.webp
diff --git a/apps/web/public/empty-state/active-cycle/chart-dark.webp b/apps/web/app/assets/empty-state/active-cycle/chart-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/chart-dark.webp
rename to apps/web/app/assets/empty-state/active-cycle/chart-dark.webp
diff --git a/apps/web/public/empty-state/active-cycle/chart-light.webp b/apps/web/app/assets/empty-state/active-cycle/chart-light.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/chart-light.webp
rename to apps/web/app/assets/empty-state/active-cycle/chart-light.webp
diff --git a/apps/web/public/empty-state/active-cycle/cycle-dark.webp b/apps/web/app/assets/empty-state/active-cycle/cycle-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/cycle-dark.webp
rename to apps/web/app/assets/empty-state/active-cycle/cycle-dark.webp
diff --git a/apps/web/public/empty-state/active-cycle/cycle-light.webp b/apps/web/app/assets/empty-state/active-cycle/cycle-light.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/cycle-light.webp
rename to apps/web/app/assets/empty-state/active-cycle/cycle-light.webp
diff --git a/apps/web/public/empty-state/active-cycle/label-dark.webp b/apps/web/app/assets/empty-state/active-cycle/label-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/label-dark.webp
rename to apps/web/app/assets/empty-state/active-cycle/label-dark.webp
diff --git a/apps/web/public/empty-state/active-cycle/label-light.webp b/apps/web/app/assets/empty-state/active-cycle/label-light.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/label-light.webp
rename to apps/web/app/assets/empty-state/active-cycle/label-light.webp
diff --git a/apps/web/public/empty-state/active-cycle/priority-dark.webp b/apps/web/app/assets/empty-state/active-cycle/priority-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/priority-dark.webp
rename to apps/web/app/assets/empty-state/active-cycle/priority-dark.webp
diff --git a/apps/web/public/empty-state/active-cycle/priority-light.webp b/apps/web/app/assets/empty-state/active-cycle/priority-light.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/priority-light.webp
rename to apps/web/app/assets/empty-state/active-cycle/priority-light.webp
diff --git a/apps/web/public/empty-state/active-cycle/progress-dark.webp b/apps/web/app/assets/empty-state/active-cycle/progress-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/progress-dark.webp
rename to apps/web/app/assets/empty-state/active-cycle/progress-dark.webp
diff --git a/apps/web/public/empty-state/active-cycle/progress-light.webp b/apps/web/app/assets/empty-state/active-cycle/progress-light.webp
similarity index 100%
rename from apps/web/public/empty-state/active-cycle/progress-light.webp
rename to apps/web/app/assets/empty-state/active-cycle/progress-light.webp
diff --git a/apps/web/public/empty-state/all-issues/all-issues-dark.webp b/apps/web/app/assets/empty-state/all-issues/all-issues-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/all-issues-dark.webp
rename to apps/web/app/assets/empty-state/all-issues/all-issues-dark.webp
diff --git a/apps/web/public/empty-state/all-issues/all-issues-light.webp b/apps/web/app/assets/empty-state/all-issues/all-issues-light.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/all-issues-light.webp
rename to apps/web/app/assets/empty-state/all-issues/all-issues-light.webp
diff --git a/apps/web/public/empty-state/all-issues/assigned-dark.webp b/apps/web/app/assets/empty-state/all-issues/assigned-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/assigned-dark.webp
rename to apps/web/app/assets/empty-state/all-issues/assigned-dark.webp
diff --git a/apps/web/public/empty-state/all-issues/assigned-light.webp b/apps/web/app/assets/empty-state/all-issues/assigned-light.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/assigned-light.webp
rename to apps/web/app/assets/empty-state/all-issues/assigned-light.webp
diff --git a/apps/web/public/empty-state/all-issues/created-dark.webp b/apps/web/app/assets/empty-state/all-issues/created-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/created-dark.webp
rename to apps/web/app/assets/empty-state/all-issues/created-dark.webp
diff --git a/apps/web/public/empty-state/all-issues/created-light.webp b/apps/web/app/assets/empty-state/all-issues/created-light.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/created-light.webp
rename to apps/web/app/assets/empty-state/all-issues/created-light.webp
diff --git a/apps/web/public/empty-state/all-issues/custom-view-dark.webp b/apps/web/app/assets/empty-state/all-issues/custom-view-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/custom-view-dark.webp
rename to apps/web/app/assets/empty-state/all-issues/custom-view-dark.webp
diff --git a/apps/web/public/empty-state/all-issues/custom-view-light.webp b/apps/web/app/assets/empty-state/all-issues/custom-view-light.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/custom-view-light.webp
rename to apps/web/app/assets/empty-state/all-issues/custom-view-light.webp
diff --git a/apps/web/public/empty-state/all-issues/no-project-dark.webp b/apps/web/app/assets/empty-state/all-issues/no-project-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/no-project-dark.webp
rename to apps/web/app/assets/empty-state/all-issues/no-project-dark.webp
diff --git a/apps/web/public/empty-state/all-issues/no-project-light.webp b/apps/web/app/assets/empty-state/all-issues/no-project-light.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/no-project-light.webp
rename to apps/web/app/assets/empty-state/all-issues/no-project-light.webp
diff --git a/apps/web/public/empty-state/all-issues/subscribed-dark.webp b/apps/web/app/assets/empty-state/all-issues/subscribed-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/subscribed-dark.webp
rename to apps/web/app/assets/empty-state/all-issues/subscribed-dark.webp
diff --git a/apps/web/public/empty-state/all-issues/subscribed-light.webp b/apps/web/app/assets/empty-state/all-issues/subscribed-light.webp
similarity index 100%
rename from apps/web/public/empty-state/all-issues/subscribed-light.webp
rename to apps/web/app/assets/empty-state/all-issues/subscribed-light.webp
diff --git a/apps/web/public/empty-state/analytics/empty-chart-area-dark.webp b/apps/web/app/assets/empty-state/analytics/empty-chart-area-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-chart-area-dark.webp
rename to apps/web/app/assets/empty-state/analytics/empty-chart-area-dark.webp
diff --git a/apps/web/public/empty-state/analytics/empty-chart-area-light.webp b/apps/web/app/assets/empty-state/analytics/empty-chart-area-light.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-chart-area-light.webp
rename to apps/web/app/assets/empty-state/analytics/empty-chart-area-light.webp
diff --git a/apps/web/public/empty-state/analytics/empty-chart-bar-dark.webp b/apps/web/app/assets/empty-state/analytics/empty-chart-bar-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-chart-bar-dark.webp
rename to apps/web/app/assets/empty-state/analytics/empty-chart-bar-dark.webp
diff --git a/apps/web/public/empty-state/analytics/empty-chart-bar-light.webp b/apps/web/app/assets/empty-state/analytics/empty-chart-bar-light.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-chart-bar-light.webp
rename to apps/web/app/assets/empty-state/analytics/empty-chart-bar-light.webp
diff --git a/apps/web/public/empty-state/analytics/empty-chart-radar-dark.webp b/apps/web/app/assets/empty-state/analytics/empty-chart-radar-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-chart-radar-dark.webp
rename to apps/web/app/assets/empty-state/analytics/empty-chart-radar-dark.webp
diff --git a/apps/web/public/empty-state/analytics/empty-chart-radar-light.webp b/apps/web/app/assets/empty-state/analytics/empty-chart-radar-light.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-chart-radar-light.webp
rename to apps/web/app/assets/empty-state/analytics/empty-chart-radar-light.webp
diff --git a/apps/web/public/empty-state/analytics/empty-grid-background-dark.webp b/apps/web/app/assets/empty-state/analytics/empty-grid-background-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-grid-background-dark.webp
rename to apps/web/app/assets/empty-state/analytics/empty-grid-background-dark.webp
diff --git a/apps/web/public/empty-state/analytics/empty-grid-background-light.webp b/apps/web/app/assets/empty-state/analytics/empty-grid-background-light.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-grid-background-light.webp
rename to apps/web/app/assets/empty-state/analytics/empty-grid-background-light.webp
diff --git a/apps/web/public/empty-state/analytics/empty-table-dark.webp b/apps/web/app/assets/empty-state/analytics/empty-table-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-table-dark.webp
rename to apps/web/app/assets/empty-state/analytics/empty-table-dark.webp
diff --git a/apps/web/public/empty-state/analytics/empty-table-light.webp b/apps/web/app/assets/empty-state/analytics/empty-table-light.webp
similarity index 100%
rename from apps/web/public/empty-state/analytics/empty-table-light.webp
rename to apps/web/app/assets/empty-state/analytics/empty-table-light.webp
diff --git a/apps/web/public/empty-state/api-token.svg b/apps/web/app/assets/empty-state/api-token.svg
similarity index 100%
rename from apps/web/public/empty-state/api-token.svg
rename to apps/web/app/assets/empty-state/api-token.svg
diff --git a/apps/web/public/empty-state/archived/empty-cycles-dark.webp b/apps/web/app/assets/empty-state/archived/empty-cycles-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/archived/empty-cycles-dark.webp
rename to apps/web/app/assets/empty-state/archived/empty-cycles-dark.webp
diff --git a/apps/web/public/empty-state/archived/empty-cycles-light.webp b/apps/web/app/assets/empty-state/archived/empty-cycles-light.webp
similarity index 100%
rename from apps/web/public/empty-state/archived/empty-cycles-light.webp
rename to apps/web/app/assets/empty-state/archived/empty-cycles-light.webp
diff --git a/apps/web/public/empty-state/archived/empty-issues-dark.webp b/apps/web/app/assets/empty-state/archived/empty-issues-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/archived/empty-issues-dark.webp
rename to apps/web/app/assets/empty-state/archived/empty-issues-dark.webp
diff --git a/apps/web/public/empty-state/archived/empty-issues-light.webp b/apps/web/app/assets/empty-state/archived/empty-issues-light.webp
similarity index 100%
rename from apps/web/public/empty-state/archived/empty-issues-light.webp
rename to apps/web/app/assets/empty-state/archived/empty-issues-light.webp
diff --git a/apps/web/public/empty-state/archived/empty-modules-dark.webp b/apps/web/app/assets/empty-state/archived/empty-modules-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/archived/empty-modules-dark.webp
rename to apps/web/app/assets/empty-state/archived/empty-modules-dark.webp
diff --git a/apps/web/public/empty-state/archived/empty-modules-light.webp b/apps/web/app/assets/empty-state/archived/empty-modules-light.webp
similarity index 100%
rename from apps/web/public/empty-state/archived/empty-modules-light.webp
rename to apps/web/app/assets/empty-state/archived/empty-modules-light.webp
diff --git a/apps/web/public/empty-state/cycle-issues/calendar-dark-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/calendar-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/calendar-dark-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/calendar-dark-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/calendar-dark.webp b/apps/web/app/assets/empty-state/cycle-issues/calendar-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/calendar-dark.webp
rename to apps/web/app/assets/empty-state/cycle-issues/calendar-dark.webp
diff --git a/apps/web/public/empty-state/cycle-issues/calendar-light-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/calendar-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/calendar-light-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/calendar-light-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/calendar-light.webp b/apps/web/app/assets/empty-state/cycle-issues/calendar-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/calendar-light.webp
rename to apps/web/app/assets/empty-state/cycle-issues/calendar-light.webp
diff --git a/apps/web/public/empty-state/cycle-issues/gantt_chart-dark-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/gantt_chart-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/gantt_chart-dark-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/gantt_chart-dark-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/gantt_chart-dark.webp b/apps/web/app/assets/empty-state/cycle-issues/gantt_chart-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/gantt_chart-dark.webp
rename to apps/web/app/assets/empty-state/cycle-issues/gantt_chart-dark.webp
diff --git a/apps/web/public/empty-state/cycle-issues/gantt_chart-light-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/gantt_chart-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/gantt_chart-light-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/gantt_chart-light-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/gantt_chart-light.webp b/apps/web/app/assets/empty-state/cycle-issues/gantt_chart-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/gantt_chart-light.webp
rename to apps/web/app/assets/empty-state/cycle-issues/gantt_chart-light.webp
diff --git a/apps/web/public/empty-state/cycle-issues/kanban-dark-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/kanban-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/kanban-dark-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/kanban-dark-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/kanban-dark.webp b/apps/web/app/assets/empty-state/cycle-issues/kanban-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/kanban-dark.webp
rename to apps/web/app/assets/empty-state/cycle-issues/kanban-dark.webp
diff --git a/apps/web/public/empty-state/cycle-issues/kanban-light-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/kanban-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/kanban-light-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/kanban-light-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/kanban-light.webp b/apps/web/app/assets/empty-state/cycle-issues/kanban-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/kanban-light.webp
rename to apps/web/app/assets/empty-state/cycle-issues/kanban-light.webp
diff --git a/apps/web/public/empty-state/cycle-issues/list-dark-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/list-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/list-dark-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/list-dark-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/list-dark.webp b/apps/web/app/assets/empty-state/cycle-issues/list-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/list-dark.webp
rename to apps/web/app/assets/empty-state/cycle-issues/list-dark.webp
diff --git a/apps/web/public/empty-state/cycle-issues/list-light-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/list-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/list-light-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/list-light-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/list-light.webp b/apps/web/app/assets/empty-state/cycle-issues/list-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/list-light.webp
rename to apps/web/app/assets/empty-state/cycle-issues/list-light.webp
diff --git a/apps/web/public/empty-state/cycle-issues/spreadsheet-dark-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/spreadsheet-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/spreadsheet-dark-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/spreadsheet-dark-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/spreadsheet-dark.webp b/apps/web/app/assets/empty-state/cycle-issues/spreadsheet-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/spreadsheet-dark.webp
rename to apps/web/app/assets/empty-state/cycle-issues/spreadsheet-dark.webp
diff --git a/apps/web/public/empty-state/cycle-issues/spreadsheet-light-resp.webp b/apps/web/app/assets/empty-state/cycle-issues/spreadsheet-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/spreadsheet-light-resp.webp
rename to apps/web/app/assets/empty-state/cycle-issues/spreadsheet-light-resp.webp
diff --git a/apps/web/public/empty-state/cycle-issues/spreadsheet-light.webp b/apps/web/app/assets/empty-state/cycle-issues/spreadsheet-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle-issues/spreadsheet-light.webp
rename to apps/web/app/assets/empty-state/cycle-issues/spreadsheet-light.webp
diff --git a/apps/web/public/empty-state/cycle.svg b/apps/web/app/assets/empty-state/cycle.svg
similarity index 100%
rename from apps/web/public/empty-state/cycle.svg
rename to apps/web/app/assets/empty-state/cycle.svg
diff --git a/apps/web/public/empty-state/cycle/active-dark.webp b/apps/web/app/assets/empty-state/cycle/active-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/active-dark.webp
rename to apps/web/app/assets/empty-state/cycle/active-dark.webp
diff --git a/apps/web/public/empty-state/cycle/active-light.webp b/apps/web/app/assets/empty-state/cycle/active-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/active-light.webp
rename to apps/web/app/assets/empty-state/cycle/active-light.webp
diff --git a/apps/web/public/empty-state/cycle/all-filters.svg b/apps/web/app/assets/empty-state/cycle/all-filters.svg
similarity index 100%
rename from apps/web/public/empty-state/cycle/all-filters.svg
rename to apps/web/app/assets/empty-state/cycle/all-filters.svg
diff --git a/apps/web/public/empty-state/cycle/completed-dark.webp b/apps/web/app/assets/empty-state/cycle/completed-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/completed-dark.webp
rename to apps/web/app/assets/empty-state/cycle/completed-dark.webp
diff --git a/apps/web/public/empty-state/cycle/completed-light.webp b/apps/web/app/assets/empty-state/cycle/completed-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/completed-light.webp
rename to apps/web/app/assets/empty-state/cycle/completed-light.webp
diff --git a/apps/web/public/empty-state/cycle/completed-no-issues-dark.webp b/apps/web/app/assets/empty-state/cycle/completed-no-issues-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/completed-no-issues-dark.webp
rename to apps/web/app/assets/empty-state/cycle/completed-no-issues-dark.webp
diff --git a/apps/web/public/empty-state/cycle/completed-no-issues-light.webp b/apps/web/app/assets/empty-state/cycle/completed-no-issues-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/completed-no-issues-light.webp
rename to apps/web/app/assets/empty-state/cycle/completed-no-issues-light.webp
diff --git a/apps/web/public/empty-state/cycle/draft-dark.webp b/apps/web/app/assets/empty-state/cycle/draft-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/draft-dark.webp
rename to apps/web/app/assets/empty-state/cycle/draft-dark.webp
diff --git a/apps/web/public/empty-state/cycle/draft-light.webp b/apps/web/app/assets/empty-state/cycle/draft-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/draft-light.webp
rename to apps/web/app/assets/empty-state/cycle/draft-light.webp
diff --git a/apps/web/public/empty-state/cycle/name-filter.svg b/apps/web/app/assets/empty-state/cycle/name-filter.svg
similarity index 100%
rename from apps/web/public/empty-state/cycle/name-filter.svg
rename to apps/web/app/assets/empty-state/cycle/name-filter.svg
diff --git a/apps/web/public/empty-state/cycle/upcoming-dark.webp b/apps/web/app/assets/empty-state/cycle/upcoming-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/upcoming-dark.webp
rename to apps/web/app/assets/empty-state/cycle/upcoming-dark.webp
diff --git a/apps/web/public/empty-state/cycle/upcoming-light.webp b/apps/web/app/assets/empty-state/cycle/upcoming-light.webp
similarity index 100%
rename from apps/web/public/empty-state/cycle/upcoming-light.webp
rename to apps/web/app/assets/empty-state/cycle/upcoming-light.webp
diff --git a/apps/web/public/empty-state/dashboard/dark/completed-issues.svg b/apps/web/app/assets/empty-state/dashboard/dark/completed-issues.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/dark/completed-issues.svg
rename to apps/web/app/assets/empty-state/dashboard/dark/completed-issues.svg
diff --git a/apps/web/public/empty-state/dashboard/dark/issues-by-priority.svg b/apps/web/app/assets/empty-state/dashboard/dark/issues-by-priority.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/dark/issues-by-priority.svg
rename to apps/web/app/assets/empty-state/dashboard/dark/issues-by-priority.svg
diff --git a/apps/web/public/empty-state/dashboard/dark/issues-by-state-group.svg b/apps/web/app/assets/empty-state/dashboard/dark/issues-by-state-group.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/dark/issues-by-state-group.svg
rename to apps/web/app/assets/empty-state/dashboard/dark/issues-by-state-group.svg
diff --git a/apps/web/public/empty-state/dashboard/dark/overdue-issues.svg b/apps/web/app/assets/empty-state/dashboard/dark/overdue-issues.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/dark/overdue-issues.svg
rename to apps/web/app/assets/empty-state/dashboard/dark/overdue-issues.svg
diff --git a/apps/web/public/empty-state/dashboard/dark/recent-activity.svg b/apps/web/app/assets/empty-state/dashboard/dark/recent-activity.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/dark/recent-activity.svg
rename to apps/web/app/assets/empty-state/dashboard/dark/recent-activity.svg
diff --git a/apps/web/public/empty-state/dashboard/dark/recent-collaborators-1.svg b/apps/web/app/assets/empty-state/dashboard/dark/recent-collaborators-1.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/dark/recent-collaborators-1.svg
rename to apps/web/app/assets/empty-state/dashboard/dark/recent-collaborators-1.svg
diff --git a/apps/web/public/empty-state/dashboard/dark/recent-collaborators-2.svg b/apps/web/app/assets/empty-state/dashboard/dark/recent-collaborators-2.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/dark/recent-collaborators-2.svg
rename to apps/web/app/assets/empty-state/dashboard/dark/recent-collaborators-2.svg
diff --git a/apps/web/public/empty-state/dashboard/dark/recent-collaborators-3.svg b/apps/web/app/assets/empty-state/dashboard/dark/recent-collaborators-3.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/dark/recent-collaborators-3.svg
rename to apps/web/app/assets/empty-state/dashboard/dark/recent-collaborators-3.svg
diff --git a/apps/web/public/empty-state/dashboard/dark/upcoming-issues.svg b/apps/web/app/assets/empty-state/dashboard/dark/upcoming-issues.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/dark/upcoming-issues.svg
rename to apps/web/app/assets/empty-state/dashboard/dark/upcoming-issues.svg
diff --git a/apps/web/public/empty-state/dashboard/light/completed-issues.svg b/apps/web/app/assets/empty-state/dashboard/light/completed-issues.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/light/completed-issues.svg
rename to apps/web/app/assets/empty-state/dashboard/light/completed-issues.svg
diff --git a/apps/web/public/empty-state/dashboard/light/issues-by-priority.svg b/apps/web/app/assets/empty-state/dashboard/light/issues-by-priority.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/light/issues-by-priority.svg
rename to apps/web/app/assets/empty-state/dashboard/light/issues-by-priority.svg
diff --git a/apps/web/public/empty-state/dashboard/light/issues-by-state-group.svg b/apps/web/app/assets/empty-state/dashboard/light/issues-by-state-group.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/light/issues-by-state-group.svg
rename to apps/web/app/assets/empty-state/dashboard/light/issues-by-state-group.svg
diff --git a/apps/web/public/empty-state/dashboard/light/overdue-issues.svg b/apps/web/app/assets/empty-state/dashboard/light/overdue-issues.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/light/overdue-issues.svg
rename to apps/web/app/assets/empty-state/dashboard/light/overdue-issues.svg
diff --git a/apps/web/public/empty-state/dashboard/light/recent-activity.svg b/apps/web/app/assets/empty-state/dashboard/light/recent-activity.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/light/recent-activity.svg
rename to apps/web/app/assets/empty-state/dashboard/light/recent-activity.svg
diff --git a/apps/web/public/empty-state/dashboard/light/recent-collaborators-1.svg b/apps/web/app/assets/empty-state/dashboard/light/recent-collaborators-1.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/light/recent-collaborators-1.svg
rename to apps/web/app/assets/empty-state/dashboard/light/recent-collaborators-1.svg
diff --git a/apps/web/public/empty-state/dashboard/light/recent-collaborators-2.svg b/apps/web/app/assets/empty-state/dashboard/light/recent-collaborators-2.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/light/recent-collaborators-2.svg
rename to apps/web/app/assets/empty-state/dashboard/light/recent-collaborators-2.svg
diff --git a/apps/web/public/empty-state/dashboard/light/recent-collaborators-3.svg b/apps/web/app/assets/empty-state/dashboard/light/recent-collaborators-3.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/light/recent-collaborators-3.svg
rename to apps/web/app/assets/empty-state/dashboard/light/recent-collaborators-3.svg
diff --git a/apps/web/public/empty-state/dashboard/light/upcoming-issues.svg b/apps/web/app/assets/empty-state/dashboard/light/upcoming-issues.svg
similarity index 100%
rename from apps/web/public/empty-state/dashboard/light/upcoming-issues.svg
rename to apps/web/app/assets/empty-state/dashboard/light/upcoming-issues.svg
diff --git a/apps/web/public/empty-state/dashboard/widgets-dark.webp b/apps/web/app/assets/empty-state/dashboard/widgets-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/dashboard/widgets-dark.webp
rename to apps/web/app/assets/empty-state/dashboard/widgets-dark.webp
diff --git a/apps/web/public/empty-state/dashboard/widgets-light.webp b/apps/web/app/assets/empty-state/dashboard/widgets-light.webp
similarity index 100%
rename from apps/web/public/empty-state/dashboard/widgets-light.webp
rename to apps/web/app/assets/empty-state/dashboard/widgets-light.webp
diff --git a/apps/web/public/empty-state/dashboard_empty_project.webp b/apps/web/app/assets/empty-state/dashboard_empty_project.webp
similarity index 100%
rename from apps/web/public/empty-state/dashboard_empty_project.webp
rename to apps/web/app/assets/empty-state/dashboard_empty_project.webp
diff --git a/apps/web/public/empty-state/disabled-feature/cycles-dark.webp b/apps/web/app/assets/empty-state/disabled-feature/cycles-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/cycles-dark.webp
rename to apps/web/app/assets/empty-state/disabled-feature/cycles-dark.webp
diff --git a/apps/web/public/empty-state/disabled-feature/cycles-light.webp b/apps/web/app/assets/empty-state/disabled-feature/cycles-light.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/cycles-light.webp
rename to apps/web/app/assets/empty-state/disabled-feature/cycles-light.webp
diff --git a/apps/web/public/empty-state/disabled-feature/intake-dark.webp b/apps/web/app/assets/empty-state/disabled-feature/intake-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/intake-dark.webp
rename to apps/web/app/assets/empty-state/disabled-feature/intake-dark.webp
diff --git a/apps/web/public/empty-state/disabled-feature/intake-light.webp b/apps/web/app/assets/empty-state/disabled-feature/intake-light.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/intake-light.webp
rename to apps/web/app/assets/empty-state/disabled-feature/intake-light.webp
diff --git a/apps/web/public/empty-state/disabled-feature/modules-dark.webp b/apps/web/app/assets/empty-state/disabled-feature/modules-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/modules-dark.webp
rename to apps/web/app/assets/empty-state/disabled-feature/modules-dark.webp
diff --git a/apps/web/public/empty-state/disabled-feature/modules-light.webp b/apps/web/app/assets/empty-state/disabled-feature/modules-light.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/modules-light.webp
rename to apps/web/app/assets/empty-state/disabled-feature/modules-light.webp
diff --git a/apps/web/public/empty-state/disabled-feature/pages-dark.webp b/apps/web/app/assets/empty-state/disabled-feature/pages-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/pages-dark.webp
rename to apps/web/app/assets/empty-state/disabled-feature/pages-dark.webp
diff --git a/apps/web/public/empty-state/disabled-feature/pages-light.webp b/apps/web/app/assets/empty-state/disabled-feature/pages-light.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/pages-light.webp
rename to apps/web/app/assets/empty-state/disabled-feature/pages-light.webp
diff --git a/apps/web/public/empty-state/disabled-feature/views-dark.webp b/apps/web/app/assets/empty-state/disabled-feature/views-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/views-dark.webp
rename to apps/web/app/assets/empty-state/disabled-feature/views-dark.webp
diff --git a/apps/web/public/empty-state/disabled-feature/views-light.webp b/apps/web/app/assets/empty-state/disabled-feature/views-light.webp
similarity index 100%
rename from apps/web/public/empty-state/disabled-feature/views-light.webp
rename to apps/web/app/assets/empty-state/disabled-feature/views-light.webp
diff --git a/apps/web/public/empty-state/draft/draft-issues-empty-dark.webp b/apps/web/app/assets/empty-state/draft/draft-issues-empty-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/draft/draft-issues-empty-dark.webp
rename to apps/web/app/assets/empty-state/draft/draft-issues-empty-dark.webp
diff --git a/apps/web/public/empty-state/draft/draft-issues-empty-light.webp b/apps/web/app/assets/empty-state/draft/draft-issues-empty-light.webp
similarity index 100%
rename from apps/web/public/empty-state/draft/draft-issues-empty-light.webp
rename to apps/web/app/assets/empty-state/draft/draft-issues-empty-light.webp
diff --git a/apps/web/public/empty-state/empty-filters/calendar-dark.webp b/apps/web/app/assets/empty-state/empty-filters/calendar-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/calendar-dark.webp
rename to apps/web/app/assets/empty-state/empty-filters/calendar-dark.webp
diff --git a/apps/web/public/empty-state/empty-filters/calendar-light.webp b/apps/web/app/assets/empty-state/empty-filters/calendar-light.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/calendar-light.webp
rename to apps/web/app/assets/empty-state/empty-filters/calendar-light.webp
diff --git a/apps/web/public/empty-state/empty-filters/gantt_chart-dark.webp b/apps/web/app/assets/empty-state/empty-filters/gantt_chart-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/gantt_chart-dark.webp
rename to apps/web/app/assets/empty-state/empty-filters/gantt_chart-dark.webp
diff --git a/apps/web/public/empty-state/empty-filters/gantt_chart-light.webp b/apps/web/app/assets/empty-state/empty-filters/gantt_chart-light.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/gantt_chart-light.webp
rename to apps/web/app/assets/empty-state/empty-filters/gantt_chart-light.webp
diff --git a/apps/web/public/empty-state/empty-filters/kanban-dark.webp b/apps/web/app/assets/empty-state/empty-filters/kanban-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/kanban-dark.webp
rename to apps/web/app/assets/empty-state/empty-filters/kanban-dark.webp
diff --git a/apps/web/public/empty-state/empty-filters/kanban-light.webp b/apps/web/app/assets/empty-state/empty-filters/kanban-light.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/kanban-light.webp
rename to apps/web/app/assets/empty-state/empty-filters/kanban-light.webp
diff --git a/apps/web/public/empty-state/empty-filters/list-dark.webp b/apps/web/app/assets/empty-state/empty-filters/list-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/list-dark.webp
rename to apps/web/app/assets/empty-state/empty-filters/list-dark.webp
diff --git a/apps/web/public/empty-state/empty-filters/list-light.webp b/apps/web/app/assets/empty-state/empty-filters/list-light.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/list-light.webp
rename to apps/web/app/assets/empty-state/empty-filters/list-light.webp
diff --git a/apps/web/public/empty-state/empty-filters/spreadsheet-dark.webp b/apps/web/app/assets/empty-state/empty-filters/spreadsheet-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/spreadsheet-dark.webp
rename to apps/web/app/assets/empty-state/empty-filters/spreadsheet-dark.webp
diff --git a/apps/web/public/empty-state/empty-filters/spreadsheet-light.webp b/apps/web/app/assets/empty-state/empty-filters/spreadsheet-light.webp
similarity index 100%
rename from apps/web/public/empty-state/empty-filters/spreadsheet-light.webp
rename to apps/web/app/assets/empty-state/empty-filters/spreadsheet-light.webp
diff --git a/apps/web/public/empty-state/empty-updates-light.png b/apps/web/app/assets/empty-state/empty-updates-light.png
similarity index 100%
rename from apps/web/public/empty-state/empty-updates-light.png
rename to apps/web/app/assets/empty-state/empty-updates-light.png
diff --git a/apps/web/public/empty-state/empty_analytics.webp b/apps/web/app/assets/empty-state/empty_analytics.webp
similarity index 100%
rename from apps/web/public/empty-state/empty_analytics.webp
rename to apps/web/app/assets/empty-state/empty_analytics.webp
diff --git a/apps/web/public/empty-state/empty_bar_graph.svg b/apps/web/app/assets/empty-state/empty_bar_graph.svg
similarity index 100%
rename from apps/web/public/empty-state/empty_bar_graph.svg
rename to apps/web/app/assets/empty-state/empty_bar_graph.svg
diff --git a/apps/web/public/empty-state/empty_cycles.webp b/apps/web/app/assets/empty-state/empty_cycles.webp
similarity index 100%
rename from apps/web/public/empty-state/empty_cycles.webp
rename to apps/web/app/assets/empty-state/empty_cycles.webp
diff --git a/apps/web/public/empty-state/empty_graph.svg b/apps/web/app/assets/empty-state/empty_graph.svg
similarity index 100%
rename from apps/web/public/empty-state/empty_graph.svg
rename to apps/web/app/assets/empty-state/empty_graph.svg
diff --git a/apps/web/public/empty-state/empty_issues.webp b/apps/web/app/assets/empty-state/empty_issues.webp
similarity index 100%
rename from apps/web/public/empty-state/empty_issues.webp
rename to apps/web/app/assets/empty-state/empty_issues.webp
diff --git a/apps/web/public/empty-state/empty_label.svg b/apps/web/app/assets/empty-state/empty_label.svg
similarity index 100%
rename from apps/web/public/empty-state/empty_label.svg
rename to apps/web/app/assets/empty-state/empty_label.svg
diff --git a/apps/web/public/empty-state/empty_members.svg b/apps/web/app/assets/empty-state/empty_members.svg
similarity index 100%
rename from apps/web/public/empty-state/empty_members.svg
rename to apps/web/app/assets/empty-state/empty_members.svg
diff --git a/apps/web/public/empty-state/empty_modules.webp b/apps/web/app/assets/empty-state/empty_modules.webp
similarity index 100%
rename from apps/web/public/empty-state/empty_modules.webp
rename to apps/web/app/assets/empty-state/empty_modules.webp
diff --git a/apps/web/public/empty-state/empty_page.png b/apps/web/app/assets/empty-state/empty_page.png
similarity index 100%
rename from apps/web/public/empty-state/empty_page.png
rename to apps/web/app/assets/empty-state/empty_page.png
diff --git a/apps/web/public/empty-state/empty_project.webp b/apps/web/app/assets/empty-state/empty_project.webp
similarity index 100%
rename from apps/web/public/empty-state/empty_project.webp
rename to apps/web/app/assets/empty-state/empty_project.webp
diff --git a/apps/web/public/empty-state/empty_users.svg b/apps/web/app/assets/empty-state/empty_users.svg
similarity index 100%
rename from apps/web/public/empty-state/empty_users.svg
rename to apps/web/app/assets/empty-state/empty_users.svg
diff --git a/apps/web/public/empty-state/empty_view.webp b/apps/web/app/assets/empty-state/empty_view.webp
similarity index 100%
rename from apps/web/public/empty-state/empty_view.webp
rename to apps/web/app/assets/empty-state/empty_view.webp
diff --git a/apps/web/public/empty-state/epics/epics-dark.webp b/apps/web/app/assets/empty-state/epics/epics-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/epics/epics-dark.webp
rename to apps/web/app/assets/empty-state/epics/epics-dark.webp
diff --git a/apps/web/public/empty-state/epics/epics-light.webp b/apps/web/app/assets/empty-state/epics/epics-light.webp
similarity index 100%
rename from apps/web/public/empty-state/epics/epics-light.webp
rename to apps/web/app/assets/empty-state/epics/epics-light.webp
diff --git a/apps/web/public/empty-state/epics/settings-dark.webp b/apps/web/app/assets/empty-state/epics/settings-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/epics/settings-dark.webp
rename to apps/web/app/assets/empty-state/epics/settings-dark.webp
diff --git a/apps/web/public/empty-state/epics/settings-light.webp b/apps/web/app/assets/empty-state/epics/settings-light.webp
similarity index 100%
rename from apps/web/public/empty-state/epics/settings-light.webp
rename to apps/web/app/assets/empty-state/epics/settings-light.webp
diff --git a/apps/web/public/empty-state/estimates/dark.svg b/apps/web/app/assets/empty-state/estimates/dark.svg
similarity index 100%
rename from apps/web/public/empty-state/estimates/dark.svg
rename to apps/web/app/assets/empty-state/estimates/dark.svg
diff --git a/apps/web/public/empty-state/estimates/light.svg b/apps/web/app/assets/empty-state/estimates/light.svg
similarity index 100%
rename from apps/web/public/empty-state/estimates/light.svg
rename to apps/web/app/assets/empty-state/estimates/light.svg
diff --git a/apps/web/public/empty-state/intake/filter-issue-dark.webp b/apps/web/app/assets/empty-state/intake/filter-issue-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/filter-issue-dark.webp
rename to apps/web/app/assets/empty-state/intake/filter-issue-dark.webp
diff --git a/apps/web/public/empty-state/intake/filter-issue-light.webp b/apps/web/app/assets/empty-state/intake/filter-issue-light.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/filter-issue-light.webp
rename to apps/web/app/assets/empty-state/intake/filter-issue-light.webp
diff --git a/apps/web/public/empty-state/intake/intake-dark-resp.webp b/apps/web/app/assets/empty-state/intake/intake-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/intake-dark-resp.webp
rename to apps/web/app/assets/empty-state/intake/intake-dark-resp.webp
diff --git a/apps/web/public/empty-state/intake/intake-dark.webp b/apps/web/app/assets/empty-state/intake/intake-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/intake-dark.webp
rename to apps/web/app/assets/empty-state/intake/intake-dark.webp
diff --git a/apps/web/public/empty-state/intake/intake-issue-dark.webp b/apps/web/app/assets/empty-state/intake/intake-issue-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/intake-issue-dark.webp
rename to apps/web/app/assets/empty-state/intake/intake-issue-dark.webp
diff --git a/apps/web/public/empty-state/intake/intake-issue-light.webp b/apps/web/app/assets/empty-state/intake/intake-issue-light.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/intake-issue-light.webp
rename to apps/web/app/assets/empty-state/intake/intake-issue-light.webp
diff --git a/apps/web/public/empty-state/intake/intake-light-resp.webp b/apps/web/app/assets/empty-state/intake/intake-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/intake-light-resp.webp
rename to apps/web/app/assets/empty-state/intake/intake-light-resp.webp
diff --git a/apps/web/public/empty-state/intake/intake-light.webp b/apps/web/app/assets/empty-state/intake/intake-light.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/intake-light.webp
rename to apps/web/app/assets/empty-state/intake/intake-light.webp
diff --git a/apps/web/public/empty-state/intake/issue-detail-dark.webp b/apps/web/app/assets/empty-state/intake/issue-detail-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/issue-detail-dark.webp
rename to apps/web/app/assets/empty-state/intake/issue-detail-dark.webp
diff --git a/apps/web/public/empty-state/intake/issue-detail-light.webp b/apps/web/app/assets/empty-state/intake/issue-detail-light.webp
similarity index 100%
rename from apps/web/public/empty-state/intake/issue-detail-light.webp
rename to apps/web/app/assets/empty-state/intake/issue-detail-light.webp
diff --git a/apps/web/public/empty-state/invitation.svg b/apps/web/app/assets/empty-state/invitation.svg
similarity index 100%
rename from apps/web/public/empty-state/invitation.svg
rename to apps/web/app/assets/empty-state/invitation.svg
diff --git a/apps/web/public/empty-state/issue.svg b/apps/web/app/assets/empty-state/issue.svg
similarity index 100%
rename from apps/web/public/empty-state/issue.svg
rename to apps/web/app/assets/empty-state/issue.svg
diff --git a/apps/web/public/empty-state/label.svg b/apps/web/app/assets/empty-state/label.svg
similarity index 100%
rename from apps/web/public/empty-state/label.svg
rename to apps/web/app/assets/empty-state/label.svg
diff --git a/apps/web/public/empty-state/module-issues/calendar-dark-resp.webp b/apps/web/app/assets/empty-state/module-issues/calendar-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/calendar-dark-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/calendar-dark-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/calendar-dark.webp b/apps/web/app/assets/empty-state/module-issues/calendar-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/calendar-dark.webp
rename to apps/web/app/assets/empty-state/module-issues/calendar-dark.webp
diff --git a/apps/web/public/empty-state/module-issues/calendar-light-resp.webp b/apps/web/app/assets/empty-state/module-issues/calendar-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/calendar-light-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/calendar-light-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/calendar-light.webp b/apps/web/app/assets/empty-state/module-issues/calendar-light.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/calendar-light.webp
rename to apps/web/app/assets/empty-state/module-issues/calendar-light.webp
diff --git a/apps/web/public/empty-state/module-issues/gantt_chart-dark-resp.webp b/apps/web/app/assets/empty-state/module-issues/gantt_chart-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/gantt_chart-dark-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/gantt_chart-dark-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/gantt_chart-dark.webp b/apps/web/app/assets/empty-state/module-issues/gantt_chart-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/gantt_chart-dark.webp
rename to apps/web/app/assets/empty-state/module-issues/gantt_chart-dark.webp
diff --git a/apps/web/public/empty-state/module-issues/gantt_chart-light-resp.webp b/apps/web/app/assets/empty-state/module-issues/gantt_chart-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/gantt_chart-light-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/gantt_chart-light-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/gantt_chart-light.webp b/apps/web/app/assets/empty-state/module-issues/gantt_chart-light.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/gantt_chart-light.webp
rename to apps/web/app/assets/empty-state/module-issues/gantt_chart-light.webp
diff --git a/apps/web/public/empty-state/module-issues/kanban-dark-resp.webp b/apps/web/app/assets/empty-state/module-issues/kanban-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/kanban-dark-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/kanban-dark-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/kanban-dark.webp b/apps/web/app/assets/empty-state/module-issues/kanban-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/kanban-dark.webp
rename to apps/web/app/assets/empty-state/module-issues/kanban-dark.webp
diff --git a/apps/web/public/empty-state/module-issues/kanban-light-resp.webp b/apps/web/app/assets/empty-state/module-issues/kanban-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/kanban-light-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/kanban-light-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/kanban-light.webp b/apps/web/app/assets/empty-state/module-issues/kanban-light.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/kanban-light.webp
rename to apps/web/app/assets/empty-state/module-issues/kanban-light.webp
diff --git a/apps/web/public/empty-state/module-issues/list-dark-resp.webp b/apps/web/app/assets/empty-state/module-issues/list-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/list-dark-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/list-dark-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/list-dark.webp b/apps/web/app/assets/empty-state/module-issues/list-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/list-dark.webp
rename to apps/web/app/assets/empty-state/module-issues/list-dark.webp
diff --git a/apps/web/public/empty-state/module-issues/list-light-resp.webp b/apps/web/app/assets/empty-state/module-issues/list-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/list-light-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/list-light-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/list-light.webp b/apps/web/app/assets/empty-state/module-issues/list-light.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/list-light.webp
rename to apps/web/app/assets/empty-state/module-issues/list-light.webp
diff --git a/apps/web/public/empty-state/module-issues/spreadsheet-dark-resp.webp b/apps/web/app/assets/empty-state/module-issues/spreadsheet-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/spreadsheet-dark-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/spreadsheet-dark-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/spreadsheet-dark.webp b/apps/web/app/assets/empty-state/module-issues/spreadsheet-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/spreadsheet-dark.webp
rename to apps/web/app/assets/empty-state/module-issues/spreadsheet-dark.webp
diff --git a/apps/web/public/empty-state/module-issues/spreadsheet-light-resp.webp b/apps/web/app/assets/empty-state/module-issues/spreadsheet-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/spreadsheet-light-resp.webp
rename to apps/web/app/assets/empty-state/module-issues/spreadsheet-light-resp.webp
diff --git a/apps/web/public/empty-state/module-issues/spreadsheet-light.webp b/apps/web/app/assets/empty-state/module-issues/spreadsheet-light.webp
similarity index 100%
rename from apps/web/public/empty-state/module-issues/spreadsheet-light.webp
rename to apps/web/app/assets/empty-state/module-issues/spreadsheet-light.webp
diff --git a/apps/web/public/empty-state/module.svg b/apps/web/app/assets/empty-state/module.svg
similarity index 100%
rename from apps/web/public/empty-state/module.svg
rename to apps/web/app/assets/empty-state/module.svg
diff --git a/apps/web/public/empty-state/module/all-filters.svg b/apps/web/app/assets/empty-state/module/all-filters.svg
similarity index 100%
rename from apps/web/public/empty-state/module/all-filters.svg
rename to apps/web/app/assets/empty-state/module/all-filters.svg
diff --git a/apps/web/public/empty-state/module/name-filter.svg b/apps/web/app/assets/empty-state/module/name-filter.svg
similarity index 100%
rename from apps/web/public/empty-state/module/name-filter.svg
rename to apps/web/app/assets/empty-state/module/name-filter.svg
diff --git a/apps/web/public/empty-state/notification.svg b/apps/web/app/assets/empty-state/notification.svg
similarity index 100%
rename from apps/web/public/empty-state/notification.svg
rename to apps/web/app/assets/empty-state/notification.svg
diff --git a/apps/web/public/empty-state/onboarding/analytics-dark.webp b/apps/web/app/assets/empty-state/onboarding/analytics-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/analytics-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/analytics-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/analytics-light.webp b/apps/web/app/assets/empty-state/onboarding/analytics-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/analytics-light.webp
rename to apps/web/app/assets/empty-state/onboarding/analytics-light.webp
diff --git a/apps/web/public/empty-state/onboarding/archive-dark.png b/apps/web/app/assets/empty-state/onboarding/archive-dark.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/archive-dark.png
rename to apps/web/app/assets/empty-state/onboarding/archive-dark.png
diff --git a/apps/web/public/empty-state/onboarding/archive-light.png b/apps/web/app/assets/empty-state/onboarding/archive-light.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/archive-light.png
rename to apps/web/app/assets/empty-state/onboarding/archive-light.png
diff --git a/apps/web/public/empty-state/onboarding/cycles-dark.webp b/apps/web/app/assets/empty-state/onboarding/cycles-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/cycles-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/cycles-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/cycles-light.webp b/apps/web/app/assets/empty-state/onboarding/cycles-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/cycles-light.webp
rename to apps/web/app/assets/empty-state/onboarding/cycles-light.webp
diff --git a/apps/web/public/empty-state/onboarding/dashboard-dark.webp b/apps/web/app/assets/empty-state/onboarding/dashboard-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/dashboard-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/dashboard-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/dashboard-light.webp b/apps/web/app/assets/empty-state/onboarding/dashboard-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/dashboard-light.webp
rename to apps/web/app/assets/empty-state/onboarding/dashboard-light.webp
diff --git a/apps/web/public/empty-state/onboarding/graph-dark.png b/apps/web/app/assets/empty-state/onboarding/graph-dark.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/graph-dark.png
rename to apps/web/app/assets/empty-state/onboarding/graph-dark.png
diff --git a/apps/web/public/empty-state/onboarding/graph-light.png b/apps/web/app/assets/empty-state/onboarding/graph-light.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/graph-light.png
rename to apps/web/app/assets/empty-state/onboarding/graph-light.png
diff --git a/apps/web/public/empty-state/onboarding/issues-closed-dark.png b/apps/web/app/assets/empty-state/onboarding/issues-closed-dark.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/issues-closed-dark.png
rename to apps/web/app/assets/empty-state/onboarding/issues-closed-dark.png
diff --git a/apps/web/public/empty-state/onboarding/issues-closed-light.png b/apps/web/app/assets/empty-state/onboarding/issues-closed-light.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/issues-closed-light.png
rename to apps/web/app/assets/empty-state/onboarding/issues-closed-light.png
diff --git a/apps/web/public/empty-state/onboarding/issues-dark.webp b/apps/web/app/assets/empty-state/onboarding/issues-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/issues-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/issues-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/issues-light.webp b/apps/web/app/assets/empty-state/onboarding/issues-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/issues-light.webp
rename to apps/web/app/assets/empty-state/onboarding/issues-light.webp
diff --git a/apps/web/public/empty-state/onboarding/members-dark.png b/apps/web/app/assets/empty-state/onboarding/members-dark.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/members-dark.png
rename to apps/web/app/assets/empty-state/onboarding/members-dark.png
diff --git a/apps/web/public/empty-state/onboarding/members-light.png b/apps/web/app/assets/empty-state/onboarding/members-light.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/members-light.png
rename to apps/web/app/assets/empty-state/onboarding/members-light.png
diff --git a/apps/web/public/empty-state/onboarding/modules-dark.webp b/apps/web/app/assets/empty-state/onboarding/modules-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/modules-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/modules-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/modules-light.webp b/apps/web/app/assets/empty-state/onboarding/modules-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/modules-light.webp
rename to apps/web/app/assets/empty-state/onboarding/modules-light.webp
diff --git a/apps/web/public/empty-state/onboarding/notification-dark.png b/apps/web/app/assets/empty-state/onboarding/notification-dark.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/notification-dark.png
rename to apps/web/app/assets/empty-state/onboarding/notification-dark.png
diff --git a/apps/web/public/empty-state/onboarding/notification-light.png b/apps/web/app/assets/empty-state/onboarding/notification-light.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/notification-light.png
rename to apps/web/app/assets/empty-state/onboarding/notification-light.png
diff --git a/apps/web/public/empty-state/onboarding/pages-dark.webp b/apps/web/app/assets/empty-state/onboarding/pages-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/pages-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/pages-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/pages-light.webp b/apps/web/app/assets/empty-state/onboarding/pages-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/pages-light.webp
rename to apps/web/app/assets/empty-state/onboarding/pages-light.webp
diff --git a/apps/web/public/empty-state/onboarding/projects-dark.webp b/apps/web/app/assets/empty-state/onboarding/projects-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/projects-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/projects-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/projects-light.webp b/apps/web/app/assets/empty-state/onboarding/projects-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/projects-light.webp
rename to apps/web/app/assets/empty-state/onboarding/projects-light.webp
diff --git a/apps/web/public/empty-state/onboarding/search-dark.png b/apps/web/app/assets/empty-state/onboarding/search-dark.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/search-dark.png
rename to apps/web/app/assets/empty-state/onboarding/search-dark.png
diff --git a/apps/web/public/empty-state/onboarding/search-light.png b/apps/web/app/assets/empty-state/onboarding/search-light.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/search-light.png
rename to apps/web/app/assets/empty-state/onboarding/search-light.png
diff --git a/apps/web/public/empty-state/onboarding/snooze-light.png b/apps/web/app/assets/empty-state/onboarding/snooze-light.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/snooze-light.png
rename to apps/web/app/assets/empty-state/onboarding/snooze-light.png
diff --git a/apps/web/public/empty-state/onboarding/snoozed-dark.png b/apps/web/app/assets/empty-state/onboarding/snoozed-dark.png
similarity index 100%
rename from apps/web/public/empty-state/onboarding/snoozed-dark.png
rename to apps/web/app/assets/empty-state/onboarding/snoozed-dark.png
diff --git a/apps/web/public/empty-state/onboarding/views-dark.webp b/apps/web/app/assets/empty-state/onboarding/views-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/views-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/views-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/views-light.webp b/apps/web/app/assets/empty-state/onboarding/views-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/views-light.webp
rename to apps/web/app/assets/empty-state/onboarding/views-light.webp
diff --git a/apps/web/public/empty-state/onboarding/workspace-active-cycles-dark.webp b/apps/web/app/assets/empty-state/onboarding/workspace-active-cycles-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/workspace-active-cycles-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/workspace-active-cycles-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/workspace-active-cycles-light.webp b/apps/web/app/assets/empty-state/onboarding/workspace-active-cycles-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/workspace-active-cycles-light.webp
rename to apps/web/app/assets/empty-state/onboarding/workspace-active-cycles-light.webp
diff --git a/apps/web/public/empty-state/onboarding/workspace-invites-dark.webp b/apps/web/app/assets/empty-state/onboarding/workspace-invites-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/workspace-invites-dark.webp
rename to apps/web/app/assets/empty-state/onboarding/workspace-invites-dark.webp
diff --git a/apps/web/public/empty-state/onboarding/workspace-invites-light.webp b/apps/web/app/assets/empty-state/onboarding/workspace-invites-light.webp
similarity index 100%
rename from apps/web/public/empty-state/onboarding/workspace-invites-light.webp
rename to apps/web/app/assets/empty-state/onboarding/workspace-invites-light.webp
diff --git a/apps/web/public/empty-state/profile/activities-dark.webp b/apps/web/app/assets/empty-state/profile/activities-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/activities-dark.webp
rename to apps/web/app/assets/empty-state/profile/activities-dark.webp
diff --git a/apps/web/public/empty-state/profile/activities-light.webp b/apps/web/app/assets/empty-state/profile/activities-light.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/activities-light.webp
rename to apps/web/app/assets/empty-state/profile/activities-light.webp
diff --git a/apps/web/public/empty-state/profile/activity-dark.webp b/apps/web/app/assets/empty-state/profile/activity-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/activity-dark.webp
rename to apps/web/app/assets/empty-state/profile/activity-dark.webp
diff --git a/apps/web/public/empty-state/profile/activity-light.webp b/apps/web/app/assets/empty-state/profile/activity-light.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/activity-light.webp
rename to apps/web/app/assets/empty-state/profile/activity-light.webp
diff --git a/apps/web/public/empty-state/profile/assigned-dark.webp b/apps/web/app/assets/empty-state/profile/assigned-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/assigned-dark.webp
rename to apps/web/app/assets/empty-state/profile/assigned-dark.webp
diff --git a/apps/web/public/empty-state/profile/assigned-light.webp b/apps/web/app/assets/empty-state/profile/assigned-light.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/assigned-light.webp
rename to apps/web/app/assets/empty-state/profile/assigned-light.webp
diff --git a/apps/web/public/empty-state/profile/created-dark.webp b/apps/web/app/assets/empty-state/profile/created-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/created-dark.webp
rename to apps/web/app/assets/empty-state/profile/created-dark.webp
diff --git a/apps/web/public/empty-state/profile/created-light.webp b/apps/web/app/assets/empty-state/profile/created-light.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/created-light.webp
rename to apps/web/app/assets/empty-state/profile/created-light.webp
diff --git a/apps/web/public/empty-state/profile/issues-by-priority-dark.webp b/apps/web/app/assets/empty-state/profile/issues-by-priority-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/issues-by-priority-dark.webp
rename to apps/web/app/assets/empty-state/profile/issues-by-priority-dark.webp
diff --git a/apps/web/public/empty-state/profile/issues-by-priority-light.webp b/apps/web/app/assets/empty-state/profile/issues-by-priority-light.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/issues-by-priority-light.webp
rename to apps/web/app/assets/empty-state/profile/issues-by-priority-light.webp
diff --git a/apps/web/public/empty-state/profile/issues-by-state-dark.webp b/apps/web/app/assets/empty-state/profile/issues-by-state-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/issues-by-state-dark.webp
rename to apps/web/app/assets/empty-state/profile/issues-by-state-dark.webp
diff --git a/apps/web/public/empty-state/profile/issues-by-state-light.webp b/apps/web/app/assets/empty-state/profile/issues-by-state-light.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/issues-by-state-light.webp
rename to apps/web/app/assets/empty-state/profile/issues-by-state-light.webp
diff --git a/apps/web/public/empty-state/profile/subscribed-dark.webp b/apps/web/app/assets/empty-state/profile/subscribed-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/subscribed-dark.webp
rename to apps/web/app/assets/empty-state/profile/subscribed-dark.webp
diff --git a/apps/web/public/empty-state/profile/subscribed-light.webp b/apps/web/app/assets/empty-state/profile/subscribed-light.webp
similarity index 100%
rename from apps/web/public/empty-state/profile/subscribed-light.webp
rename to apps/web/app/assets/empty-state/profile/subscribed-light.webp
diff --git a/apps/web/public/empty-state/project-settings/estimates-dark-resp.webp b/apps/web/app/assets/empty-state/project-settings/estimates-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/estimates-dark-resp.webp
rename to apps/web/app/assets/empty-state/project-settings/estimates-dark-resp.webp
diff --git a/apps/web/public/empty-state/project-settings/estimates-dark.png b/apps/web/app/assets/empty-state/project-settings/estimates-dark.png
similarity index 100%
rename from apps/web/public/empty-state/project-settings/estimates-dark.png
rename to apps/web/app/assets/empty-state/project-settings/estimates-dark.png
diff --git a/apps/web/public/empty-state/project-settings/estimates-dark.webp b/apps/web/app/assets/empty-state/project-settings/estimates-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/estimates-dark.webp
rename to apps/web/app/assets/empty-state/project-settings/estimates-dark.webp
diff --git a/apps/web/public/empty-state/project-settings/estimates-light-resp.webp b/apps/web/app/assets/empty-state/project-settings/estimates-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/estimates-light-resp.webp
rename to apps/web/app/assets/empty-state/project-settings/estimates-light-resp.webp
diff --git a/apps/web/public/empty-state/project-settings/estimates-light.png b/apps/web/app/assets/empty-state/project-settings/estimates-light.png
similarity index 100%
rename from apps/web/public/empty-state/project-settings/estimates-light.png
rename to apps/web/app/assets/empty-state/project-settings/estimates-light.png
diff --git a/apps/web/public/empty-state/project-settings/estimates-light.webp b/apps/web/app/assets/empty-state/project-settings/estimates-light.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/estimates-light.webp
rename to apps/web/app/assets/empty-state/project-settings/estimates-light.webp
diff --git a/apps/web/public/empty-state/project-settings/integrations-dark-resp.webp b/apps/web/app/assets/empty-state/project-settings/integrations-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/integrations-dark-resp.webp
rename to apps/web/app/assets/empty-state/project-settings/integrations-dark-resp.webp
diff --git a/apps/web/public/empty-state/project-settings/integrations-dark.webp b/apps/web/app/assets/empty-state/project-settings/integrations-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/integrations-dark.webp
rename to apps/web/app/assets/empty-state/project-settings/integrations-dark.webp
diff --git a/apps/web/public/empty-state/project-settings/integrations-light-resp.webp b/apps/web/app/assets/empty-state/project-settings/integrations-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/integrations-light-resp.webp
rename to apps/web/app/assets/empty-state/project-settings/integrations-light-resp.webp
diff --git a/apps/web/public/empty-state/project-settings/integrations-light.webp b/apps/web/app/assets/empty-state/project-settings/integrations-light.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/integrations-light.webp
rename to apps/web/app/assets/empty-state/project-settings/integrations-light.webp
diff --git a/apps/web/public/empty-state/project-settings/labels-dark-resp.webp b/apps/web/app/assets/empty-state/project-settings/labels-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/labels-dark-resp.webp
rename to apps/web/app/assets/empty-state/project-settings/labels-dark-resp.webp
diff --git a/apps/web/public/empty-state/project-settings/labels-dark.webp b/apps/web/app/assets/empty-state/project-settings/labels-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/labels-dark.webp
rename to apps/web/app/assets/empty-state/project-settings/labels-dark.webp
diff --git a/apps/web/public/empty-state/project-settings/labels-light-resp.webp b/apps/web/app/assets/empty-state/project-settings/labels-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/labels-light-resp.webp
rename to apps/web/app/assets/empty-state/project-settings/labels-light-resp.webp
diff --git a/apps/web/public/empty-state/project-settings/labels-light.webp b/apps/web/app/assets/empty-state/project-settings/labels-light.webp
similarity index 100%
rename from apps/web/public/empty-state/project-settings/labels-light.webp
rename to apps/web/app/assets/empty-state/project-settings/labels-light.webp
diff --git a/apps/web/public/empty-state/project-settings/no-projects-dark.png b/apps/web/app/assets/empty-state/project-settings/no-projects-dark.png
similarity index 100%
rename from apps/web/public/empty-state/project-settings/no-projects-dark.png
rename to apps/web/app/assets/empty-state/project-settings/no-projects-dark.png
diff --git a/apps/web/public/empty-state/project-settings/no-projects-light.png b/apps/web/app/assets/empty-state/project-settings/no-projects-light.png
similarity index 100%
rename from apps/web/public/empty-state/project-settings/no-projects-light.png
rename to apps/web/app/assets/empty-state/project-settings/no-projects-light.png
diff --git a/apps/web/public/empty-state/project-settings/updates-dark.png b/apps/web/app/assets/empty-state/project-settings/updates-dark.png
similarity index 100%
rename from apps/web/public/empty-state/project-settings/updates-dark.png
rename to apps/web/app/assets/empty-state/project-settings/updates-dark.png
diff --git a/apps/web/public/empty-state/project-settings/updates-light.png b/apps/web/app/assets/empty-state/project-settings/updates-light.png
similarity index 100%
rename from apps/web/public/empty-state/project-settings/updates-light.png
rename to apps/web/app/assets/empty-state/project-settings/updates-light.png
diff --git a/apps/web/public/empty-state/project.svg b/apps/web/app/assets/empty-state/project.svg
similarity index 100%
rename from apps/web/public/empty-state/project.svg
rename to apps/web/app/assets/empty-state/project.svg
diff --git a/apps/web/public/empty-state/project/all-filters-dark.svg b/apps/web/app/assets/empty-state/project/all-filters-dark.svg
similarity index 100%
rename from apps/web/public/empty-state/project/all-filters-dark.svg
rename to apps/web/app/assets/empty-state/project/all-filters-dark.svg
diff --git a/apps/web/public/empty-state/project/all-filters-light.svg b/apps/web/app/assets/empty-state/project/all-filters-light.svg
similarity index 100%
rename from apps/web/public/empty-state/project/all-filters-light.svg
rename to apps/web/app/assets/empty-state/project/all-filters-light.svg
diff --git a/apps/web/public/empty-state/project/name-filter-dark.svg b/apps/web/app/assets/empty-state/project/name-filter-dark.svg
similarity index 100%
rename from apps/web/public/empty-state/project/name-filter-dark.svg
rename to apps/web/app/assets/empty-state/project/name-filter-dark.svg
diff --git a/apps/web/public/empty-state/project/name-filter-light.svg b/apps/web/app/assets/empty-state/project/name-filter-light.svg
similarity index 100%
rename from apps/web/public/empty-state/project/name-filter-light.svg
rename to apps/web/app/assets/empty-state/project/name-filter-light.svg
diff --git a/apps/web/public/empty-state/project/name-filter.svg b/apps/web/app/assets/empty-state/project/name-filter.svg
similarity index 100%
rename from apps/web/public/empty-state/project/name-filter.svg
rename to apps/web/app/assets/empty-state/project/name-filter.svg
diff --git a/apps/web/public/empty-state/recent_activity.svg b/apps/web/app/assets/empty-state/recent_activity.svg
similarity index 100%
rename from apps/web/public/empty-state/recent_activity.svg
rename to apps/web/app/assets/empty-state/recent_activity.svg
diff --git a/apps/web/public/empty-state/search/all-issue-view-dark.webp b/apps/web/app/assets/empty-state/search/all-issue-view-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/all-issue-view-dark.webp
rename to apps/web/app/assets/empty-state/search/all-issue-view-dark.webp
diff --git a/apps/web/public/empty-state/search/all-issues-view-light.webp b/apps/web/app/assets/empty-state/search/all-issues-view-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/all-issues-view-light.webp
rename to apps/web/app/assets/empty-state/search/all-issues-view-light.webp
diff --git a/apps/web/public/empty-state/search/archive-dark.webp b/apps/web/app/assets/empty-state/search/archive-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/archive-dark.webp
rename to apps/web/app/assets/empty-state/search/archive-dark.webp
diff --git a/apps/web/public/empty-state/search/archive-light.webp b/apps/web/app/assets/empty-state/search/archive-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/archive-light.webp
rename to apps/web/app/assets/empty-state/search/archive-light.webp
diff --git a/apps/web/public/empty-state/search/comments-dark.webp b/apps/web/app/assets/empty-state/search/comments-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/comments-dark.webp
rename to apps/web/app/assets/empty-state/search/comments-dark.webp
diff --git a/apps/web/public/empty-state/search/comments-light.webp b/apps/web/app/assets/empty-state/search/comments-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/comments-light.webp
rename to apps/web/app/assets/empty-state/search/comments-light.webp
diff --git a/apps/web/public/empty-state/search/issues-dark.webp b/apps/web/app/assets/empty-state/search/issues-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/issues-dark.webp
rename to apps/web/app/assets/empty-state/search/issues-dark.webp
diff --git a/apps/web/public/empty-state/search/issues-light.webp b/apps/web/app/assets/empty-state/search/issues-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/issues-light.webp
rename to apps/web/app/assets/empty-state/search/issues-light.webp
diff --git a/apps/web/public/empty-state/search/member-dark.webp b/apps/web/app/assets/empty-state/search/member-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/member-dark.webp
rename to apps/web/app/assets/empty-state/search/member-dark.webp
diff --git a/apps/web/public/empty-state/search/member-light.webp b/apps/web/app/assets/empty-state/search/member-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/member-light.webp
rename to apps/web/app/assets/empty-state/search/member-light.webp
diff --git a/apps/web/public/empty-state/search/notification-dark.webp b/apps/web/app/assets/empty-state/search/notification-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/notification-dark.webp
rename to apps/web/app/assets/empty-state/search/notification-dark.webp
diff --git a/apps/web/public/empty-state/search/notification-light.webp b/apps/web/app/assets/empty-state/search/notification-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/notification-light.webp
rename to apps/web/app/assets/empty-state/search/notification-light.webp
diff --git a/apps/web/public/empty-state/search/project-dark.webp b/apps/web/app/assets/empty-state/search/project-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/project-dark.webp
rename to apps/web/app/assets/empty-state/search/project-dark.webp
diff --git a/apps/web/public/empty-state/search/project-light.webp b/apps/web/app/assets/empty-state/search/project-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/project-light.webp
rename to apps/web/app/assets/empty-state/search/project-light.webp
diff --git a/apps/web/public/empty-state/search/search-dark.webp b/apps/web/app/assets/empty-state/search/search-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/search-dark.webp
rename to apps/web/app/assets/empty-state/search/search-dark.webp
diff --git a/apps/web/public/empty-state/search/search-light.webp b/apps/web/app/assets/empty-state/search/search-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/search-light.webp
rename to apps/web/app/assets/empty-state/search/search-light.webp
diff --git a/apps/web/public/empty-state/search/snooze-dark.webp b/apps/web/app/assets/empty-state/search/snooze-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/snooze-dark.webp
rename to apps/web/app/assets/empty-state/search/snooze-dark.webp
diff --git a/apps/web/public/empty-state/search/snooze-light.webp b/apps/web/app/assets/empty-state/search/snooze-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/snooze-light.webp
rename to apps/web/app/assets/empty-state/search/snooze-light.webp
diff --git a/apps/web/public/empty-state/search/views-dark.webp b/apps/web/app/assets/empty-state/search/views-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/search/views-dark.webp
rename to apps/web/app/assets/empty-state/search/views-dark.webp
diff --git a/apps/web/public/empty-state/search/views-light.webp b/apps/web/app/assets/empty-state/search/views-light.webp
similarity index 100%
rename from apps/web/public/empty-state/search/views-light.webp
rename to apps/web/app/assets/empty-state/search/views-light.webp
diff --git a/apps/web/public/empty-state/state_graph.svg b/apps/web/app/assets/empty-state/state_graph.svg
similarity index 100%
rename from apps/web/public/empty-state/state_graph.svg
rename to apps/web/app/assets/empty-state/state_graph.svg
diff --git a/apps/web/public/empty-state/stickies/stickies-dark.webp b/apps/web/app/assets/empty-state/stickies/stickies-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/stickies/stickies-dark.webp
rename to apps/web/app/assets/empty-state/stickies/stickies-dark.webp
diff --git a/apps/web/public/empty-state/stickies/stickies-light.webp b/apps/web/app/assets/empty-state/stickies/stickies-light.webp
similarity index 100%
rename from apps/web/public/empty-state/stickies/stickies-light.webp
rename to apps/web/app/assets/empty-state/stickies/stickies-light.webp
diff --git a/apps/web/public/empty-state/stickies/stickies-search-dark.webp b/apps/web/app/assets/empty-state/stickies/stickies-search-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/stickies/stickies-search-dark.webp
rename to apps/web/app/assets/empty-state/stickies/stickies-search-dark.webp
diff --git a/apps/web/public/empty-state/stickies/stickies-search-light.webp b/apps/web/app/assets/empty-state/stickies/stickies-search-light.webp
similarity index 100%
rename from apps/web/public/empty-state/stickies/stickies-search-light.webp
rename to apps/web/app/assets/empty-state/stickies/stickies-search-light.webp
diff --git a/apps/web/public/empty-state/view.svg b/apps/web/app/assets/empty-state/view.svg
similarity index 100%
rename from apps/web/public/empty-state/view.svg
rename to apps/web/app/assets/empty-state/view.svg
diff --git a/apps/web/public/empty-state/web-hook.svg b/apps/web/app/assets/empty-state/web-hook.svg
similarity index 100%
rename from apps/web/public/empty-state/web-hook.svg
rename to apps/web/app/assets/empty-state/web-hook.svg
diff --git a/apps/web/public/empty-state/wiki/all-dark.webp b/apps/web/app/assets/empty-state/wiki/all-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/all-dark.webp
rename to apps/web/app/assets/empty-state/wiki/all-dark.webp
diff --git a/apps/web/public/empty-state/wiki/all-filters-dark.svg b/apps/web/app/assets/empty-state/wiki/all-filters-dark.svg
similarity index 100%
rename from apps/web/public/empty-state/wiki/all-filters-dark.svg
rename to apps/web/app/assets/empty-state/wiki/all-filters-dark.svg
diff --git a/apps/web/public/empty-state/wiki/all-filters-light.svg b/apps/web/app/assets/empty-state/wiki/all-filters-light.svg
similarity index 100%
rename from apps/web/public/empty-state/wiki/all-filters-light.svg
rename to apps/web/app/assets/empty-state/wiki/all-filters-light.svg
diff --git a/apps/web/public/empty-state/wiki/all-light.webp b/apps/web/app/assets/empty-state/wiki/all-light.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/all-light.webp
rename to apps/web/app/assets/empty-state/wiki/all-light.webp
diff --git a/apps/web/public/empty-state/wiki/archived-dark.webp b/apps/web/app/assets/empty-state/wiki/archived-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/archived-dark.webp
rename to apps/web/app/assets/empty-state/wiki/archived-dark.webp
diff --git a/apps/web/public/empty-state/wiki/archived-light.webp b/apps/web/app/assets/empty-state/wiki/archived-light.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/archived-light.webp
rename to apps/web/app/assets/empty-state/wiki/archived-light.webp
diff --git a/apps/web/public/empty-state/wiki/name-filter-dark.svg b/apps/web/app/assets/empty-state/wiki/name-filter-dark.svg
similarity index 100%
rename from apps/web/public/empty-state/wiki/name-filter-dark.svg
rename to apps/web/app/assets/empty-state/wiki/name-filter-dark.svg
diff --git a/apps/web/public/empty-state/wiki/name-filter-light.svg b/apps/web/app/assets/empty-state/wiki/name-filter-light.svg
similarity index 100%
rename from apps/web/public/empty-state/wiki/name-filter-light.svg
rename to apps/web/app/assets/empty-state/wiki/name-filter-light.svg
diff --git a/apps/web/public/empty-state/wiki/navigation-pane/assets-dark.webp b/apps/web/app/assets/empty-state/wiki/navigation-pane/assets-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/navigation-pane/assets-dark.webp
rename to apps/web/app/assets/empty-state/wiki/navigation-pane/assets-dark.webp
diff --git a/apps/web/public/empty-state/wiki/navigation-pane/assets-light.webp b/apps/web/app/assets/empty-state/wiki/navigation-pane/assets-light.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/navigation-pane/assets-light.webp
rename to apps/web/app/assets/empty-state/wiki/navigation-pane/assets-light.webp
diff --git a/apps/web/public/empty-state/wiki/navigation-pane/outline-dark.webp b/apps/web/app/assets/empty-state/wiki/navigation-pane/outline-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/navigation-pane/outline-dark.webp
rename to apps/web/app/assets/empty-state/wiki/navigation-pane/outline-dark.webp
diff --git a/apps/web/public/empty-state/wiki/navigation-pane/outline-light.webp b/apps/web/app/assets/empty-state/wiki/navigation-pane/outline-light.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/navigation-pane/outline-light.webp
rename to apps/web/app/assets/empty-state/wiki/navigation-pane/outline-light.webp
diff --git a/apps/web/public/empty-state/wiki/private-dark.webp b/apps/web/app/assets/empty-state/wiki/private-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/private-dark.webp
rename to apps/web/app/assets/empty-state/wiki/private-dark.webp
diff --git a/apps/web/public/empty-state/wiki/private-light.webp b/apps/web/app/assets/empty-state/wiki/private-light.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/private-light.webp
rename to apps/web/app/assets/empty-state/wiki/private-light.webp
diff --git a/apps/web/public/empty-state/wiki/public-dark.webp b/apps/web/app/assets/empty-state/wiki/public-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/public-dark.webp
rename to apps/web/app/assets/empty-state/wiki/public-dark.webp
diff --git a/apps/web/public/empty-state/wiki/public-light.webp b/apps/web/app/assets/empty-state/wiki/public-light.webp
similarity index 100%
rename from apps/web/public/empty-state/wiki/public-light.webp
rename to apps/web/app/assets/empty-state/wiki/public-light.webp
diff --git a/apps/web/public/empty-state/workspace-draft/issue-dark.webp b/apps/web/app/assets/empty-state/workspace-draft/issue-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-draft/issue-dark.webp
rename to apps/web/app/assets/empty-state/workspace-draft/issue-dark.webp
diff --git a/apps/web/public/empty-state/workspace-draft/issue-light.webp b/apps/web/app/assets/empty-state/workspace-draft/issue-light.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-draft/issue-light.webp
rename to apps/web/app/assets/empty-state/workspace-draft/issue-light.webp
diff --git a/apps/web/public/empty-state/workspace-settings/api-tokens-dark-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/api-tokens-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/api-tokens-dark-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/api-tokens-dark-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/api-tokens-dark.webp b/apps/web/app/assets/empty-state/workspace-settings/api-tokens-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/api-tokens-dark.webp
rename to apps/web/app/assets/empty-state/workspace-settings/api-tokens-dark.webp
diff --git a/apps/web/public/empty-state/workspace-settings/api-tokens-light-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/api-tokens-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/api-tokens-light-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/api-tokens-light-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/api-tokens-light.webp b/apps/web/app/assets/empty-state/workspace-settings/api-tokens-light.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/api-tokens-light.webp
rename to apps/web/app/assets/empty-state/workspace-settings/api-tokens-light.webp
diff --git a/apps/web/public/empty-state/workspace-settings/exports-dark-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/exports-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/exports-dark-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/exports-dark-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/exports-dark.webp b/apps/web/app/assets/empty-state/workspace-settings/exports-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/exports-dark.webp
rename to apps/web/app/assets/empty-state/workspace-settings/exports-dark.webp
diff --git a/apps/web/public/empty-state/workspace-settings/exports-light-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/exports-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/exports-light-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/exports-light-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/exports-light.webp b/apps/web/app/assets/empty-state/workspace-settings/exports-light.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/exports-light.webp
rename to apps/web/app/assets/empty-state/workspace-settings/exports-light.webp
diff --git a/apps/web/public/empty-state/workspace-settings/imports-dark-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/imports-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/imports-dark-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/imports-dark-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/imports-dark.webp b/apps/web/app/assets/empty-state/workspace-settings/imports-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/imports-dark.webp
rename to apps/web/app/assets/empty-state/workspace-settings/imports-dark.webp
diff --git a/apps/web/public/empty-state/workspace-settings/imports-light-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/imports-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/imports-light-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/imports-light-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/imports-light.webp b/apps/web/app/assets/empty-state/workspace-settings/imports-light.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/imports-light.webp
rename to apps/web/app/assets/empty-state/workspace-settings/imports-light.webp
diff --git a/apps/web/public/empty-state/workspace-settings/integrations-dark-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/integrations-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/integrations-dark-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/integrations-dark-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/integrations-dark.webp b/apps/web/app/assets/empty-state/workspace-settings/integrations-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/integrations-dark.webp
rename to apps/web/app/assets/empty-state/workspace-settings/integrations-dark.webp
diff --git a/apps/web/public/empty-state/workspace-settings/integrations-light-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/integrations-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/integrations-light-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/integrations-light-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/integrations-light.webp b/apps/web/app/assets/empty-state/workspace-settings/integrations-light.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/integrations-light.webp
rename to apps/web/app/assets/empty-state/workspace-settings/integrations-light.webp
diff --git a/apps/web/public/empty-state/workspace-settings/webhooks-dark-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/webhooks-dark-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/webhooks-dark-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/webhooks-dark-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/webhooks-dark.webp b/apps/web/app/assets/empty-state/workspace-settings/webhooks-dark.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/webhooks-dark.webp
rename to apps/web/app/assets/empty-state/workspace-settings/webhooks-dark.webp
diff --git a/apps/web/public/empty-state/workspace-settings/webhooks-light-resp.webp b/apps/web/app/assets/empty-state/workspace-settings/webhooks-light-resp.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/webhooks-light-resp.webp
rename to apps/web/app/assets/empty-state/workspace-settings/webhooks-light-resp.webp
diff --git a/apps/web/public/empty-state/workspace-settings/webhooks-light.webp b/apps/web/app/assets/empty-state/workspace-settings/webhooks-light.webp
similarity index 100%
rename from apps/web/public/empty-state/workspace-settings/webhooks-light.webp
rename to apps/web/app/assets/empty-state/workspace-settings/webhooks-light.webp
diff --git a/apps/web/public/favicon/apple-touch-icon.png b/apps/web/app/assets/favicon/apple-touch-icon.png
similarity index 100%
rename from apps/web/public/favicon/apple-touch-icon.png
rename to apps/web/app/assets/favicon/apple-touch-icon.png
diff --git a/apps/web/public/favicon/favicon-16x16.png b/apps/web/app/assets/favicon/favicon-16x16.png
similarity index 100%
rename from apps/web/public/favicon/favicon-16x16.png
rename to apps/web/app/assets/favicon/favicon-16x16.png
diff --git a/apps/web/public/favicon/favicon-32x32.png b/apps/web/app/assets/favicon/favicon-32x32.png
similarity index 100%
rename from apps/web/public/favicon/favicon-32x32.png
rename to apps/web/app/assets/favicon/favicon-32x32.png
diff --git a/apps/web/public/favicon/favicon.ico b/apps/web/app/assets/favicon/favicon.ico
similarity index 100%
rename from apps/web/public/favicon/favicon.ico
rename to apps/web/app/assets/favicon/favicon.ico
diff --git a/apps/web/public/fonts/inter/bold-italic.ttf b/apps/web/app/assets/fonts/inter/bold-italic.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/bold-italic.ttf
rename to apps/web/app/assets/fonts/inter/bold-italic.ttf
diff --git a/apps/web/public/fonts/inter/bold.ttf b/apps/web/app/assets/fonts/inter/bold.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/bold.ttf
rename to apps/web/app/assets/fonts/inter/bold.ttf
diff --git a/apps/web/public/fonts/inter/heavy-italic.ttf b/apps/web/app/assets/fonts/inter/heavy-italic.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/heavy-italic.ttf
rename to apps/web/app/assets/fonts/inter/heavy-italic.ttf
diff --git a/apps/web/public/fonts/inter/heavy.ttf b/apps/web/app/assets/fonts/inter/heavy.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/heavy.ttf
rename to apps/web/app/assets/fonts/inter/heavy.ttf
diff --git a/apps/web/public/fonts/inter/light-italic.ttf b/apps/web/app/assets/fonts/inter/light-italic.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/light-italic.ttf
rename to apps/web/app/assets/fonts/inter/light-italic.ttf
diff --git a/apps/web/public/fonts/inter/light.ttf b/apps/web/app/assets/fonts/inter/light.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/light.ttf
rename to apps/web/app/assets/fonts/inter/light.ttf
diff --git a/apps/web/public/fonts/inter/medium-italic.ttf b/apps/web/app/assets/fonts/inter/medium-italic.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/medium-italic.ttf
rename to apps/web/app/assets/fonts/inter/medium-italic.ttf
diff --git a/apps/web/public/fonts/inter/medium.ttf b/apps/web/app/assets/fonts/inter/medium.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/medium.ttf
rename to apps/web/app/assets/fonts/inter/medium.ttf
diff --git a/apps/web/public/fonts/inter/regular-italic.ttf b/apps/web/app/assets/fonts/inter/regular-italic.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/regular-italic.ttf
rename to apps/web/app/assets/fonts/inter/regular-italic.ttf
diff --git a/apps/web/public/fonts/inter/regular.ttf b/apps/web/app/assets/fonts/inter/regular.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/regular.ttf
rename to apps/web/app/assets/fonts/inter/regular.ttf
diff --git a/apps/web/public/fonts/inter/semibold-italic.ttf b/apps/web/app/assets/fonts/inter/semibold-italic.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/semibold-italic.ttf
rename to apps/web/app/assets/fonts/inter/semibold-italic.ttf
diff --git a/apps/web/public/fonts/inter/semibold.ttf b/apps/web/app/assets/fonts/inter/semibold.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/semibold.ttf
rename to apps/web/app/assets/fonts/inter/semibold.ttf
diff --git a/apps/web/public/fonts/inter/thin-italic.ttf b/apps/web/app/assets/fonts/inter/thin-italic.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/thin-italic.ttf
rename to apps/web/app/assets/fonts/inter/thin-italic.ttf
diff --git a/apps/web/public/fonts/inter/thin.ttf b/apps/web/app/assets/fonts/inter/thin.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/thin.ttf
rename to apps/web/app/assets/fonts/inter/thin.ttf
diff --git a/apps/web/public/fonts/inter/ultrabold-italic.ttf b/apps/web/app/assets/fonts/inter/ultrabold-italic.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/ultrabold-italic.ttf
rename to apps/web/app/assets/fonts/inter/ultrabold-italic.ttf
diff --git a/apps/web/public/fonts/inter/ultrabold.ttf b/apps/web/app/assets/fonts/inter/ultrabold.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/ultrabold.ttf
rename to apps/web/app/assets/fonts/inter/ultrabold.ttf
diff --git a/apps/web/public/fonts/inter/ultralight-italic.ttf b/apps/web/app/assets/fonts/inter/ultralight-italic.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/ultralight-italic.ttf
rename to apps/web/app/assets/fonts/inter/ultralight-italic.ttf
diff --git a/apps/web/public/fonts/inter/ultralight.ttf b/apps/web/app/assets/fonts/inter/ultralight.ttf
similarity index 100%
rename from apps/web/public/fonts/inter/ultralight.ttf
rename to apps/web/app/assets/fonts/inter/ultralight.ttf
diff --git a/apps/web/public/icons/icon-180x180.png b/apps/web/app/assets/icons/icon-180x180.png
similarity index 100%
rename from apps/web/public/icons/icon-180x180.png
rename to apps/web/app/assets/icons/icon-180x180.png
diff --git a/apps/web/app/assets/icons/icon-512x512.png b/apps/web/app/assets/icons/icon-512x512.png
new file mode 100644
index 000000000..4c070d079
Binary files /dev/null and b/apps/web/app/assets/icons/icon-512x512.png differ
diff --git a/apps/web/public/images/logo-spinner-dark.gif b/apps/web/app/assets/images/logo-spinner-dark.gif
similarity index 100%
rename from apps/web/public/images/logo-spinner-dark.gif
rename to apps/web/app/assets/images/logo-spinner-dark.gif
diff --git a/apps/web/public/images/logo-spinner-light.gif b/apps/web/app/assets/images/logo-spinner-light.gif
similarity index 100%
rename from apps/web/public/images/logo-spinner-light.gif
rename to apps/web/app/assets/images/logo-spinner-light.gif
diff --git a/apps/web/public/instance-not-ready.webp b/apps/web/app/assets/instance-not-ready.webp
similarity index 100%
rename from apps/web/public/instance-not-ready.webp
rename to apps/web/app/assets/instance-not-ready.webp
diff --git a/apps/web/public/instance-setup-done.webp b/apps/web/app/assets/instance-setup-done.webp
similarity index 100%
rename from apps/web/public/instance-setup-done.webp
rename to apps/web/app/assets/instance-setup-done.webp
diff --git a/apps/web/public/instance/maintenance-mode-dark.svg b/apps/web/app/assets/instance/maintenance-mode-dark.svg
similarity index 100%
rename from apps/web/public/instance/maintenance-mode-dark.svg
rename to apps/web/app/assets/instance/maintenance-mode-dark.svg
diff --git a/apps/web/public/instance/maintenance-mode-light.svg b/apps/web/app/assets/instance/maintenance-mode-light.svg
similarity index 100%
rename from apps/web/public/instance/maintenance-mode-light.svg
rename to apps/web/app/assets/instance/maintenance-mode-light.svg
diff --git a/apps/web/public/logos/gitea-logo.svg b/apps/web/app/assets/logos/gitea-logo.svg
similarity index 100%
rename from apps/web/public/logos/gitea-logo.svg
rename to apps/web/app/assets/logos/gitea-logo.svg
diff --git a/apps/web/public/logos/github-black.png b/apps/web/app/assets/logos/github-black.png
similarity index 100%
rename from apps/web/public/logos/github-black.png
rename to apps/web/app/assets/logos/github-black.png
diff --git a/apps/web/public/logos/github-dark.svg b/apps/web/app/assets/logos/github-dark.svg
similarity index 100%
rename from apps/web/public/logos/github-dark.svg
rename to apps/web/app/assets/logos/github-dark.svg
diff --git a/apps/web/public/logos/github-square.png b/apps/web/app/assets/logos/github-square.png
similarity index 100%
rename from apps/web/public/logos/github-square.png
rename to apps/web/app/assets/logos/github-square.png
diff --git a/apps/web/public/logos/github-white.png b/apps/web/app/assets/logos/github-white.png
similarity index 100%
rename from apps/web/public/logos/github-white.png
rename to apps/web/app/assets/logos/github-white.png
diff --git a/apps/web/public/logos/gitlab-logo.svg b/apps/web/app/assets/logos/gitlab-logo.svg
similarity index 100%
rename from apps/web/public/logos/gitlab-logo.svg
rename to apps/web/app/assets/logos/gitlab-logo.svg
diff --git a/apps/web/public/logos/google-logo.svg b/apps/web/app/assets/logos/google-logo.svg
similarity index 100%
rename from apps/web/public/logos/google-logo.svg
rename to apps/web/app/assets/logos/google-logo.svg
diff --git a/apps/web/public/mac-command.svg b/apps/web/app/assets/mac-command.svg
similarity index 100%
rename from apps/web/public/mac-command.svg
rename to apps/web/app/assets/mac-command.svg
diff --git a/apps/web/public/og-image.png b/apps/web/app/assets/og-image.png
similarity index 100%
rename from apps/web/public/og-image.png
rename to apps/web/app/assets/og-image.png
diff --git a/apps/web/public/onboarding/cycles.webp b/apps/web/app/assets/onboarding/cycles.webp
similarity index 100%
rename from apps/web/public/onboarding/cycles.webp
rename to apps/web/app/assets/onboarding/cycles.webp
diff --git a/apps/web/public/onboarding/issues.webp b/apps/web/app/assets/onboarding/issues.webp
similarity index 100%
rename from apps/web/public/onboarding/issues.webp
rename to apps/web/app/assets/onboarding/issues.webp
diff --git a/apps/web/public/onboarding/modules.webp b/apps/web/app/assets/onboarding/modules.webp
similarity index 100%
rename from apps/web/public/onboarding/modules.webp
rename to apps/web/app/assets/onboarding/modules.webp
diff --git a/apps/web/public/onboarding/onboarding-pages.webp b/apps/web/app/assets/onboarding/onboarding-pages.webp
similarity index 100%
rename from apps/web/public/onboarding/onboarding-pages.webp
rename to apps/web/app/assets/onboarding/onboarding-pages.webp
diff --git a/apps/web/public/onboarding/pages.webp b/apps/web/app/assets/onboarding/pages.webp
similarity index 100%
rename from apps/web/public/onboarding/pages.webp
rename to apps/web/app/assets/onboarding/pages.webp
diff --git a/apps/web/public/onboarding/views.webp b/apps/web/app/assets/onboarding/views.webp
similarity index 100%
rename from apps/web/public/onboarding/views.webp
rename to apps/web/app/assets/onboarding/views.webp
diff --git a/apps/web/public/plane-logos/black-horizontal-with-blue-logo.png b/apps/web/app/assets/plane-logos/black-horizontal-with-blue-logo.png
similarity index 100%
rename from apps/web/public/plane-logos/black-horizontal-with-blue-logo.png
rename to apps/web/app/assets/plane-logos/black-horizontal-with-blue-logo.png
diff --git a/apps/web/public/plane-logos/blue-without-text.png b/apps/web/app/assets/plane-logos/blue-without-text.png
similarity index 100%
rename from apps/web/public/plane-logos/blue-without-text.png
rename to apps/web/app/assets/plane-logos/blue-without-text.png
diff --git a/apps/web/public/plane-logos/white-horizontal-with-blue-logo.png b/apps/web/app/assets/plane-logos/white-horizontal-with-blue-logo.png
similarity index 100%
rename from apps/web/public/plane-logos/white-horizontal-with-blue-logo.png
rename to apps/web/app/assets/plane-logos/white-horizontal-with-blue-logo.png
diff --git a/apps/web/public/plane-logos/white-horizontal.svg b/apps/web/app/assets/plane-logos/white-horizontal.svg
similarity index 100%
rename from apps/web/public/plane-logos/white-horizontal.svg
rename to apps/web/app/assets/plane-logos/white-horizontal.svg
diff --git a/apps/web/public/plane-takeoff.png b/apps/web/app/assets/plane-takeoff.png
similarity index 100%
rename from apps/web/public/plane-takeoff.png
rename to apps/web/app/assets/plane-takeoff.png
diff --git a/apps/web/public/services/csv.svg b/apps/web/app/assets/services/csv.svg
similarity index 100%
rename from apps/web/public/services/csv.svg
rename to apps/web/app/assets/services/csv.svg
diff --git a/apps/web/public/services/excel.svg b/apps/web/app/assets/services/excel.svg
similarity index 100%
rename from apps/web/public/services/excel.svg
rename to apps/web/app/assets/services/excel.svg
diff --git a/apps/web/public/services/github.png b/apps/web/app/assets/services/github.png
similarity index 100%
rename from apps/web/public/services/github.png
rename to apps/web/app/assets/services/github.png
diff --git a/apps/web/public/services/jira.svg b/apps/web/app/assets/services/jira.svg
similarity index 100%
rename from apps/web/public/services/jira.svg
rename to apps/web/app/assets/services/jira.svg
diff --git a/apps/web/public/services/json.svg b/apps/web/app/assets/services/json.svg
similarity index 100%
rename from apps/web/public/services/json.svg
rename to apps/web/app/assets/services/json.svg
diff --git a/apps/web/public/services/slack.png b/apps/web/app/assets/services/slack.png
similarity index 100%
rename from apps/web/public/services/slack.png
rename to apps/web/app/assets/services/slack.png
diff --git a/apps/web/public/user.png b/apps/web/app/assets/user.png
similarity index 100%
rename from apps/web/public/user.png
rename to apps/web/app/assets/user.png
diff --git a/apps/web/public/users/user-1.png b/apps/web/app/assets/users/user-1.png
similarity index 100%
rename from apps/web/public/users/user-1.png
rename to apps/web/app/assets/users/user-1.png
diff --git a/apps/web/public/users/user-2.png b/apps/web/app/assets/users/user-2.png
similarity index 100%
rename from apps/web/public/users/user-2.png
rename to apps/web/app/assets/users/user-2.png
diff --git a/apps/web/public/users/user-profile-cover-default-img.png b/apps/web/app/assets/users/user-profile-cover-default-img.png
similarity index 100%
rename from apps/web/public/users/user-profile-cover-default-img.png
rename to apps/web/app/assets/users/user-profile-cover-default-img.png
diff --git a/apps/web/public/workspace-active-cycles/cta-l-1-dark.webp b/apps/web/app/assets/workspace-active-cycles/cta-l-1-dark.webp
similarity index 100%
rename from apps/web/public/workspace-active-cycles/cta-l-1-dark.webp
rename to apps/web/app/assets/workspace-active-cycles/cta-l-1-dark.webp
diff --git a/apps/web/public/workspace-active-cycles/cta-l-1-light.webp b/apps/web/app/assets/workspace-active-cycles/cta-l-1-light.webp
similarity index 100%
rename from apps/web/public/workspace-active-cycles/cta-l-1-light.webp
rename to apps/web/app/assets/workspace-active-cycles/cta-l-1-light.webp
diff --git a/apps/web/public/workspace-active-cycles/cta-r-1-dark.webp b/apps/web/app/assets/workspace-active-cycles/cta-r-1-dark.webp
similarity index 100%
rename from apps/web/public/workspace-active-cycles/cta-r-1-dark.webp
rename to apps/web/app/assets/workspace-active-cycles/cta-r-1-dark.webp
diff --git a/apps/web/public/workspace-active-cycles/cta-r-1-light.webp b/apps/web/app/assets/workspace-active-cycles/cta-r-1-light.webp
similarity index 100%
rename from apps/web/public/workspace-active-cycles/cta-r-1-light.webp
rename to apps/web/app/assets/workspace-active-cycles/cta-r-1-light.webp
diff --git a/apps/web/public/workspace-active-cycles/cta-r-2-dark.webp b/apps/web/app/assets/workspace-active-cycles/cta-r-2-dark.webp
similarity index 100%
rename from apps/web/public/workspace-active-cycles/cta-r-2-dark.webp
rename to apps/web/app/assets/workspace-active-cycles/cta-r-2-dark.webp
diff --git a/apps/web/public/workspace-active-cycles/cta-r-2-light.webp b/apps/web/app/assets/workspace-active-cycles/cta-r-2-light.webp
similarity index 100%
rename from apps/web/public/workspace-active-cycles/cta-r-2-light.webp
rename to apps/web/app/assets/workspace-active-cycles/cta-r-2-light.webp
diff --git a/apps/web/public/workspace/workspace-creation-disabled.png b/apps/web/app/assets/workspace/workspace-creation-disabled.png
similarity index 100%
rename from apps/web/public/workspace/workspace-creation-disabled.png
rename to apps/web/app/assets/workspace/workspace-creation-disabled.png
diff --git a/apps/web/public/workspace/workspace-not-available.png b/apps/web/app/assets/workspace/workspace-not-available.png
similarity index 100%
rename from apps/web/public/workspace/workspace-not-available.png
rename to apps/web/app/assets/workspace/workspace-not-available.png
diff --git a/apps/web/app/compat/next/helper.ts b/apps/web/app/compat/next/helper.ts
new file mode 100644
index 000000000..fe1a98446
--- /dev/null
+++ b/apps/web/app/compat/next/helper.ts
@@ -0,0 +1,33 @@
+/**
+ * Ensures that a URL has a trailing slash while preserving query parameters and fragments
+ * @param url - The URL to process
+ * @returns The URL with a trailing slash added to the pathname (if not already present)
+ */
+export function ensureTrailingSlash(url: string): string {
+ try {
+ // Handle relative URLs by creating a URL object with a dummy base
+ const urlObj = new URL(url, "http://dummy.com");
+
+ // Don't modify root path
+ if (urlObj.pathname === "/") {
+ return url;
+ }
+
+ // Add trailing slash if it doesn't exist
+ if (!urlObj.pathname.endsWith("/")) {
+ urlObj.pathname += "/";
+ }
+
+ // For relative URLs, return just the path + search + hash
+ if (url.startsWith("/")) {
+ return urlObj.pathname + urlObj.search + urlObj.hash;
+ }
+
+ // For absolute URLs, return the full URL
+ return urlObj.toString();
+ } catch (error) {
+ // If URL parsing fails, return the original URL
+ console.warn("Failed to parse URL for trailing slash enforcement:", url, error);
+ return url;
+ }
+}
diff --git a/apps/web/app/compat/next/image.tsx b/apps/web/app/compat/next/image.tsx
new file mode 100644
index 000000000..f9a858db2
--- /dev/null
+++ b/apps/web/app/compat/next/image.tsx
@@ -0,0 +1,33 @@
+"use client";
+
+import React from "react";
+
+// Minimal shim so code using next/image compiles under React Router + Vite
+// without changing call sites. It just renders a native img.
+
+type NextImageProps = React.ImgHTMLAttributes & {
+ src: string;
+ fill?: boolean;
+ priority?: boolean;
+ quality?: number;
+ placeholder?: "blur" | "empty";
+ blurDataURL?: string;
+};
+
+const Image: React.FC = ({
+ src,
+ alt = "",
+ fill,
+ priority: _priority,
+ quality: _quality,
+ placeholder: _placeholder,
+ blurDataURL: _blurDataURL,
+ ...rest
+}) => {
+ // If fill is true, apply object-fit styles
+ const style = fill ? { objectFit: "cover" as const, width: "100%", height: "100%" } : rest.style;
+
+ return ;
+};
+
+export default Image;
diff --git a/apps/web/app/compat/next/link.tsx b/apps/web/app/compat/next/link.tsx
new file mode 100644
index 000000000..4f4236327
--- /dev/null
+++ b/apps/web/app/compat/next/link.tsx
@@ -0,0 +1,24 @@
+"use client";
+
+import React from "react";
+import { Link as RRLink } from "react-router";
+import { ensureTrailingSlash } from "./helper";
+
+type NextLinkProps = React.ComponentProps<"a"> & {
+ href: string;
+ replace?: boolean;
+ prefetch?: boolean; // next.js prop, ignored
+ scroll?: boolean; // next.js prop, ignored
+ shallow?: boolean; // next.js prop, ignored
+};
+
+const Link: React.FC = ({
+ href,
+ replace,
+ prefetch: _prefetch,
+ scroll: _scroll,
+ shallow: _shallow,
+ ...rest
+}) => ;
+
+export default Link;
diff --git a/apps/web/app/compat/next/navigation.ts b/apps/web/app/compat/next/navigation.ts
new file mode 100644
index 000000000..ecb076fed
--- /dev/null
+++ b/apps/web/app/compat/next/navigation.ts
@@ -0,0 +1,48 @@
+"use client";
+
+import { useMemo } from "react";
+import { useLocation, useNavigate, useParams as useParamsRR, useSearchParams as useSearchParamsRR } from "react-router";
+import { ensureTrailingSlash } from "./helper";
+
+export function useRouter() {
+ const navigate = useNavigate();
+ return useMemo(
+ () => ({
+ push: (to: string) => {
+ // Defer navigation to avoid state updates during render
+ setTimeout(() => navigate(ensureTrailingSlash(to)), 0);
+ },
+ replace: (to: string) => {
+ // Defer navigation to avoid state updates during render
+ setTimeout(() => navigate(ensureTrailingSlash(to), { replace: true }), 0);
+ },
+ back: () => {
+ setTimeout(() => navigate(-1), 0);
+ },
+ forward: () => {
+ setTimeout(() => navigate(1), 0);
+ },
+ refresh: () => {
+ location.reload();
+ },
+ prefetch: async (_to: string) => {
+ // no-op in this shim
+ },
+ }),
+ [navigate]
+ );
+}
+
+export function usePathname(): string {
+ const { pathname } = useLocation();
+ return pathname;
+}
+
+export function useSearchParams(): URLSearchParams {
+ const [searchParams] = useSearchParamsRR();
+ return searchParams;
+}
+
+export function useParams() {
+ return useParamsRR();
+}
diff --git a/apps/web/app/compat/next/script.tsx b/apps/web/app/compat/next/script.tsx
new file mode 100644
index 000000000..2baa63f45
--- /dev/null
+++ b/apps/web/app/compat/next/script.tsx
@@ -0,0 +1,55 @@
+"use client";
+
+import { useEffect } from "react";
+
+type ScriptProps = {
+ src?: string;
+ id?: string;
+ strategy?: "beforeInteractive" | "afterInteractive" | "lazyOnload" | "worker";
+ onLoad?: () => void;
+ onError?: () => void;
+ children?: string;
+ defer?: boolean;
+ [key: string]: any;
+};
+
+// Minimal shim for next/script that creates a script tag
+const Script: React.FC = ({ src, id, strategy: _strategy, onLoad, onError, children, ...rest }) => {
+ useEffect(() => {
+ if (src) {
+ const script = document.createElement("script");
+ if (id) script.id = id;
+ script.src = src;
+ if (onLoad) script.onload = onLoad;
+ if (onError) script.onerror = onError;
+ Object.keys(rest).forEach((key) => {
+ script.setAttribute(key, rest[key]);
+ });
+ document.body.appendChild(script);
+
+ return () => {
+ if (script.parentNode) {
+ document.body.removeChild(script);
+ }
+ };
+ } else if (children) {
+ const script = document.createElement("script");
+ if (id) script.id = id;
+ script.textContent = children;
+ Object.keys(rest).forEach((key) => {
+ script.setAttribute(key, rest[key]);
+ });
+ document.body.appendChild(script);
+
+ return () => {
+ if (script.parentNode) {
+ document.body.removeChild(script);
+ }
+ };
+ }
+ }, [src, id, children, onLoad, onError, rest]);
+
+ return null;
+};
+
+export default Script;
diff --git a/apps/web/app/error/dev.tsx b/apps/web/app/error/dev.tsx
new file mode 100644
index 000000000..d4c30165b
--- /dev/null
+++ b/apps/web/app/error/dev.tsx
@@ -0,0 +1,155 @@
+"use client";
+
+// plane imports
+import { isRouteErrorResponse } from "react-router";
+import { Banner } from "@plane/propel/banner";
+import { Button } from "@plane/propel/button";
+import { Card, ECardVariant } from "@plane/propel/card";
+import { InfoFillIcon } from "@plane/propel/icons";
+
+interface ErrorActionsProps {
+ onGoHome: () => void;
+ onReload?: () => void;
+}
+
+const ErrorActions: React.FC = ({ onGoHome, onReload }) => (
+