From fbe991d8e6691afaf86b13d47194f4e476ee5cfe Mon Sep 17 00:00:00 2001 From: mawkone Date: Sat, 6 Jun 2026 18:52:03 -0700 Subject: [PATCH] feat: flatten routes and merge marketing and onboarding directories --- _marketing/README.md | 70 ----- app/(marketing)/mission/page.tsx | 145 ---------- app/(onboarding)/onboarding/page.tsx | 5 - app/mission/page.tsx | 261 ++++++++++++++++++ .../onboarding}/onboarding-agency-mock.ts | 0 .../onboarding}/onboarding-agency-types.ts | 0 .../onboarding}/onboarding-agency.tsx | 0 .../onboarding}/onboarding-build.tsx | 0 .../onboarding}/onboarding-consultant.tsx | 212 +++++++++++--- .../onboarding}/onboarding-entrepreneur.tsx | 0 .../onboarding}/onboarding-fork.tsx | 0 .../onboarding}/onboarding-owner.tsx | 0 .../onboarding}/onboarding-primitives.tsx | 0 .../onboarding}/onboarding.css | 0 {_onboarding => app/onboarding}/page.tsx | 0 app/{(marketing) => }/page.tsx | 4 +- .../marketing}/content/homepage.ts | 0 .../marketing}/index.ts | 0 .../marketing}/justine/JustineAuthShell.tsx | 0 .../marketing}/justine/JustineFooter.tsx | 0 .../marketing}/justine/JustineHomePage.tsx | 0 .../marketing}/justine/JustineNav.tsx | 0 .../marketing}/justine/index.ts | 0 .../marketing}/new-site/index.tsx | 0 tsconfig.json | 4 +- 25 files changed, 437 insertions(+), 264 deletions(-) delete mode 100644 _marketing/README.md delete mode 100644 app/(marketing)/mission/page.tsx delete mode 100644 app/(onboarding)/onboarding/page.tsx create mode 100644 app/mission/page.tsx rename {_onboarding => app/onboarding}/onboarding-agency-mock.ts (100%) rename {_onboarding => app/onboarding}/onboarding-agency-types.ts (100%) rename {_onboarding => app/onboarding}/onboarding-agency.tsx (100%) rename {_onboarding => app/onboarding}/onboarding-build.tsx (100%) rename {_onboarding => app/onboarding}/onboarding-consultant.tsx (64%) rename {_onboarding => app/onboarding}/onboarding-entrepreneur.tsx (100%) rename {_onboarding => app/onboarding}/onboarding-fork.tsx (100%) rename {_onboarding => app/onboarding}/onboarding-owner.tsx (100%) rename {_onboarding => app/onboarding}/onboarding-primitives.tsx (100%) rename {_onboarding => app/onboarding}/onboarding.css (100%) rename {_onboarding => app/onboarding}/page.tsx (100%) rename app/{(marketing) => }/page.tsx (62%) rename {_marketing => components/marketing}/content/homepage.ts (100%) rename {_marketing/components => components/marketing}/index.ts (100%) rename {_marketing/components => components/marketing}/justine/JustineAuthShell.tsx (100%) rename {_marketing/components => components/marketing}/justine/JustineFooter.tsx (100%) rename {_marketing/components => components/marketing}/justine/JustineHomePage.tsx (100%) rename {_marketing/components => components/marketing}/justine/JustineNav.tsx (100%) rename {_marketing/components => components/marketing}/justine/index.ts (100%) rename {_marketing/components => components/marketing}/new-site/index.tsx (100%) diff --git a/_marketing/README.md b/_marketing/README.md deleted file mode 100644 index b3750f86..00000000 --- a/_marketing/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# 📢 Marketing Directory - -This directory contains all marketing-specific code for the VIBN landing pages and promotional content. - -## 📁 Structure - -``` -marketing/ -├── components/ # Marketing-specific React components -│ ├── hero.tsx # Hero section with main CTA -│ ├── features.tsx # Features grid with cards -│ ├── cta.tsx # Call-to-action sections -│ └── index.ts # Component exports -├── content/ # Marketing copy and content -│ └── homepage.ts # Homepage content/copy -└── styles/ # Marketing-specific styles (future) -``` - -## 🎯 Purpose - -This directory keeps marketing code separate from application code, making it easier to: -- Update messaging and copy -- Redesign marketing pages without affecting the app -- Collaborate with designers/copywriters -- Maintain consistent branding - -## 🔗 Usage - -Marketing components are used in the `app/(marketing)/` routes: - -```tsx -import { Hero, Features, CTA } from "@/marketing/components"; - -export default function Page() { - return ( - <> - - - - - ); -} -``` - -## 📝 Content Management - -All marketing copy is centralized in `content/homepage.ts` for easy updates: - -```typescript -import { homepage } from "@/marketing/content/homepage"; - -// Use in components -

{homepage.hero.title}

