diff --git a/src/App.tsx b/src/App.tsx index 90100c2..1d83d4b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,8 +1,12 @@ import Navbar from './components/Navbar' import Hero from './components/Hero' import ProblemBar from './components/ProblemBar' +import StatsBar from './components/StatsBar' import ProductOverview from './components/ProductOverview' +import WorkflowShowcase from './components/WorkflowShowcase' import MCPDeepDive from './components/MCPDeepDive' +import SkillsShowcase from './components/SkillsShowcase' +import TokenComparison from './components/TokenComparison' import Dogfooding from './components/Dogfooding' import FeatureGrid from './components/FeatureGrid' import PricingPreview from './components/PricingPreview' @@ -14,8 +18,12 @@ export default function App() { + + + + diff --git a/src/components/AppMockup.tsx b/src/components/AppMockup.tsx new file mode 100644 index 0000000..ea963bc --- /dev/null +++ b/src/components/AppMockup.tsx @@ -0,0 +1,184 @@ +import { motion } from 'framer-motion' + +/* ──────────────────────────────────────────── + Stylised app mockup — suggests the DevFlow + workspace without revealing the actual UI. + Pure CSS shapes, no screenshots. + ──────────────────────────────────────────── */ + +const shimmer = + 'bg-gradient-to-r from-transparent via-white/[0.03] to-transparent bg-[length:200%_100%] animate-[shimmer_3s_ease-in-out_infinite]' + +function Bar({ w, color = 'bg-text-muted/15' }: { w: string; color?: string }) { + return
+} + +function KanbanCard({ delay }: { delay: number }) { + return ( + + + +
+
+ +
+ + ) +} + +function KanbanColumn({ + label, + accent, + cards, + delay, +}: { + label: string + accent: string + cards: number + delay: number +}) { + return ( +
+
+
+ + {label} + + {cards} +
+ {Array.from({ length: cards }).map((_, i) => ( + + ))} +
+ ) +} + +function TerminalLine({ prompt, text, delay }: { prompt: string; text: string; delay: number }) { + return ( + + {prompt} + {text} + + ) +} + +export default function AppMockup() { + return ( +
+ {/* Chrome bar */} +
+
+
+
+ DevFlow +
+ + {/* App body */} +
+ {/* Sidebar */} +
+ {/* Repo selector */} +
+
+ +
+ + {/* Nav items */} + {[ + { active: true, label: 'Kanban' }, + { active: false, label: 'Notes' }, + { active: false, label: 'Learning' }, + { active: false, label: 'Ideas' }, + { active: false, label: 'Workflows' }, + { active: false, label: 'PRs' }, + ].map((item) => ( +
+
+ + {item.label} + +
+ ))} + + {/* Spacer */} +
+ + {/* Agent status */} +
+
+
+ Claude Code +
+ +
+
+ + {/* Main content area */} +
+ {/* Kanban area */} +
+
+ + + + +
+
+ + {/* Terminal strip */} +
+
+
+ {['Claude Code', 'Terminal'].map((tab, i) => ( + + {tab} + + ))} +
+
+ + + +
+
+
+
+ ) +} diff --git a/src/components/Dogfooding.tsx b/src/components/Dogfooding.tsx index 9cf91b0..da0adf1 100644 --- a/src/components/Dogfooding.tsx +++ b/src/components/Dogfooding.tsx @@ -2,7 +2,7 @@ import AnimatedSection from './AnimatedSection' export default function Dogfooding() { return ( - +
DOGFOODING diff --git a/src/components/FeatureGrid.tsx b/src/components/FeatureGrid.tsx index 5a2b534..03739df 100644 --- a/src/components/FeatureGrid.tsx +++ b/src/components/FeatureGrid.tsx @@ -1,13 +1,13 @@ import { motion } from 'framer-motion' import AnimatedSection from './AnimatedSection' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' -import { faServer, faArrowRightArrowLeft, faLightbulb, faGraduationCap, faCodePullRequest, faPlay, faMagnifyingGlass, faClipboardList, faMoon, faCircleCheck } from '@fortawesome/pro-regular-svg-icons' +import { faServer, faArrowRightArrowLeft, faLightbulb, faGraduationCap, faCodePullRequest, faPlay, faMagnifyingGlass, faClipboardList, faMoon, faCircleCheck, faRoute, faWandMagicSparkles } from '@fortawesome/pro-regular-svg-icons' import type { IconDefinition } from '@fortawesome/fontawesome-svg-core' const features: { title: string; description: string; icon: IconDefinition }[] = [ { title: 'MCP Server', - description: 'Live repo context for any AI agent', + description: 'Live repo context — zero upfront injection, always current, write access included', icon: faServer, }, { @@ -55,18 +55,28 @@ const features: { title: string; description: string; icon: IconDefinition }[] = description: "We use it. That's the proof.", icon: faCircleCheck, }, + { + title: 'Workflows', + description: 'Goal → AI discussion → phased roadmap', + icon: faRoute, + }, + { + title: 'Skills', + description: 'Auto-discovered slash commands for every agent', + icon: faWandMagicSparkles, + }, ] export default function FeatureGrid() { return ( - +
FEATURES

- 10 power features + 12 power features

Everything technical leads and small teams need to ship with AI agents. diff --git a/src/components/FooterCTA.tsx b/src/components/FooterCTA.tsx index 474bce9..c081efa 100644 --- a/src/components/FooterCTA.tsx +++ b/src/components/FooterCTA.tsx @@ -23,7 +23,11 @@ export default function FooterCTA() {