Using nix for cross platform dev
All checks were successful
Docker Deploy / build-and-push (push) Successful in 6m34s
All checks were successful
Docker Deploy / build-and-push (push) Successful in 6m34s
This commit is contained in:
@ -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",
|
||||
|
Reference in New Issue
Block a user