Using nix for cross platform dev
All checks were successful
Docker Deploy / build-and-push (push) Successful in 6m34s

This commit is contained in:
2025-06-30 13:49:26 -06:00
parent 5649c9592f
commit 0f6054701b
5 changed files with 261 additions and 260 deletions

View File

@ -184,8 +184,8 @@ const generateResumeHTML = async (data: ResumeData): Promise<string> => {
?.map((edu) => {
const detailsList = edu.details
? edu.details
.map((detail) => `<li class="mb-1">${detail}</li>`)
.join("")
.map((detail) => `<li class="mb-1">${detail}</li>`)
.join("")
: "";
return `
@ -263,23 +263,21 @@ const generateResumeHTML = async (data: ResumeData): Promise<string> => {
<h1 class="text-3xl font-bold text-gray-900 mb-1">${data.basics.name}</h1>
<div class="flex justify-center items-center flex-wrap gap-4 text-xs text-gray-600">
${data.basics.email ? `<div class="flex items-center gap-1">${emailIcon} ${data.basics.email}</div>` : ""}
${
data.basics.profiles
?.map((profile) => {
const icon = profileIcons[profile.network] || "";
const displayUrl = profile.url
.replace(/^https?:\/\//, "")
.replace(/\/$/, "");
return `<div class="flex items-center gap-1">${icon} ${displayUrl}</div>`;
})
.join("") || ""
}
${data.basics.profiles
?.map((profile) => {
const icon = profileIcons[profile.network] || "";
const displayUrl = profile.url
.replace(/^https?:\/\//, "")
.replace(/\/$/, "");
return `<div class="flex items-center gap-1">${icon} ${displayUrl}</div>`;
})
.join("") || ""
}
</div>
</header>
${
data.summary && resumeConfig.sections.summary?.enabled
? `
${data.summary && resumeConfig.sections.summary?.enabled
? `
<section class="mb-3">
<h2 class="text-sm font-semibold text-gray-900 mb-2 pb-1 border-b border-gray-300">
${resumeConfig.sections.summary.title || "Summary"}
@ -287,100 +285,100 @@ const generateResumeHTML = async (data: ResumeData): Promise<string> => {
<div class="text-xs text-gray-700 leading-tight">${data.summary.content}</div>
</section>
`
: ""
}
: ""
}
<div class="grid grid-cols-2 gap-4">
<div class="space-y-4">
${generateColumnSections(layout.leftColumn, {
experience: {
data: data.experience,
html: experienceHTML,
title:
resumeConfig.sections.experience?.title || "Experience",
enabled: resumeConfig.sections.experience?.enabled,
spacing: "space-y-3",
},
volunteer: {
data: data.volunteer,
html: volunteerHTML,
title:
resumeConfig.sections.volunteer?.title ||
"Volunteer Work",
enabled: resumeConfig.sections.volunteer?.enabled,
spacing: "space-y-2",
},
awards: {
data: data.awards,
html: awardsHTML,
title:
resumeConfig.sections.awards?.title ||
"Awards & Recognition",
enabled: resumeConfig.sections.awards?.enabled,
spacing: "space-y-2",
},
skills: {
data: data.skills,
html: skillsHTML,
title: resumeConfig.sections.skills?.title || "Skills",
enabled: resumeConfig.sections.skills?.enabled,
spacing: "space-y-1",
},
education: {
data: data.education,
html: educationHTML,
title:
resumeConfig.sections.education?.title || "Education",
enabled: resumeConfig.sections.education?.enabled,
spacing: "space-y-3",
},
})}
experience: {
data: data.experience,
html: experienceHTML,
title:
resumeConfig.sections.experience?.title || "Experience",
enabled: resumeConfig.sections.experience?.enabled,
spacing: "space-y-3",
},
volunteer: {
data: data.volunteer,
html: volunteerHTML,
title:
resumeConfig.sections.volunteer?.title ||
"Volunteer Work",
enabled: resumeConfig.sections.volunteer?.enabled,
spacing: "space-y-2",
},
awards: {
data: data.awards,
html: awardsHTML,
title:
resumeConfig.sections.awards?.title ||
"Awards & Recognition",
enabled: resumeConfig.sections.awards?.enabled,
spacing: "space-y-2",
},
skills: {
data: data.skills,
html: skillsHTML,
title: resumeConfig.sections.skills?.title || "Skills",
enabled: resumeConfig.sections.skills?.enabled,
spacing: "space-y-1",
},
education: {
data: data.education,
html: educationHTML,
title:
resumeConfig.sections.education?.title || "Education",
enabled: resumeConfig.sections.education?.enabled,
spacing: "space-y-3",
},
})}
</div>
<div class="space-y-4">
${generateColumnSections(layout.rightColumn, {
experience: {
data: data.experience,
html: experienceHTML,
title:
resumeConfig.sections.experience?.title || "Experience",
enabled: resumeConfig.sections.experience?.enabled,
spacing: "space-y-3",
},
volunteer: {
data: data.volunteer,
html: volunteerHTML,
title:
resumeConfig.sections.volunteer?.title ||
"Volunteer Work",
enabled: resumeConfig.sections.volunteer?.enabled,
spacing: "space-y-2",
},
awards: {
data: data.awards,
html: awardsHTML,
title:
resumeConfig.sections.awards?.title ||
"Awards & Recognition",
enabled: resumeConfig.sections.awards?.enabled,
spacing: "space-y-2",
},
skills: {
data: data.skills,
html: skillsHTML,
title: resumeConfig.sections.skills?.title || "Skills",
enabled: resumeConfig.sections.skills?.enabled,
spacing: "space-y-1",
},
education: {
data: data.education,
html: educationHTML,
title:
resumeConfig.sections.education?.title || "Education",
enabled: resumeConfig.sections.education?.enabled,
spacing: "space-y-3",
},
})}
experience: {
data: data.experience,
html: experienceHTML,
title:
resumeConfig.sections.experience?.title || "Experience",
enabled: resumeConfig.sections.experience?.enabled,
spacing: "space-y-3",
},
volunteer: {
data: data.volunteer,
html: volunteerHTML,
title:
resumeConfig.sections.volunteer?.title ||
"Volunteer Work",
enabled: resumeConfig.sections.volunteer?.enabled,
spacing: "space-y-2",
},
awards: {
data: data.awards,
html: awardsHTML,
title:
resumeConfig.sections.awards?.title ||
"Awards & Recognition",
enabled: resumeConfig.sections.awards?.enabled,
spacing: "space-y-2",
},
skills: {
data: data.skills,
html: skillsHTML,
title: resumeConfig.sections.skills?.title || "Skills",
enabled: resumeConfig.sections.skills?.enabled,
spacing: "space-y-1",
},
education: {
data: data.education,
html: educationHTML,
title:
resumeConfig.sections.education?.title || "Education",
enabled: resumeConfig.sections.education?.enabled,
spacing: "space-y-3",
},
})}
</div>
</div>
</div>
@ -416,10 +414,8 @@ export const GET: APIRoute = async ({ request }) => {
const browser = await puppeteer.launch({
headless: true,
defaultViewport: null,
executablePath:
process.env.NODE_ENV === "production"
? "/usr/bin/google-chrome"
: undefined,
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH ||
(process.env.NODE_ENV === "production" ? "/usr/bin/google-chrome" : undefined),
args: [
"--no-sandbox",
"--disable-setuid-sandbox",