import React, { useState, useEffect } from 'react'; import { Monitor, Map, Key, Globe, Clock, Zap, MessageSquare, Shield, HelpCircle, CheckCircle, Code, Smartphone, Layout, ChevronRight, ChevronLeft, Timer as TimerIcon, Play, RotateCcw } from 'lucide-react'; const App = () => { const [currentSlide, setCurrentSlide] = useState(0); const slides = [ { id: 1, type: 'title', time: '30s' }, { id: 2, type: 'icebreaker', time: '1m' }, { id: 3, type: 'outcomes', time: '30s' }, { id: 4, type: 'groundrules', time: '30s' }, { id: 5, type: 'why', time: '30s' }, { id: 6, type: 'roadmap-full', time: '1m' }, { id: 7, type: 'roadmap-step-1-2', time: '45s' }, { id: 8, type: 'roadmap-step-3-4', time: '45s' }, { id: 9, type: 'roadmap-step-5-6', time: '45s' }, { id: 10, type: 'crf-formula', time: '1m' }, { id: 11, type: 'demo', time: '1m 45s' }, { id: 12, type: 'activity', time: '3m' }, { id: 13, type: 'summary', time: '1m' }, { id: 14, type: 'assessment', time: '1m' }, { id: 15, type: 'qanda', time: '1m 30s' }, { id: 16, type: 'closing', time: '30s' }, ]; const nextSlide = () => { if (currentSlide < slides.length - 1) setCurrentSlide(currentSlide + 1); }; const prevSlide = () => { if (currentSlide > 0) setCurrentSlide(currentSlide - 1); }; useEffect(() => { const handleKeyDown = (e) => { if (e.key === 'ArrowRight') nextSlide(); if (e.key === 'ArrowLeft') prevSlide(); }; window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [currentSlide]); return (
{/* Background Grid Pattern */}
{/* Slide Content Area */}
{/* Footer / Controls */}
SLIDE {currentSlide + 1} / {slides.length} EST: {slides[currentSlide].time}
{/* Progress Bar */}
); }; const SlideRenderer = ({ slideType }) => { switch (slideType) { case 'title': return ; case 'icebreaker': return ; case 'outcomes': return ; case 'groundrules': return ; case 'why': return ; case 'roadmap-full': return ; case 'roadmap-step-1-2': return ; case 'roadmap-step-3-4': return ; case 'roadmap-step-5-6': return ; case 'crf-formula': return ; case 'demo': return ; case 'activity': return ; case 'summary': return ; case 'assessment': return ; case 'qanda': return ; case 'closing': return ; default: return ; } }; // --- SLIDE COMPONENTS --- const GlassCard = ({ children, className = "" }) => (
{children}
); const TitleSlide = () => (
AI TRANSFORMATION SERIES

Rapid Personal Website
Development

Using AI Vibe Coding

Ts Noridah Abu Bakar

Certified Trainer

); const IcebreakerSlide = () => (
QR Code

SCAN TO JOIN

Digital Icebreaker

"How many hours did it take to build your first website?"

Open Mentimeter and key in your thoughts!

); const OutcomesSlide = () => (

Learning Outcomes

{[ { icon: , text: "Explain the 6-step Vibe Coding roadmap." }, { icon: , text: "Apply the C.R.F. framework for AI prompting." }, { icon: , text: "Produce a functional personal website preview." } ].map((item, idx) => (
{item.icon}

{item.text}

))}
); const GroundRulesSlide = () => (

Ground Rules

{[ { icon: , label: "15 Minutes Total", sub: "Respect the timeline" }, { icon: , label: "Mic Muted", sub: "Unless in Q&A session" }, { icon: , label: "Raise Hand", sub: "For questions or input" }, { icon: , label: "Environment", sub: "Stay focused & powered up" }, ].map((rule, idx) => (
{rule.icon}

{rule.label}

{rule.sub}

))}
); const WhySlide = () => (

The "Why" - Closing the Tech Gap

Traditional Way

  • 40+ Hours of development
  • Syntax errors & debugging
  • High design complexity

Vibe Coding Way

  • 1 Minute Generation
  • Natural Language Logic
  • Instant Visual Previews
); const RoadmapFullSlide = () => (

The 6-Step Vibe Coding Roadmap

{/* Path Line */}
{[ { n: 1, label: "Purpose" }, { n: 2, label: "Domain" }, { n: 3, label: "Hosting" }, { n: 4, label: "Layout" }, { n: 5, label: "Code" }, { n: 6, label: "Deploy" } ].map((step) => (
{step.n}

{step.label}

))}
); const RoadmapStepsSlide = ({ steps }) => (
{steps.map(s => { const info = [ { title: "Define Purpose", desc: "Identify if you need a Professional CV, Portfolio, or a Business Landing Page." }, { title: "Choose Domain", desc: "Select your digital address. Keep it memorable and professional." }, { title: "Select Hosting", desc: "Choose where your files live (GitHub, Netlify, Vercel)." }, { title: "Design Layout", desc: "Plan the visual structure and user journey map." }, { title: "Code Frontend", desc: "This is the 'Vibe' stage! Use AI to generate HTML/CSS/JS." }, { title: "Deploy", desc: "Go live! Copy-paste the code and hit publish." } ][s-1]; return (
{s}

{info.title}

{info.desc}

); })}
); const CRFSlide = () => (

The Secret Sauce: C.R.F. Framework

C

Context

Who are you and what is the goal?

+

R

Requirements

Features, colors, & specific sections.

+

F

Format

How should the AI deliver results?

= SUCCESSFUL VIBE
); const DemoSlide = () => (

Live Demo: The "Gold Medal" Prompt

// Context

"I am a professional developer building a high-end personal website using Vibe Coding..."

// Requirements

"Visual Style: Modern card-based layout with Glassmorphism. Palette: Navy Blue (#002147) & Gold accents..."

// Format

"Provide solution in ONE single code block (HTML/CSS/JS) for immediate Copy and Paste experience."

); const ActivitySlide = () => { const [seconds, setSeconds] = useState(180); const [isActive, setIsActive] = useState(false); useEffect(() => { let interval = null; if (isActive && seconds > 0) { interval = setInterval(() => { setSeconds(seconds => seconds - 1); }, 1000); } else if (seconds === 0) { setIsActive(false); clearInterval(interval); } return () => clearInterval(interval); }, [isActive, seconds]); const formatTime = (s) => { const mins = Math.floor(s / 60); const secs = s % 60; return `${mins}:${secs < 10 ? '0' : ''}${secs}`; }; return (
Action Phase

Hands-on: The 1-Minute Build

{[ "1. Access the AI Chat interface.", "2. Drag your 'Sample_Profile.txt' data.", "3. Apply the C.R.F. Master Prompt.", "4. Preview and tweak your 'Vibe'!" ].map((text, i) => (
{i+1}

{text}

))}
{formatTime(seconds)}
); }; const SummarySlide = () => (

Summary Checklist

{[ "Followed the 6-Step Roadmap?", "Applied C.R.F. Framework correctly?", "Website Preview functional and live?", "Vibe confirmed and personal brand ready?" ].map((item, idx) => (

{item}

))}
); const AssessmentSlide = () => (

Knowledge Check

Question 1

What does the 'F' in C.R.F. stand for?

ANSWER: Format

Question 2

Which roadmap step involves the actual coding process?

ANSWER: Step 5 (Code Frontend)
); const QASlide = () => (

Any Questions?

Feel free to ask about Prompt Engineering or AI Vibe Coding.

Post-Session Survey

QR Code

Scan to share your feedback!

"On a scale of 1-5, how likely are you to use this for your CV?"

); const ClosingSlide = () => (

Your brand is your vibe.

Now, go code it.

Ts Noridah Abu Bakar

Thank you for attending!

); export default App;