diff --git a/docs/SEO.md b/docs/SEO.md index 8aaf4fb..ab08ddf 100644 --- a/docs/SEO.md +++ b/docs/SEO.md @@ -88,7 +88,7 @@ When adding, removing, or renaming public indexed pages, update all of these: Public page metadata helper: ```txt -frontend/src/features/landing/publicPageMeta.js +frontend/src/static/publicPageMeta.js ``` ## Server Routing diff --git a/docs/TASKS/app-shell/002-move-public-static-pages.md b/docs/TASKS/app-shell/002-move-public-static-pages.md new file mode 100644 index 0000000..df83f1e --- /dev/null +++ b/docs/TASKS/app-shell/002-move-public-static-pages.md @@ -0,0 +1,19 @@ +# Task: Move public static pages + +## Goal + +Move public marketing/static page code out of `frontend/src/features/landing` into `frontend/src/static` so it is separated from application feature modules. + +## Relevant Files + +- `frontend/src/router/router.js` +- `frontend/src/entry-public-ssr.js` +- `frontend/src/static/**` +- `docs/SEO.md` + +## Validation + +```bash +cd frontend +npm run build +``` diff --git a/frontend/src/entry-public-ssr.js b/frontend/src/entry-public-ssr.js index 3df0466..be60f5f 100644 --- a/frontend/src/entry-public-ssr.js +++ b/frontend/src/entry-public-ssr.js @@ -6,12 +6,12 @@ import { createI18n } from 'vue-i18n'; import { createPinia } from 'pinia'; import en from '@/locales/en.json'; import fr from '@/locales/fr.json'; -import Landing from '@/features/landing/views/Landing.vue'; -import ProductPage from '@/features/landing/views/ProductPage.vue'; -import ProductFeaturePage from '@/features/landing/views/ProductFeaturePage.vue'; -import PricingPage from '@/features/landing/views/PricingPage.vue'; -import BlogsPage from '@/features/landing/views/BlogsPage.vue'; -import GuidesPage from '@/features/landing/views/GuidesPage.vue'; +import Landing from '@/static/views/Landing.vue'; +import ProductPage from '@/static/views/ProductPage.vue'; +import ProductFeaturePage from '@/static/views/ProductFeaturePage.vue'; +import PricingPage from '@/static/views/PricingPage.vue'; +import BlogsPage from '@/static/views/BlogsPage.vue'; +import GuidesPage from '@/static/views/GuidesPage.vue'; import './assets/main.css'; const publicRoutes = [ diff --git a/frontend/src/router/router.js b/frontend/src/router/router.js index c2c3076..6ef7c3a 100644 --- a/frontend/src/router/router.js +++ b/frontend/src/router/router.js @@ -2,12 +2,12 @@ import { useAuthStore } from '@/features/auth/stores/authStore.js'; import { createRouter, createWebHistory } from 'vue-router'; const LoginView = () => import('@/features/auth/views/LoginView.vue'); -const Landing = () => import('@/features/landing/views/Landing.vue'); -const ProductPage = () => import('@/features/landing/views/ProductPage.vue'); -const ProductFeaturePage = () => import('@/features/landing/views/ProductFeaturePage.vue'); -const PricingPage = () => import('@/features/landing/views/PricingPage.vue'); -const BlogsPage = () => import('@/features/landing/views/BlogsPage.vue'); -const GuidesPage = () => import('@/features/landing/views/GuidesPage.vue'); +const Landing = () => import('@/static/views/Landing.vue'); +const ProductPage = () => import('@/static/views/ProductPage.vue'); +const ProductFeaturePage = () => import('@/static/views/ProductFeaturePage.vue'); +const PricingPage = () => import('@/static/views/PricingPage.vue'); +const BlogsPage = () => import('@/static/views/BlogsPage.vue'); +const GuidesPage = () => import('@/static/views/GuidesPage.vue'); const RegisterView = () => import('@/features/auth/views/RegisterView.vue'); const ForgotPasswordView = () => import('@/features/auth/views/ForgotPasswordView.vue'); const ResetPasswordView = () => import('@/features/auth/views/ResetPasswordView.vue'); diff --git a/frontend/src/features/landing/components/LandingSiteMenu.vue b/frontend/src/static/components/LandingSiteMenu.vue similarity index 99% rename from frontend/src/features/landing/components/LandingSiteMenu.vue rename to frontend/src/static/components/LandingSiteMenu.vue index 4e032ed..64f8dd7 100644 --- a/frontend/src/features/landing/components/LandingSiteMenu.vue +++ b/frontend/src/static/components/LandingSiteMenu.vue @@ -125,7 +125,7 @@ import { computed, onBeforeUnmount, onMounted, ref } from 'vue'; import { useI18n } from 'vue-i18n'; import { useAuthStore } from '@/features/auth/stores/authStore.js'; - import { productFeatureItems } from '@/features/landing/productFeatures.js'; + import { productFeatureItems } from '@/static/productFeatures.js'; const allowedLocales = ['en', 'fr']; const localeStorageKey = 'user-locale'; diff --git a/frontend/src/features/landing/productFeatures.js b/frontend/src/static/productFeatures.js similarity index 100% rename from frontend/src/features/landing/productFeatures.js rename to frontend/src/static/productFeatures.js diff --git a/frontend/src/features/landing/publicPageMeta.js b/frontend/src/static/publicPageMeta.js similarity index 100% rename from frontend/src/features/landing/publicPageMeta.js rename to frontend/src/static/publicPageMeta.js diff --git a/frontend/src/features/landing/svg/Facebook.vue b/frontend/src/static/svg/Facebook.vue similarity index 100% rename from frontend/src/features/landing/svg/Facebook.vue rename to frontend/src/static/svg/Facebook.vue diff --git a/frontend/src/features/landing/svg/Hutopy.vue b/frontend/src/static/svg/Hutopy.vue similarity index 100% rename from frontend/src/features/landing/svg/Hutopy.vue rename to frontend/src/static/svg/Hutopy.vue diff --git a/frontend/src/features/landing/svg/Instagram.vue b/frontend/src/static/svg/Instagram.vue similarity index 100% rename from frontend/src/features/landing/svg/Instagram.vue rename to frontend/src/static/svg/Instagram.vue diff --git a/frontend/src/features/landing/svg/Linkedin.vue b/frontend/src/static/svg/Linkedin.vue similarity index 100% rename from frontend/src/features/landing/svg/Linkedin.vue rename to frontend/src/static/svg/Linkedin.vue diff --git a/frontend/src/features/landing/svg/Reddit.vue b/frontend/src/static/svg/Reddit.vue similarity index 100% rename from frontend/src/features/landing/svg/Reddit.vue rename to frontend/src/static/svg/Reddit.vue diff --git a/frontend/src/features/landing/svg/Tiktok.vue b/frontend/src/static/svg/Tiktok.vue similarity index 100% rename from frontend/src/features/landing/svg/Tiktok.vue rename to frontend/src/static/svg/Tiktok.vue diff --git a/frontend/src/features/landing/svg/Web.vue b/frontend/src/static/svg/Web.vue similarity index 100% rename from frontend/src/features/landing/svg/Web.vue rename to frontend/src/static/svg/Web.vue diff --git a/frontend/src/features/landing/svg/X.vue b/frontend/src/static/svg/X.vue similarity index 100% rename from frontend/src/features/landing/svg/X.vue rename to frontend/src/static/svg/X.vue diff --git a/frontend/src/features/landing/svg/Youtube.vue b/frontend/src/static/svg/Youtube.vue similarity index 100% rename from frontend/src/features/landing/svg/Youtube.vue rename to frontend/src/static/svg/Youtube.vue diff --git a/frontend/src/features/landing/views/BlogsPage.vue b/frontend/src/static/views/BlogsPage.vue similarity index 90% rename from frontend/src/features/landing/views/BlogsPage.vue rename to frontend/src/static/views/BlogsPage.vue index fbed8e5..1f6b3fa 100644 --- a/frontend/src/features/landing/views/BlogsPage.vue +++ b/frontend/src/static/views/BlogsPage.vue @@ -1,8 +1,8 @@