-``` - -## 🚀 Adding New Sections - -1. Create component in `components/` -2. Add content to `content/homepage.ts` -3. Export from `components/index.ts` -4. Use in `app/(marketing)/page.tsx` - -## 📖 Design Guidelines - -Follow the guidelines in `/PROJECT_INSTRUCTIONS.md` for: -- Voice & tone -- Design principles -- SEO requirements -- Accessibility standards - diff --git a/app/(marketing)/mission/page.tsx b/app/(marketing)/mission/page.tsx deleted file mode 100644 index d50c3d76..00000000 --- a/app/(marketing)/mission/page.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import { Nav, Footer } from "@/marketing/components/new-site"; -import "../../styles/new-site.css"; - -export const metadata = { - title: "Vibn — Our Mission", -}; - -export default function MissionPage() { - return ( -
-
- ); -} diff --git a/app/(onboarding)/onboarding/page.tsx b/app/(onboarding)/onboarding/page.tsx deleted file mode 100644 index 923a44dc..00000000 --- a/app/(onboarding)/onboarding/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -"use client"; - -import OnboardingPage from "@/_onboarding/page"; - -export default OnboardingPage; diff --git a/app/mission/page.tsx b/app/mission/page.tsx new file mode 100644 index 00000000..6623a60f --- /dev/null +++ b/app/mission/page.tsx @@ -0,0 +1,261 @@ +import { Nav, Footer } from "@/marketing/new-site"; +import "../styles/new-site.css"; + +export const metadata = { + title: "Vibn — Our Mission", +}; + +export default function MissionPage() { + return ( +
+
+ ); +} diff --git a/_onboarding/onboarding-agency-mock.ts b/app/onboarding/onboarding-agency-mock.ts similarity index 100% rename from _onboarding/onboarding-agency-mock.ts rename to app/onboarding/onboarding-agency-mock.ts diff --git a/_onboarding/onboarding-agency-types.ts b/app/onboarding/onboarding-agency-types.ts similarity index 100% rename from _onboarding/onboarding-agency-types.ts rename to app/onboarding/onboarding-agency-types.ts diff --git a/_onboarding/onboarding-agency.tsx b/app/onboarding/onboarding-agency.tsx similarity index 100% rename from _onboarding/onboarding-agency.tsx rename to app/onboarding/onboarding-agency.tsx diff --git a/_onboarding/onboarding-build.tsx b/app/onboarding/onboarding-build.tsx similarity index 100% rename from _onboarding/onboarding-build.tsx rename to app/onboarding/onboarding-build.tsx diff --git a/_onboarding/onboarding-consultant.tsx b/app/onboarding/onboarding-consultant.tsx similarity index 64% rename from _onboarding/onboarding-consultant.tsx rename to app/onboarding/onboarding-consultant.tsx index 43546f71..8581ef61 100644 --- a/_onboarding/onboarding-consultant.tsx +++ b/app/onboarding/onboarding-consultant.tsx @@ -1,5 +1,20 @@ -import React, { useState, useEffect, useRef, useMemo, useCallback } from "react"; -import { WizardTop, WizardBody, WizardQ, WizardFooter, Label, LANE_LABELS, PresetGroup, Field } from "./onboarding-primitives"; +import React, { + useState, + useEffect, + useRef, + useMemo, + useCallback, +} from "react"; +import { + WizardTop, + WizardBody, + WizardQ, + WizardFooter, + Label, + LANE_LABELS, + PresetGroup, + Field, +} from "./onboarding-primitives"; // Consultant path — 4 steps for freelancers building for a client. const CONS_TOTAL = 4; @@ -29,7 +44,11 @@ export function ConsClient({ clientName, industry, contact, onChange }) { onChange={(e) => onChange({ industry: e.target.value })} /> - + {g.label} @@ -140,7 +207,9 @@ function ConsScope({ scope, onChange }) { type="button" onClick={() => toggle(it)} style={{ - display: "flex", alignItems: "center", gap: 10, + display: "flex", + alignItems: "center", + gap: 10, textAlign: "left", padding: "6px 4px", color: active ? "var(--fg)" : "var(--fg-dim)", @@ -150,19 +219,30 @@ function ConsScope({ scope, onChange }) { > {active && ( - @@ -185,7 +265,11 @@ function ConsHandoff({ data, onChange }) { title="And finally — delivery." sub="Where it lives, how you bill. Change later from settings." /> - + onChange({ handoff: v })} columns={1} /> - +
$ + > + $ + / hour + > + / hour +
@@ -238,7 +352,15 @@ function ConsHandoff({ data, onChange }) { } // ── Path wrapper ─────────────────────────────────────────────────────────── -export function ConsultantPath({ data, onUpdate, onBack, onClose, onComplete, onJumpToStep, step }) { +export function ConsultantPath({ + data, + onUpdate, + onBack, + onClose, + onComplete, + onJumpToStep, + step, +}) { const next = () => { if (step < CONS_TOTAL - 1) onJumpToStep(step + 1); else onComplete(); @@ -258,12 +380,24 @@ export function ConsultantPath({ data, onUpdate, onBack, onClose, onComplete, on onChange={onUpdate} /> ); - canNext = (data.clientName || "").trim().length >= 2 && (data.industry || "").trim().length >= 3; + canNext = + (data.clientName || "").trim().length >= 2 && + (data.industry || "").trim().length >= 3; } else if (step === 1) { - body = onUpdate({ brief: v })} />; + body = ( + onUpdate({ brief: v })} + /> + ); canNext = (data.brief || "").trim().length >= 30; } else if (step === 2) { - body = onUpdate({ scope: v })} />; + body = ( + onUpdate({ scope: v })} + /> + ); canNext = (data.scope || []).length >= 2; } else { body = ; @@ -292,5 +426,3 @@ export function ConsultantPath({ data, onUpdate, onBack, onClose, onComplete, on ); } - - diff --git a/_onboarding/onboarding-entrepreneur.tsx b/app/onboarding/onboarding-entrepreneur.tsx similarity index 100% rename from _onboarding/onboarding-entrepreneur.tsx rename to app/onboarding/onboarding-entrepreneur.tsx diff --git a/_onboarding/onboarding-fork.tsx b/app/onboarding/onboarding-fork.tsx similarity index 100% rename from _onboarding/onboarding-fork.tsx rename to app/onboarding/onboarding-fork.tsx diff --git a/_onboarding/onboarding-owner.tsx b/app/onboarding/onboarding-owner.tsx similarity index 100% rename from _onboarding/onboarding-owner.tsx rename to app/onboarding/onboarding-owner.tsx diff --git a/_onboarding/onboarding-primitives.tsx b/app/onboarding/onboarding-primitives.tsx similarity index 100% rename from _onboarding/onboarding-primitives.tsx rename to app/onboarding/onboarding-primitives.tsx diff --git a/_onboarding/onboarding.css b/app/onboarding/onboarding.css similarity index 100% rename from _onboarding/onboarding.css rename to app/onboarding/onboarding.css diff --git a/_onboarding/page.tsx b/app/onboarding/page.tsx similarity index 100% rename from _onboarding/page.tsx rename to app/onboarding/page.tsx diff --git a/app/(marketing)/page.tsx b/app/page.tsx similarity index 62% rename from app/(marketing)/page.tsx rename to app/page.tsx index a7554aef..d10a72ed 100644 --- a/app/(marketing)/page.tsx +++ b/app/page.tsx @@ -1,5 +1,5 @@ -import NewSite from "@/marketing/components/new-site"; -import "../styles/new-site.css"; +import NewSite from "@/marketing/new-site"; +import "./styles/new-site.css"; export const metadata = { title: "Vibn — Keep vibing. All the way to launch.", diff --git a/_marketing/content/homepage.ts b/components/marketing/content/homepage.ts similarity index 100% rename from _marketing/content/homepage.ts rename to components/marketing/content/homepage.ts diff --git a/_marketing/components/index.ts b/components/marketing/index.ts similarity index 100% rename from _marketing/components/index.ts rename to components/marketing/index.ts diff --git a/_marketing/components/justine/JustineAuthShell.tsx b/components/marketing/justine/JustineAuthShell.tsx similarity index 100% rename from _marketing/components/justine/JustineAuthShell.tsx rename to components/marketing/justine/JustineAuthShell.tsx diff --git a/_marketing/components/justine/JustineFooter.tsx b/components/marketing/justine/JustineFooter.tsx similarity index 100% rename from _marketing/components/justine/JustineFooter.tsx rename to components/marketing/justine/JustineFooter.tsx diff --git a/_marketing/components/justine/JustineHomePage.tsx b/components/marketing/justine/JustineHomePage.tsx similarity index 100% rename from _marketing/components/justine/JustineHomePage.tsx rename to components/marketing/justine/JustineHomePage.tsx diff --git a/_marketing/components/justine/JustineNav.tsx b/components/marketing/justine/JustineNav.tsx similarity index 100% rename from _marketing/components/justine/JustineNav.tsx rename to components/marketing/justine/JustineNav.tsx diff --git a/_marketing/components/justine/index.ts b/components/marketing/justine/index.ts similarity index 100% rename from _marketing/components/justine/index.ts rename to components/marketing/justine/index.ts diff --git a/_marketing/components/new-site/index.tsx b/components/marketing/new-site/index.tsx similarity index 100% rename from _marketing/components/new-site/index.tsx rename to components/marketing/new-site/index.tsx diff --git a/tsconfig.json b/tsconfig.json index 0beb4abf..4e93354f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,8 +20,8 @@ }, ], "paths": { - "@/marketing/*": ["./_marketing/*"], - "@/onboarding/*": ["./_onboarding/*"], + "@/marketing/*": ["./components/marketing/*"], + "@/onboarding/*": ["./app/onboarding/*"], "@/*": ["./*"], }, },