RLS policies implementeren, Demo auth flow

This commit is contained in:
colinislit
2025-11-15 23:59:38 +01:00
parent b1cfb339a2
commit 99804656d7
49 changed files with 5841 additions and 123 deletions

123
content/nl/contact.json Normal file
View File

@@ -0,0 +1,123 @@
{
"hero": {
"title": "Laten we bouwen",
"subtitle": "Van idee naar werkend prototype in 4 weken",
"description": "Klaar om jouw software sneller en goedkoper te bouwen? Vul het formulier in en we nemen binnen 24 uur contact op."
},
"form": {
"title": "Start je speedrun",
"fields": {
"name": {
"label": "Naam",
"placeholder": "Je volledige naam",
"required": true,
"error": "Naam is verplicht"
},
"email": {
"label": "Email",
"placeholder": "je@bedrijf.nl",
"required": true,
"error": "Geldig email adres is verplicht"
},
"company": {
"label": "Bedrijf",
"placeholder": "Je bedrijfsnaam (optioneel)",
"required": false
},
"projectType": {
"label": "Type project",
"placeholder": "Selecteer een type",
"required": true,
"error": "Selecteer een project type",
"options": [
"Web applicatie",
"Mobile app",
"Dashboard / Admin panel",
"API / Backend",
"MVP / Prototype",
"Anders"
]
},
"budget": {
"label": "Budget indicatie",
"placeholder": "Selecteer een range",
"required": false,
"options": [
"< €5.000",
"€5.000 - €10.000",
"€10.000 - €25.000",
"€25.000 - €50.000",
"> €50.000",
"Nog niet bekend"
]
},
"message": {
"label": "Project beschrijving",
"placeholder": "Vertel ons over je project: wat wil je bouwen en waarom?",
"required": true,
"error": "Beschrijving is verplicht",
"minLength": 20
}
},
"buttons": {
"submit": "Verstuur aanvraag",
"submitting": "Versturen..."
},
"success": {
"title": "Aanvraag ontvangen!",
"message": "We hebben je aanvraag ontvangen en nemen binnen 24 uur contact op. Check je inbox (en spam folder).",
"cta": "Terug naar home"
},
"error": {
"title": "Er ging iets mis",
"message": "We konden je aanvraag niet verwerken. Probeer het opnieuw of mail direct naar contact@speedrun.nl",
"retry": "Opnieuw proberen"
}
},
"benefits": {
"title": "Waarom AI Speedrun?",
"items": [
{
"title": "4 weken doorlooptijd",
"description": "Van eerste gesprek tot werkend prototype in één maand.",
"icon": "clock"
},
{
"title": "€200 build cost",
"description": "Transparante pricing zonder verborgen kosten of uurtarieven.",
"icon": "euro"
},
{
"title": "Modern tech stack",
"description": "Next.js, Supabase, AI - battle-tested en toekomstbestendig.",
"icon": "code"
},
{
"title": "Build in public",
"description": "Volg de voortgang live via GitHub en wekelijkse updates.",
"icon": "eye"
}
]
},
"faq": {
"title": "Veelgestelde vragen",
"items": [
{
"question": "Wat krijg ik voor €200?",
"answer": "Een werkend MVP/prototype met moderne tech stack (Next.js, Supabase), gehost op Vercel, met volledige source code toegang via GitHub. De €200 is de build cost - geen uurtarieven of verborgen kosten."
},
{
"question": "Hoe lang duurt het echt?",
"answer": "4 weken van kick-off tot werkend prototype. Week 1: requirements & design. Week 2-3: development. Week 4: testing & launch. Je krijgt wekelijkse updates en kan de voortgang live volgen."
},
{
"question": "Wat als ik meer features wil?",
"answer": "We beginnen altijd met een MVP scope voor de €200. Extra features kunnen daarna als iteraties worden toegevoegd. We helpen je prioriteren wat er in de eerste 4 weken moet zitten."
},
{
"question": "Krijg ik de source code?",
"answer": "Ja, 100%. Alles wordt gebouwd in een GitHub repository waar je volledige toegang toe hebt. Na oplevering is het volledig van jou."
}
]
}
}

80
content/nl/epd.json Normal file
View File

