From 18d924897ae910c74f70cf31dadeece7c1ef3b2a Mon Sep 17 00:00:00 2001 From: Ivan Dimitrov Date: Mon, 13 Nov 2023 15:10:39 +0200 Subject: [PATCH] a whole bunch of experience --- cv.tsx | 124 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 101 insertions(+), 23 deletions(-) diff --git a/cv.tsx b/cv.tsx index 71ce516..aa40aab 100644 --- a/cv.tsx +++ b/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[]) => + + {paths.map(p => ( + + ))} + +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 = @@ -26,13 +44,13 @@ const divider = const github = - github/ivandimitrov8080 + {svg([githubPath])}github/ivandimitrov8080 const upwork = - upwork/freelancers/idimitrov + {svg([linkPath])}upwork/freelancers/idimitrov const resume = - idimitrov.dev + {svg([globePath])}idimitrov.dev const email = - ivan@idimitrov.dev + {svg([emailPath1, emailPath2])}ivan@idimitrov.dev 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) => ( @@ -128,14 +166,24 @@ const experience = ({ to {to.toDateString()} + {links && ( + + {links.map(l => ( + + {svg([linkPath])} + {l.text} + + ))} + + )} {description} {technologies.map(t => ( - + - {t} + {t} ))} @@ -152,25 +200,48 @@ const Links = () => ( ) const Experience = () => ( - + Experience {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 })} ) @@ -184,10 +255,17 @@ const Intro = () => ( ) const CV = () => ( - + + style={tw(pageStyles)}> {divider}