import React, { useState } from 'react'; import Setup from './components/Setup'; import Interview from './components/Interview'; import Report from './components/Report'; import { startInterview, submitAnswer, getReport } from './utils/api'; export default function App() { const [phase, setPhase] = useState('setup'); // setup | interview | report const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [sessionId, setSessionId] = useState(null); const [currentQuestion, setCurrentQuestion] = useState(null); const [progress, setProgress] = useState({ answered: 0, total: 0 }); const [lastEval, setLastEval] = useState(null); const [reportData, setReportData] = useState(null); const handleStart = async ({ role, difficulty, interviewType, questionCount }) => { setLoading(true); setError(''); try { const data = await startInterview(role, difficulty, interviewType, questionCount); setSessionId(data.sessionId); setCurrentQuestion(data.currentQuestion); setProgress({ answered: 0, total: data.totalQuestions }); setLastEval(null); setPhase('interview'); } catch (err) { setError(err.message); } setLoading(false); }; const handleAnswer = async (answer) => { setLoading(true); setError(''); try { const data = await submitAnswer(sessionId, answer); setLastEval(data.evaluation); setProgress(data.progress); if (data.isComplete) { // Small delay to show last evaluation before report setTimeout(async () => { try { const report = await getReport(sessionId); setReportData(report); setPhase('report'); } catch (err) { setError(err.message); } setLoading(false); }, 3000); } else { setCurrentQuestion(data.nextQuestion); setLoading(false); } } catch (err) { setError(err.message); setLoading(false); } }; const handleReset = () => { setPhase('setup'); setSessionId(null); setCurrentQuestion(null); setLastEval(null); setReportData(null); setError(''); }; return (

AI Interview Coach

Practice interviews. Get real feedback. Land the job.

{error && (
{error}
)} {phase === 'setup' && } {phase === 'interview' && currentQuestion && ( )} {phase === 'interview' && loading && !currentQuestion && (

Generating your final report...

)} {phase === 'report' && reportData && ( )}
); }