@@ -0,0 +1,80 @@
{
"hero": {
"title": "EPD Prototype",
"subtitle": "Van 30 minuten documentatie naar 3 minuten",
"description": "Ervaar hoe AI de workflow van GGZ-professionals transformeert. Van intake tot behandelplan in seconden."
},
"demo": {
"title": "Probeer het prototype",
"description": "Log in met onderstaande demo credentials om het systeem te verkennen. Alle data is fictief en voor demonstratie doeleinden.",
"credentials": {
"email": "demo@speedrun.nl",
"password": "demo2024",
"note": "Deze credentials geven toegang tot een demo-omgeving met voorbeeldcliënten en dossiers."
}
},
"features": {
"title": "Wat kan het prototype?",
"items": [
{
"title": "AI-Gestuurde Intake",
"description": "Schrijf een intakeverslag en krijg binnen seconden een gestructureerde samenvatting van 5-8 bullets.",
"time": "< 5 seconden",
"traditional": "15-20 minuten handmatig"
},
{
"title": "Automatische DSM Classificatie",
"description": "Het systeem analyseert de intake en stelt DSM-categorieën voor met severity scoring en rationale.",
"time": "< 3 seconden",
"traditional": "10-15 minuten analyse"
},
{
"title": "Behandelplan Generatie",
"description": "Van probleemprofiel naar compleet SMART behandelplan met doelen, interventies en tijdlijn.",
"time": "< 10 seconden",
"traditional": "30-45 minuten schrijfwerk"
},
{
"title": "B1 Readability",
"description": "Herschrijf complexe teksten naar B1 Nederlands op een druk op de knop voor cliëntcommunicatie.",
"time": "< 3 seconden",
"traditional": "20-30 minuten herschrijven"
}
]
},
"comparison": {
"title": "Tijdsbesparing per cliënt",
"traditional": {
"label": "Traditioneel",
"intake": "20 min",
"profile": "15 min",
"plan": "45 min",
"total": "80 minuten"
},
"speedrun": {
"label": "Met AI Speedrun",
"intake": "5 sec",
"profile": "3 sec",
"plan": "10 sec",
"total": "18 seconden"
},
"savings": "99.6% sneller"
},
"video": {
"title": "Demo Video",
"description": "Bekijk een complete walkthrough van het EPD prototype in 5 minuten.",
"placeholder": "Video wordt binnenkort toegevoegd"
},
"cta": {
"heading": "Klaar om te starten?",
"subheading": "Log in met de demo credentials hierboven en ervaar zelf de kracht van Software on Demand.",
"primaryButton": {
"text": "Probeer het prototype",
"href": "#demo-login"
},
"secondaryButton": {
"text": "Terug naar manifesto",
"href": "/"
}
}
}

View File

@@ -2,12 +2,12 @@
"logo": "AI SPEEDRUN",
"links": [
{
"label": "Build Log",
"href": "/build-log"
"label": "EPD Prototype",
"href": "/epd"
},
{
"label": "Demo",
"href": "/demo"
"label": "Contact",
"href": "/contact"
}
]
}

View File

@@ -107,3 +107,142 @@ export interface CommonContent {
labels: CommonLabels
}
// EPD Demo Content Types
export interface EPDHero {
title: string
subtitle: string
description: string
}
export interface DemoCredentials {
email: string
password: string
note: string
}
export interface DemoSection {
title: string
description: string
credentials: DemoCredentials
}
export interface FeatureItem {
title: string
description: string
time: string
traditional: string
}
export interface FeaturesSection {
title: string
items: FeatureItem[]
}
export interface ComparisonMetrics {
label: string
intake: string
profile: string
plan: string
total: string
}
export interface ComparisonSection {
title: string
traditional: ComparisonMetrics
speedrun: ComparisonMetrics
savings: string
}
export interface VideoSection {
title: string
description: string
placeholder: string
}
export interface EPDContent {
hero: EPDHero
demo: DemoSection
features: FeaturesSection
comparison: ComparisonSection
video: VideoSection
cta: CTAContent
}
// Contact Page Content Types
export interface ContactHero {
title: string
subtitle: string
description: string
}
export interface FormField {
label: string
placeholder: string
required: boolean
error?: string
options?: string[]
minLength?: number
}
export interface FormFields {
name: FormField
email: FormField
company: FormField
projectType: FormField
budget: FormField
message: FormField
}
export interface FormButtons {
submit: string
submitting: string
}
export interface FormSuccess {
title: string
message: string
cta: string
}
export interface FormError {
title: string
message: string
retry: string
}
export interface FormSection {
title: string
fields: FormFields
buttons: FormButtons
success: FormSuccess
error: FormError
}
export interface BenefitItem {
title: string
description: string
icon: string
}
export interface BenefitsSection {
title: string
items: BenefitItem[]
}
export interface FAQItem {
question: string
answer: string
}
export interface FAQSection {
title: string
items: FAQItem[]
}
export interface ContactContent {
hero: ContactHero
form: FormSection
benefits: BenefitsSection
faq: FAQSection
}