Files
triqura-ecd/app/(marketing)/page.tsx
colinislit b7d19a8e1a feat: Epic 1 completion - Marketing refactor met timeline en Bento Grid login
Epic 1 Stories (E1.S1 t/m E1.S6):

 E1.S1 - Verwijder EPD demo pagina
- Removed /epd route en credentials-box component
- Updated navigation: EPD Prototype → Login link
- Removed demo_users references from middleware en auth libs
- Cleaned up TypeScript errors in hero-section-2

 E1.S2 - Homepage vereenvoudigen
- Replaced lange manifesto (8000+ woorden) met statement section
- Added problem-solution-proof format (3 paragrafen)
- Removed comparison table, experiment CTA, manifesto content
- Timeline placeholder toegevoegd (completed in E1.S3)

 E1.S3 - Timeline component integreren
- Created BuildTimeline component (Aceternity UI pattern)
- Added timeline.json met 4 weken data (Week 1 completed)
- Features per week met icons, metrics, achievements
- Scroll-based animation met Framer Motion
- Responsive design (sticky titles, mobile/desktop layouts)

 E1.S4 - Timeline content structuur
- Structured JSON data in content/nl/timeline.json
- 15 Lucide icons voor feature types
- Week status badges (completed/in_progress/planned)
- Time savings display (< 5 sec vs 30 min)

 E1.S5 - Login pagina refactor
- Split-screen layout (60% features, 40% login)
- Teal gradient showcase met 4 feature cards
- Time savings badges per feature
- Responsive stack layout voor mobile
- Footer met AI Speedrun branding

 E1.S6 - Bento Grid showcase
- Replaced feature grid met Bento Grid layout
- Variable card sizes voor visual hierarchy (col-span-2, col-span-1)
- Dark slate background (from-slate-900)
- Gradient backgrounds per card (teal, amber, purple)
- Stats footer met 3 key metrics (90%+, < 5 sec, 4 weken)
- Hover animations en glassmorphism effects

