Skip to content

Commit

Permalink
cover letter added
Browse files Browse the repository at this point in the history
  • Loading branch information
kondaurovDev committed Feb 11, 2025
1 parent 2717351 commit 8972459
Show file tree
Hide file tree
Showing 11 changed files with 140 additions and 68 deletions.

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docs/cv-maker/assets/index-CpA7MgDL.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion docs/cv-maker/assets/index-yRNwTtQE.css

This file was deleted.

4 changes: 2 additions & 2 deletions docs/cv-maker/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
<script defer src="https://cdn.jsdelivr.net/npm/@monaco-editor/[email protected]/lib/umd/monaco-loader.min.js"></script>
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>✍️</text></svg>">
<title>CV Maker</title>
<script type="module" crossorigin src="./assets/index-Hi6j_poh.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-yRNwTtQE.css">
<script type="module" crossorigin src="./assets/index-C8cJAPg2.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-CpA7MgDL.css">
</head>

<body x-data style="display: flex; flex-direction: column;">
Expand Down
7 changes: 7 additions & 0 deletions docs/cv-maker/john-doe.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
"expertise": [
"Frontend", "UI/UX"
],
"coverLetter": {
"position": "React developer",
"content": [
"I'm really good at fronted and I will be <b>great asset</b> at your company",
"Your company needs a developer who can work remotely. I've experience working experience in distibuted teams"
]
},
"expertSummary": [
"Skillful frontend developer with UX/UI practical experience"
],
Expand Down
20 changes: 20 additions & 0 deletions docs/cv-maker/resume-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,26 @@
"name": {
"$ref": "#/$defs/NonEmptyString"
},
"coverLetter": {
"type": "object",
"required": [
"position",
"content"
],
"properties": {
"position": {
"$ref": "#/$defs/NonEmptyString"
},
"content": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/NonEmptyString"
}
}
},
"additionalProperties": false
},
"expertise": {
"type": "array",
"minItems": 1,
Expand Down
7 changes: 6 additions & 1 deletion src/cv-maker/core/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ export class EmploymentRecord
export class Me
extends S.Class<Me>("Me")({
name: S.NonEmptyString,
coverLetter:
S.Struct({
position: S.NonEmptyString,
content: S.NonEmptyString.pipe(S.NonEmptyArray)
}).pipe(S.optional),
expertise: S.NonEmptyString.pipe(S.NonEmptyArray),
location: S.NonEmptyString.pipe(S.optional),
phone: S.NonEmptyString.pipe(S.optional),
Expand All @@ -86,5 +91,5 @@ export class ResumeObject
$schema: S.NonEmptyString.pipe(S.optional),
me: Me,
technologies: ProjectTechnology.pipe(S.NonEmptyArray),
employmentHistory: EmploymentRecord.pipe(S.NonEmptyArray)
employmentHistory: EmploymentRecord.pipe(S.NonEmptyArray),
}) { };
123 changes: 68 additions & 55 deletions src/cv-maker/core/template.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,50 +2,63 @@ import { EmploymentRecord, ProjectDetails, ProjectTechnology, ResumeObject } fro
import { DateTime, pipe, Array } from "effect";

export function Resume(resume: ResumeObject) {
const coverLetter = resume.me.coverLetter;
return (
<div id="resume">

{ResumeHead(resume)}
{ResumeHead(resume)}

<div className="section-header">
<span id="label">Summary</span>
</div>

<div id="summary">
{resume.me.expertSummary.map(s =>
<p dangerouslySetInnerHTML={{ __html: s }}></p>
)}
</div>

<div className="section-header">
<span id="label">Skills</span>
</div>

<div id="skills">

{Object.entries(getSkills(resume)).map(([ category, group ]) =>
<div className="skill-group">
<span>{category}</span>
<div className="group-list">
{group.map(t =>
<span className="stack-item">{t.technology.name}</span>
)}
{coverLetter ? (
<div>
<div className="section-header">
<span id="label">Why I'm the Right Choice for "{coverLetter.position}"</span>
</div>
<div id="summary">
{coverLetter.content.map(line => <p dangerouslySetInnerHTML={{ __html: line }}></p>)}
</div>

</div>
): null}

<div className="section-header">
<span id="label">Summary</span>
</div>

<div id="summary">
{resume.me.expertSummary.map(s =>
<p dangerouslySetInnerHTML={{ __html: s }}></p>
)}
</div>

<div className="section-header">
<span id="label">Skills</span>
</div>

<div id="skills">

{Object.entries(getSkills(resume)).map(([category, group]) =>
<div className="skill-group">
<span>{category}</span>
<div className="group-list">
{group.map(t =>
<span className="stack-item">{t.technology.name}</span>
)}
</div>
</div>
)}

</div>

<div className="section-header">
<span id="label">Employment</span>
</div>

<div id="employment">
{EmploymentHistory(resume)}
</div>
)}

</div>

<div className="section-header">
<span id="label">Employment</span>
</div>

<div id="employment">
{EmploymentHistory(resume)}
</div>

</div>

)
}

Expand Down Expand Up @@ -120,27 +133,27 @@ function ResumeHead(resume: ResumeObject) {
function CompanyProject(project: ProjectDetails) {
return (
<div className="project">
<div style={{ display: "flex" }}>
<div style={{ marginBottom: "3px" }}>
<b>Project: </b>
<span>{project.title}</span>
</div>
<div style={{ marginLeft: "auto" }}>
<b>Roles: </b>
<span>{project.roles.join('/')}</span>
<div style={{ display: "flex" }}>
<div style={{ marginBottom: "3px" }}>
<b>Project: </b>
<span>{project.title}</span>
</div>
<div style={{ marginLeft: "auto" }}>
<b>Roles: </b>
<span>{project.roles.join('/')}</span>
</div>
</div>
<span
style={{ display: "block" }}
><b>Stack: </b>{ProjectStack(project)}</span>
<ul>
{project.achivements.map(achivement =>
<div>
<li>{achivement.human ?? achivement.technical}</li>
</div>
)}
</ul>
</div>
<span
style={{display: "block"}}
><b>Stack: </b>{ProjectStack(project)}</span>
<ul>
{project.achivements.map(achivement =>
<div>
<li>{achivement.human ?? achivement.technical}</li>
</div>
)}
</ul>
</div>
)
}

Expand Down
7 changes: 7 additions & 0 deletions src/cv-maker/static/john-doe.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
"expertise": [
"Frontend", "UI/UX"
],
"coverLetter": {
"position": "React developer",
"content": [
"I'm really good at fronted and I will be <b>great asset</b> at your company",
"Your company needs a developer who can work remotely. I've experience working experience in distibuted teams"
]
},
"expertSummary": [
"Skillful frontend developer with UX/UI practical experience"
],
Expand Down
20 changes: 20 additions & 0 deletions src/cv-maker/static/resume-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,26 @@
"name": {
"$ref": "#/$defs/NonEmptyString"
},
"coverLetter": {
"type": "object",
"required": [
"position",
"content"
],
"properties": {
"position": {
"$ref": "#/$defs/NonEmptyString"
},
"content": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/NonEmptyString"
}
}
},
"additionalProperties": false
},
"expertise": {
"type": "array",
"minItems": 1,
Expand Down
2 changes: 1 addition & 1 deletion src/cv-maker/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ div#contact {
div#profiles {
display: flex;
gap: 5px;
padding-top: 5px;
padding-top: 10px;
padding-bottom: 5px;
text-decoration: none;
}
Expand Down

0 comments on commit 8972459

Please sign in to comment.