"use client"; import Image from "next/image"; import { FaBriefcase, FaUserGraduate, FaTools, FaFileUpload } from "react-icons/fa"; import { useState } from "react"; import CvSummaryPanel from "@/components/CvSummaryPanel"; interface SectionData { score: number; suggestions: string[]; summary: string; keywords: { [key: string]: number }; } interface OpenAiStats { input_tokens: number; output_tokens: number; total_tokens: number; cost: number; } interface SummaryData { sections: { Summary?: SectionData; "Work Experience"?: SectionData; Education?: SectionData; Skills?: SectionData; Certifications?: SectionData; Projects?: SectionData; }; openai_stats?: OpenAiStats; error?: string; } export default function Home() { const [file, setFile] = useState(null); const [summaryData, setSummaryData] = useState(null); const [loading, setLoading] = useState(false); const [isSummaryVisible, setIsSummaryVisible] = useState(false); const [showDebug, setShowDebug] = useState(false); const handleFileChange = (event: React.ChangeEvent) => { if (event.target.files) { setFile(event.target.files[0]); setSummaryData(null); setIsSummaryVisible(false); } }; const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); if (!file) return; setLoading(true); setSummaryData(null); setIsSummaryVisible(false); const formData = new FormData(); formData.append("cv", file); try { const response = await fetch("/api/upload-cv", { method: "POST", body: formData, }); if (response.ok) { const parsed: SummaryData = await response.json(); setSummaryData(parsed); setIsSummaryVisible(true); } else { alert("CV summary failed."); } } catch (error) { console.error("Error summarizing CV:", error); alert("An error occurred while summarizing the CV."); } finally { setLoading(false); } }; const toggleDebug = () => { setShowDebug(!showDebug); }; return (

Welcome to Your CV Upgrade

This platform is designed to help you enhance your CV and showcase your skills effectively.

Highlight your professional experience and achievements.

Showcase your educational background and certifications.

Utilize our tools to create a standout CV that gets noticed.

Are you ready to pimp your CV?

{file &&

Selected file: {file.name}

}
{/* Right Column - CV Summary Panel */}
{loading ? (
) : summaryData ? ( <> {summaryData.error ? (

{summaryData.error}

) : ( )} {summaryData.openai_stats && showDebug && (

OpenAI Stats

Input Tokens: {summaryData.openai_stats.input_tokens}

Output Tokens: {summaryData.openai_stats.output_tokens}

Total Tokens: {summaryData.openai_stats.total_tokens}

Cost: ${summaryData.openai_stats.cost}

)} ) : null}
); }