🎨 Design System:
- Teal-first brand colors (#0D9488)
- Amber accents voor AI features (#F59E0B)
- Slate scale voor neutral colors
- WCAG AA compliant contrast

📦 Components:
- BuildTimeline (app/(marketing)/components)
- BentoGrid & BentoCard (components/ui)
- Button variants (components/ui)

📄 Content:
- timeline.json met volledige 4-weken data
- Features array per week
- Metrics en achievements tracking

🔧 Technical:
- Removed demo user scripts en migrations
- Updated middleware routes (removed /epd)
- TypeScript type fixes (hero-section-2, auth)
- Build succesvol: 13 routes generated

🚀 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 19:22:49 +01:00

189 lines
5.9 KiB
TypeScript

/**
* Homepage - AI Speedrun v2.1
*
* Vereenvoudigde landing page met:
* - Hero quote (Jensen Huang)
* - Statement section (Software on Demand concept)
* - Timeline (coming in E1.S3)
* - CTA naar /login
*
* Performance optimizations:
* - Critical content (Hero, Statement) loads immediately
* - Timeline will be lazy loaded when added
*/
import type { Metadata } from 'next'
import { getContent } from '@/lib/content/loader'
import type { MetadataContent } from '@/content/schemas/manifesto'
import { HeroQuote } from './components/hero-quote'
import { BuildTimeline } from './components/build-timeline'
// Generate metadata for SEO
export async function generateMetadata(): Promise<Metadata> {
const metadataContent = await getContent<MetadataContent>('nl', 'metadata')
const meta = metadataContent.manifesto
const siteUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://aispeedrun.vercel.app'
const ogImageUrl = `${siteUrl}${meta.ogImage}`
return {
title: meta.title,
description: meta.description,
keywords: meta.keywords,
authors: [{ name: 'Colin van der Heijden' }],
openGraph: {
type: 'article',
title: meta.ogTitle,
description: meta.ogDescription,
images: [
{
url: ogImageUrl,
width: 1200,
height: 630,
alt: meta.ogTitle,
},
],
siteName: 'AI Speedrun',
locale: 'nl_NL',
},
twitter: {
card: 'summary_large_image',
title: meta.ogTitle,
description: meta.ogDescription,
images: [ogImageUrl],
},
alternates: {
canonical: siteUrl,
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
}
}
// Content interfaces
interface StatementContent {
hero: {
quote: string
attribution: string
attributionContext: string
subtitle: string
}
}
interface Feature {
title: string
description: string
time?: string
traditional?: string
icon: "Rocket" | "Database" | "Sparkles" | "Palette" | "Calendar" | "Layout" | "Users" | "Smartphone" | "FileText" | "Brain" | "Tags" | "Target" | "HelpCircle" | "Zap" | "Eye"
}
interface WeekData {
weekNumber: number
title: string
status: "completed" | "in_progress" | "planned"
description: string
features: Feature[]
metrics: {
hours: string
cost: string
linesOfCode: string
}
achievements: string[]
}
interface TimelineContent {
heading: string
description: string
weeks: WeekData[]
}
export default async function HomePage() {
// Load content
const manifestoContent = await getContent<StatementContent>('nl', 'manifesto')
const timelineContent = await getContent<TimelineContent>('nl', 'timeline')
return (
<>
{/* Hero Quote Section */}
<HeroQuote content={manifestoContent.hero} />
{/* Statement Section - Software on Demand */}
<section className="w-full md:max-w-[750px] mx-auto px-4 md:px-16 py-16 md:py-24">
<div className="prose prose-slate max-w-none">
<h2 className="font-serif text-3xl md:text-4xl font-bold text-slate-900 mb-8">
Software on Demand: Van 100k naar 200
</h2>
<div className="space-y-6 text-lg leading-relaxed text-slate-700">
<p>
<strong className="text-slate-900">Het probleem:</strong> Enterprise software kost 100.000+ per jaar
en implementaties duren 12-24 maanden. Je betaalt voor potentieel, niet voor werkelijke waarde.
Vendors optimaliseren voor meer seats, meer modules, meer lock-in.
</p>
<p>
<strong className="text-slate-900">De oplossing:</strong> AI-powered development verkort dit naar
4 weken en 200 totale kosten. Niet omdat AI magisch is, maar omdat je 80% van de standaard-code
niet meer hoeft te schrijven. De kostenbasis verschuift compleet - geen armies van consultants,
geen jarenlange developmenttrajecten.
</p>
<p>
<strong className="text-slate-900">Het bewijs:</strong> Dit EPD prototype is het levende bewijs.
Gebouwd in 4 weken, volledig transparant, build in public. Infrastructuur die schaalt met gebruik,
AI die de heavy lifting doet. En het belangrijkste: je bezit de code, je controleert de roadmap.
</p>
<p className="text-teal-700 font-medium text-xl pt-4">
Volg de voortgang hieronder en zie hoe elk onderdeel tot leven komt
</p>
</div>
</div>
</section>
{/* Timeline Section */}
<section id="timeline">
<BuildTimeline data={timelineContent} />
</section>
{/* CTA Section */}
<section className="py-24 px-4 text-center bg-gradient-to-br from-teal-50 to-white">
<div className="max-w-3xl mx-auto">
<h2 className="text-3xl md:text-4xl font-bold text-slate-900 mb-4">
Klaar om het prototype te proberen?
</h2>
<p className="text-lg text-slate-600 mb-8 max-w-2xl mx-auto">
Login om toegang te krijgen tot de EPD applicatie en zie AI-gestuurde workflows in actie
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<a
href="/login"
className="inline-block px-8 py-3 bg-teal-600 hover:bg-teal-700 text-white font-medium rounded-lg transition-colors"
>
Probeer het prototype
</a>
<a
href="#timeline"
className="inline-block px-8 py-3 bg-white hover:bg-slate-50 text-slate-700 font-medium rounded-lg border-2 border-slate-300 transition-colors"
>
Bekijk voortgang
</a>
</div>
</div>
</section>
</>
)
}