import { useState } from 'react'; import { roastCode } from './utils/api'; const LANGUAGES = ['Auto-detect', 'JavaScript', 'Python', 'TypeScript', 'Java', 'C++', 'Go', 'Rust', 'PHP', 'Ruby', 'CSS', 'HTML', 'SQL', 'Other']; function ScoreBar({ label, value, max = 100 }) { const pct = Math.round((Number(value) / max) * 100); const barColor = pct >= 80 ? '#238636' : pct >= 50 ? '#9e6a03' : '#da3633'; return (
{label} {value}/{max}
); } function SeverityBadge({ level }) { const colors = { critical: '#da3633', high: '#da3633', nuclear: '#da3633', medium: '#9e6a03', warning: '#9e6a03', spicy: '#9e6a03', low: '#238636', info: '#388bfd', mild: '#238636' }; const bg = colors[level] || '#30363d'; return {level}; } function GradeDisplay({ grade }) { const gradeColors = { 'A+': '#238636', 'A': '#238636', 'A-': '#2ea043', 'B+': '#56d364', 'B': '#9e6a03', 'B-': '#9e6a03', 'C+': '#d29922', 'C': '#d29922', 'C-': '#e3b341', 'D+': '#da3633', 'D': '#da3633', 'D-': '#da3633', 'F': '#da3633' }; const color = gradeColors[grade] || '#8b949e'; return (
{grade}
Letter Grade
); } export default function App() { const [code, setCode] = useState(''); const [language, setLanguage] = useState('Auto-detect'); const [result, setResult] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [activeTab, setActiveTab] = useState('overview'); const handleRoast = async () => { if (!code.trim()) { setError('Paste some code first!'); return; } setLoading(true); setError(''); setResult(null); try { const data = await roastCode(code, language === 'Auto-detect' ? '' : language); setResult(data); setActiveTab('overview'); } catch (err) { setError(err.message); } finally { setLoading(false); } }; const getHireClass = (v) => { if (!v) return 'maybe'; if (v.includes('YES')) return 'yes'; if (v.includes('MAYBE')) return 'maybe'; return 'no'; }; if (loading) { return (

Code Roast Battle

Chef CodeRamsay is performing deep analysis...

Security scan, performance review, clean code audit...

); } const tabs = [ { id: 'overview', label: 'Overview' }, { id: 'security', label: 'Security' }, { id: 'performance', label: 'Performance' }, { id: 'cleancode', label: 'Clean Code' }, { id: 'issues', label: 'Issues' }, { id: 'tests', label: 'Tests' }, { id: 'rewrite', label: 'Rewrite' }, ]; if (result) { return (

Code Roast Battle

“{result.openingRoast}”
{/* Tab Navigation */}
{tabs.map(t => ( ))}
{/* OVERVIEW TAB */} {activeTab === 'overview' && (
{result.overallScore}/100
Overall Score
{result.letterGrade &&
}
{result.wouldHire}
{result.roastLevel}
{/* Score Overview Bars */}
Score Breakdown
{result.securityAnalysis && } {result.performanceAnalysis && } {result.bestPractices && } {result.cleanCodeScore != null && } {result.maintainabilityIndex != null && }
{/* Dependency Analysis */} {result.dependencyAnalysis && (
Dependency / Import Analysis
{result.dependencyAnalysis.unusedImports?.length > 0 && (
Unused Imports
{result.dependencyAnalysis.unusedImports.map((u, i) => {u})}
)} {result.dependencyAnalysis.missingImports?.length > 0 && (
Missing Imports
{result.dependencyAnalysis.missingImports.map((m, i) => {m})}
)} {result.dependencyAnalysis.suggestions?.length > 0 && (
Suggestions
{result.dependencyAnalysis.suggestions.map((s, i) =>
- {s}
)}
)}
)}
)} {/* SECURITY TAB */} {activeTab === 'security' && result.securityAnalysis && (
Security Analysis

{result.securityAnalysis.summary}

{result.securityAnalysis.vulnerabilities?.map((v, i) => (
{v.type}
{v.description}
{v.location &&
Location: {v.location}
}
Fix: {v.fix}
{v.roast &&
{v.roast}
}
))} {(!result.securityAnalysis.vulnerabilities || result.securityAnalysis.vulnerabilities.length === 0) && (
No security vulnerabilities detected. Chef is impressed... for once.
)}
)} {/* PERFORMANCE TAB */} {activeTab === 'performance' && result.performanceAnalysis && (
Performance Analysis
{result.performanceAnalysis.timeComplexity && (
Time
{result.performanceAnalysis.timeComplexity}
)} {result.performanceAnalysis.spaceComplexity && (
Space
{result.performanceAnalysis.spaceComplexity}
)}

{result.performanceAnalysis.summary}

{result.performanceAnalysis.issues?.map((issue, i) => (
{issue.issue}
Suggestion: {issue.suggestion}
))}
)} {/* CLEAN CODE TAB */} {activeTab === 'cleancode' && (
{result.cleanCodeBreakdown && (
Clean Code Breakdown (Robert C. Martin)
)} {result.maintainabilityIndex != null && (
Maintainability Index
)} {/* Best Practices */} {result.bestPractices?.violations?.length > 0 && (
Best Practice Violations
{result.bestPractices.violations.map((v, i) => (
{v.practice}
{v.description}
Fix: {v.fix}
))}
)} {/* Code Smells */} {result.codeSmells?.length > 0 && (
Code Smells
{result.codeSmells.map((s, i) => (
{typeof s === 'string' ? s : s.smell} {s.severity && }
{s.location &&
Location: {s.location}
} {s.description &&
{s.description}
}
))}
)}
)} {/* ISSUES TAB */} {activeTab === "issues" && (
{result.issues?.length > 0 && (
Issues Found
{result.issues.map((issue, i) => (
{issue.line}
“{issue.roast}“
Fix: {issue.fix}
))}
)}
)} {/* TESTS TAB */} {activeTab === "tests" && (
{result.testSuggestions?.length > 0 && (
Suggested Tests
{result.testSuggestions.map((t, i) => (
{t.type}
{t.description}
))}
)}
)} {/* REWRITE TAB */} {activeTab === "rewrite" && (
{result.rewrittenCode && (
How It SHOULD Look
{result.rewrittenCode}
)}
)}
“{result.closingRoast}“
); } return (

Code Roast Battle

“This code is so bad, even the compiler is crying!“ - Chef CodeRamsay

{error &&

{error}

}