a whole bunch of experience
This commit is contained in:
parent
90fbed5424
commit
18d924897a
124
cv.tsx
124
cv.tsx
@ -1,8 +1,13 @@
|
||||
import { Page, Text, View, Document, Link } from "@react-pdf/renderer";
|
||||
import { Page, Text, View, Document, Link, Svg, Path } from "@react-pdf/renderer";
|
||||
import ReactPDF from "@react-pdf/renderer";
|
||||
import fs from "fs";
|
||||
import { createTw } from "react-pdf-tailwind";
|
||||
|
||||
type A = {
|
||||
text: string
|
||||
href: string
|
||||
}
|
||||
|
||||
type Experience = {
|
||||
company: string
|
||||
position: string
|
||||
@ -11,13 +16,26 @@ type Experience = {
|
||||
to: Date
|
||||
description: string
|
||||
technologies: string[]
|
||||
links?: A[]
|
||||
}
|
||||
|
||||
const tw = createTw({
|
||||
});
|
||||
|
||||
const link = "no-underline text-red-50"
|
||||
const section = "w-full flex flex-col m-4"
|
||||
const linkStyles = "no-underline text-slate-50 flex flex-row gap-1"
|
||||
const pageStyles = "w-full h-full text-slate-50 bg-slate-950 flex flex-col p-12 text-base"
|
||||
const sectionStyles = "w-full flex flex-col m-4"
|
||||
const svg = (paths: string[]) =>
|
||||
<Svg style={tw("w-4 h-4")} viewBox="0 0 19 19">
|
||||
{paths.map(p => (
|
||||
<Path key={p} fill="#99f6e4" d={p} />
|
||||
))}
|
||||
</Svg>
|
||||
const linkPath = "M11.013 7.962a3.519 3.519 0 0 0-4.975 0l-3.554 3.554a3.518 3.518 0 0 0 4.975 4.975l.461-.46m-.461-4.515a3.518 3.518 0 0 0 4.975 0l3.553-3.554a3.518 3.518 0 0 0-4.974-4.975L10.3 3.7"
|
||||
const githubPath = "M10 .333A9.911 9.911 0 0 0 6.866 19.65c.5.092.678-.215.678-.477 0-.237-.01-1.017-.014-1.845-2.757.6-3.338-1.169-3.338-1.169a2.627 2.627 0 0 0-1.1-1.451c-.9-.615.07-.6.07-.6a2.084 2.084 0 0 1 1.518 1.021 2.11 2.11 0 0 0 2.884.823c.044-.503.268-.973.63-1.325-2.2-.25-4.516-1.1-4.516-4.9A3.832 3.832 0 0 1 4.7 7.068a3.56 3.56 0 0 1 .095-2.623s.832-.266 2.726 1.016a9.409 9.409 0 0 1 4.962 0c1.89-1.282 2.717-1.016 2.717-1.016.366.83.402 1.768.1 2.623a3.827 3.827 0 0 1 1.02 2.659c0 3.807-2.319 4.644-4.525 4.889a2.366 2.366 0 0 1 .673 1.834c0 1.326-.012 2.394-.012 2.72 0 .263.18.572.681.475A9.911 9.911 0 0 0 10 .333Z"
|
||||
const emailPath1 = "m10.036 8.278 9.258-7.79A1.979 1.979 0 0 0 18 0H2A1.987 1.987 0 0 0 .641.541l9.395 7.737Z"
|
||||
const emailPath2 = "M11.241 9.817c-.36.275-.801.425-1.255.427-.428 0-.845-.138-1.187-.395L0 2.6V14a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V2.5l-8.759 7.317Z"
|
||||
const globePath = "M6.487 1.746c0 4.192 3.592 1.66 4.592 5.754 0 .828 1 1.5 2 1.5s2-.672 2-1.5a1.5 1.5 0 0 1 1.5-1.5h1.5m-16.02.471c4.02 2.248 1.776 4.216 4.878 5.645C10.18 13.61 9 19 9 19m9.366-6h-2.287a3 3 0 0 0-3 3v2m6-8a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
|
||||
|
||||
const divider =
|
||||
<View style={tw("w-full mt-4")}>
|
||||
@ -26,13 +44,13 @@ const divider =
|
||||
|
||||
|
||||
const github =
|
||||
<Link src="https://github.com/ivandimitrov8080" style={tw(link)}>github/ivandimitrov8080</Link>
|
||||
<Link src="https://github.com/ivandimitrov8080" style={tw(linkStyles)}>{svg([githubPath])}<Text>github/ivandimitrov8080</Text></Link>
|
||||
const upwork =
|
||||
<Link src="https://www.upwork.com/freelancers/idimitrov" style={tw(link)}>upwork/freelancers/idimitrov</Link>
|
||||
<Link src="https://www.upwork.com/freelancers/idimitrov" style={tw(linkStyles)}>{svg([linkPath])}<Text>upwork/freelancers/idimitrov</Text></Link>
|
||||
const resume =
|
||||
<Link src="https://www.idimitrov.dev" style={tw(link)}>idimitrov.dev</Link>
|
||||
<Link src="https://www.idimitrov.dev" style={tw(linkStyles)}>{svg([globePath])}<Text>idimitrov.dev</Text></Link>
|
||||
const email =
|
||||
<Link src="mailto:ivan@idimitrov.dev" style={tw(link)}>ivan@idimitrov.dev</Link>
|
||||
<Link src="mailto:ivan@idimitrov.dev" style={tw(linkStyles)}>{svg([emailPath1, emailPath2])}<Text>ivan@idimitrov.dev</Text></Link>
|
||||
|
||||
const tech = {
|
||||
android: [
|
||||
@ -85,6 +103,12 @@ const tech = {
|
||||
"Monit",
|
||||
"CLI",
|
||||
],
|
||||
git: [
|
||||
"git",
|
||||
"GitHub",
|
||||
"GitLab",
|
||||
"BitBucket",
|
||||
],
|
||||
hybris: [
|
||||
"SAP hybris",
|
||||
"ZK Framework",
|
||||
@ -94,7 +118,20 @@ const tech = {
|
||||
"Adyen",
|
||||
"V12",
|
||||
"Wells Fargo Open Banking APIs",
|
||||
]
|
||||
],
|
||||
dataIntegration: [
|
||||
"Spring Batch",
|
||||
"Data Pipeline",
|
||||
"Scriptella",
|
||||
"Easy Batch",
|
||||
"GETL",
|
||||
"Apache Camel",
|
||||
"Apache Samza",
|
||||
"Apache Flink",
|
||||
"Apache Storm",
|
||||
"Apache Spark",
|
||||
"Apache NiFi",
|
||||
],
|
||||
}
|
||||
|
||||
const techKeys = [...Object.keys(tech)] as const
|
||||
@ -116,7 +153,8 @@ const experience = ({
|
||||
from,
|
||||
to,
|
||||
description,
|
||||
technologies
|
||||
technologies,
|
||||
links
|
||||
}: Experience) => (
|
||||
<View style={tw("w-full flex flex-col mt-2 border-2 border-slate-50 p-4 rounded-2xl")}>
|
||||
<View style={tw("flex flex-row flex-wrap gap-1")}>
|
||||
@ -128,14 +166,24 @@ const experience = ({
|
||||
<Text>to</Text>
|
||||
<Text>{to.toDateString()}</Text>
|
||||
</View>
|
||||
{links && (
|
||||
<View style={tw("flex flex-row flex-wrap w-full gap-2 justify-center")}>
|
||||
{links.map(l => (
|
||||
<View key={l.href} style={tw("flex flex-row gap-2")}>
|
||||
{svg([linkPath])}
|
||||
<Text style={tw("text-sm")}>{l.text}</Text>
|
||||
</View>
|
||||
))}
|
||||
</View>
|
||||
)}
|
||||
<View style={tw("m-4")}>
|
||||
<Text>{description}</Text>
|
||||
</View>
|
||||
<View style={tw("flex flex-row flex-wrap")}>
|
||||
{technologies.map(t => (
|
||||
<View key={t} style={tw("flex flex-row items-center")}>
|
||||
<View key={t} style={tw("flex flex-row")}>
|
||||
<View style={tw("border-2 border-teal-200 h-1 mx-1 mb-1 rounded-full")}></View>
|
||||
<Text style={tw("text-sm")}>{t}</Text>
|
||||
<Text style={tw("text-xs")}>{t}</Text>
|
||||
</View>
|
||||
))}
|
||||
</View>
|
||||
@ -152,25 +200,48 @@ const Links = () => (
|
||||
)
|
||||
|
||||
const Experience = () => (
|
||||
<View style={tw(section)}>
|
||||
<View style={tw(sectionStyles)}>
|
||||
<Text style={tw("text-3xl")}>Experience</Text>
|
||||
{experience({
|
||||
company: "Central Net",
|
||||
position: "Software Developer",
|
||||
location: "Blagoevgrad, Bulgaria",
|
||||
from: new Date("May 2016"),
|
||||
to: new Date("May 2020"),
|
||||
description: "Developed a full-stack web app helping students book exams, browse resources, see events, news and more.",
|
||||
technologies: cnetTech
|
||||
company: "HOI 2 Bunker",
|
||||
position: "Freelance Full Stack Software Developer",
|
||||
location: "UK",
|
||||
from: new Date("22 Jun 2023"),
|
||||
to: new Date("27 Jun 2023"),
|
||||
description: "",
|
||||
technologies: raTech
|
||||
})}
|
||||
{experience({
|
||||
company: "North Concepts",
|
||||
position: "Technical Writer for Java Data Pipeline Library",
|
||||
location: "Canada",
|
||||
from: new Date("25 May 2023"),
|
||||
to: new Date("20 Jun 2023"),
|
||||
description: "Wrote technical documentation and content for the DataPipeline library by NorthConcepts.",
|
||||
technologies: [...tech.java, ...tech.dataIntegration, ...tech.git, "WordPress"]
|
||||
})}
|
||||
{experience({
|
||||
company: "RA Creative",
|
||||
position: "Software Developer",
|
||||
position: "Full Stack Software Developer",
|
||||
location: "Nottingham, UK",
|
||||
from: new Date("Dec 2020"),
|
||||
to: new Date("20 Jan 2023"),
|
||||
description: "Worked on seven international eCommerce web apps serving customers in the US and Europe.",
|
||||
technologies: raTech
|
||||
technologies: raTech,
|
||||
links: [
|
||||
{ text: "RA Creative", href: "https://racreative.co.uk/" },
|
||||
{ text: "Parcel Lab", href: "https://parcellab.com/" },
|
||||
{ text: "Wells Fargo", href: "https://www.wellsfargo.com/" },
|
||||
]
|
||||
})}
|
||||
{experience({
|
||||
company: "Central Net",
|
||||
position: "Full Stack + Mobile Software Developer",
|
||||
location: "Blagoevgrad, Bulgaria",
|
||||
from: new Date("May 2016"),
|
||||
to: new Date("May 2020"),
|
||||
description: "Developed a full-stack web + android app helping students book exams, browse resources, see events, news and more.",
|
||||
technologies: cnetTech
|
||||
})}
|
||||
</View>
|
||||
)
|
||||
@ -184,10 +255,17 @@ const Intro = () => (
|
||||
)
|
||||
|
||||
const CV = () => (
|
||||
<Document>
|
||||
<Document
|
||||
title="CV"
|
||||
author="Ivan Kirilov Dimitrov"
|
||||
subject="My professional resume"
|
||||
creator="Ivan Dimitrov with react-pdf"
|
||||
producer="Ivan Dimitrov with react-pdf"
|
||||
keywords="Ivan Dimitrov Software Developer"
|
||||
>
|
||||
<Page
|
||||
size="A4"
|
||||
style={tw("w-full h-full text-slate-50 bg-slate-950 flex flex-col p-12 text-base")}>
|
||||
style={tw(pageStyles)}>
|
||||
<Intro />
|
||||
{divider}
|
||||
<Experience />
|
||||
|
Loading…
Reference in New Issue
Block a user