From 597f2ec3797dc15e646485f3ee8f9cfd62269813 Mon Sep 17 00:00:00 2001 From: Vantz Stockwell Date: Sat, 14 Feb 2026 23:45:34 -0500 Subject: [PATCH] feat: Build 5 marketing pages with layout and routing Landing page (hero, problem, shift, capabilities, wipe orchestration, infrastructure, public sites, CTA), Pricing (3-tier cards), How It Works (4-step walkthrough + architecture diagram), FAQ (10-item accordion), Roadmap (6-phase timeline). All under /site/* with MarketingLayout (sticky nav, 4-column footer). Routes wired, build clean. Co-Authored-By: Claude Opus 4.6 --- .../src/components/layout/MarketingLayout.vue | 76 +++++ frontend/src/router/index.ts | 33 ++ frontend/src/views/marketing/FaqView.vue | 101 ++++++ .../src/views/marketing/HowItWorksView.vue | 150 +++++++++ frontend/src/views/marketing/LandingView.vue | 287 ++++++++++++++++++ frontend/src/views/marketing/PricingView.vue | 129 ++++++++ frontend/src/views/marketing/RoadmapView.vue | 146 +++++++++ 7 files changed, 922 insertions(+) create mode 100644 frontend/src/components/layout/MarketingLayout.vue create mode 100644 frontend/src/views/marketing/FaqView.vue create mode 100644 frontend/src/views/marketing/HowItWorksView.vue create mode 100644 frontend/src/views/marketing/LandingView.vue create mode 100644 frontend/src/views/marketing/PricingView.vue create mode 100644 frontend/src/views/marketing/RoadmapView.vue diff --git a/frontend/src/components/layout/MarketingLayout.vue b/frontend/src/components/layout/MarketingLayout.vue new file mode 100644 index 0000000..966c9fb --- /dev/null +++ b/frontend/src/components/layout/MarketingLayout.vue @@ -0,0 +1,76 @@ + + + diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 18f123b..50f1fdd 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -134,6 +134,39 @@ const routes: RouteRecordRaw[] = [ ], }, + // Marketing site (public, no auth) + { + path: '/site', + component: () => import('@/components/layout/MarketingLayout.vue'), + children: [ + { + path: '', + name: 'landing', + component: () => import('@/views/marketing/LandingView.vue'), + }, + { + path: 'pricing', + name: 'pricing', + component: () => import('@/views/marketing/PricingView.vue'), + }, + { + path: 'how-it-works', + name: 'how-it-works', + component: () => import('@/views/marketing/HowItWorksView.vue'), + }, + { + path: 'faq', + name: 'faq', + component: () => import('@/views/marketing/FaqView.vue'), + }, + { + path: 'roadmap', + name: 'roadmap', + component: () => import('@/views/marketing/RoadmapView.vue'), + }, + ], + }, + // Status page { path: '/status', diff --git a/frontend/src/views/marketing/FaqView.vue b/frontend/src/views/marketing/FaqView.vue new file mode 100644 index 0000000..0990a69 --- /dev/null +++ b/frontend/src/views/marketing/FaqView.vue @@ -0,0 +1,101 @@ + + + diff --git a/frontend/src/views/marketing/HowItWorksView.vue b/frontend/src/views/marketing/HowItWorksView.vue new file mode 100644 index 0000000..8db8f20 --- /dev/null +++ b/frontend/src/views/marketing/HowItWorksView.vue @@ -0,0 +1,150 @@ + + + diff --git a/frontend/src/views/marketing/LandingView.vue b/frontend/src/views/marketing/LandingView.vue new file mode 100644 index 0000000..45ffb3b --- /dev/null +++ b/frontend/src/views/marketing/LandingView.vue @@ -0,0 +1,287 @@ + + + diff --git a/frontend/src/views/marketing/PricingView.vue b/frontend/src/views/marketing/PricingView.vue new file mode 100644 index 0000000..daf0976 --- /dev/null +++ b/frontend/src/views/marketing/PricingView.vue @@ -0,0 +1,129 @@ + + + diff --git a/frontend/src/views/marketing/RoadmapView.vue b/frontend/src/views/marketing/RoadmapView.vue new file mode 100644 index 0000000..475d506 --- /dev/null +++ b/frontend/src/views/marketing/RoadmapView.vue @@ -0,0 +1,146 @@ + + +