This commit is contained in:
Ivan Dimitrov 2023-11-13 17:11:07 +02:00
parent a59eb9830b
commit ff3c4a41c5

80
cv.tsx
View File

@ -17,6 +17,7 @@ type Experience = {
description: string description: string
technologies: string[] technologies: string[]
links?: A[] links?: A[]
feedback?: string
} }
const tw = createTw({ const tw = createTw({
@ -79,8 +80,6 @@ const tech = {
], ],
web: [ web: [
"JavaScript", "JavaScript",
"TypeScript",
"React",
"HTML", "HTML",
"CSS" "CSS"
], ],
@ -145,10 +144,20 @@ const tech = {
"html2text", "html2text",
"Poetry", "Poetry",
], ],
javascript: [
"TypeScript",
"React",
],
nextjs: [ nextjs: [
"NextJS 12", "NextJS 12",
"NextJS 13", "NextJS 13",
"NextJS 14", "NextJS 14",
"NextAuth",
"Prisma",
"Vercel",
"Vercel Postgres",
"Formik",
"Framer Motion",
], ],
styles: [ styles: [
"CSS", "CSS",
@ -156,6 +165,8 @@ const tech = {
"TailwindCSS", "TailwindCSS",
"DaisyUI", "DaisyUI",
"tailwind-scrollbar", "tailwind-scrollbar",
"FontAwesome",
"nProgress",
], ],
general: [ general: [
"Markdown", "Markdown",
@ -194,8 +205,12 @@ const hoi2Tech: string[] = filterKeysIncl(techKeys,
["python", "nextjs", "styles", "linux", "git", "general"] ["python", "nextjs", "styles", "linux", "git", "general"]
) )
// @ts-ignore // @ts-ignore
.map(e => tech[e]).flat().concat(["Wix"]) .map(e => tech[e]).flat().concat(["Wix", "Fuse.js"])
const stepsyTech: string[] = filterKeysIncl(techKeys,
["nextjs", "styles", "linux", "git", "general"]
)
// @ts-ignore
.map(e => tech[e]).flat().concat(["googleapis", "Fuse.js", "Interact.js"])
const experience = ({ const experience = ({
company, company,
@ -205,7 +220,8 @@ const experience = ({
to, to,
description, description,
technologies, technologies,
links links,
feedback
}: Experience) => }: Experience) =>
<View style={tw(sectionStyles)}> <View style={tw(sectionStyles)}>
<View style={tw("w-full flex flex-col mt-2 border-2 border-slate-50 p-4 rounded-2xl")}> <View style={tw("w-full flex flex-col mt-2 border-2 border-slate-50 p-4 rounded-2xl")}>
@ -231,7 +247,12 @@ const experience = ({
<View style={tw("m-4")}> <View style={tw("m-4")}>
<Text>{description}</Text> <Text>{description}</Text>
</View> </View>
<View style={tw("flex flex-row flex-wrap")}> {feedback && (
<View style={tw("w-full m-auto mb-1")}>
<Text>Result: "{feedback}"</Text>
</View>
)}
<View style={tw("flex flex-row flex-wrap m-2")}>
{technologies.map(t => ( {technologies.map(t => (
<View key={t} style={tw("flex flex-row")}> <View key={t} style={tw("flex flex-row")}>
<View style={tw("border-2 border-teal-200 h-1 mx-1 mt-1 rounded-full")}></View> <View style={tw("border-2 border-teal-200 h-1 mx-1 mt-1 rounded-full")}></View>
@ -273,17 +294,48 @@ const CV = () => (
style={tw(pageStyles)}> style={tw(pageStyles)}>
<Intro /> <Intro />
{divider} {divider}
<Text style={tw("text-3xl mt-2")}>Experience</Text> <Text style={tw("text-2xl mt-2")}>Experience</Text>
<View style={tw("my-auto")}> <View style={tw("my-auto")}>
{experience({
company: "N/A",
position: "Freelance Systems Administrator",
location: "UK",
from: new Date("21 Sep 2023"),
to: new Date("5 Nov 2023"),
description: "Diagnosed and analyzed a faulty LUKS encrypted drive on a remote server.",
technologies: tech.linux,
feedback: "Ivan was great to work with. Bought his own ideas and expertise, and workshopped a solution with me. Has a wealth of knowledge and I'd very happily work with him again."
})}
{experience({
company: "Stepsy",
position: "Freelance Full Stack Software Developer",
location: "Estonia",
from: new Date("29 Jul 2023"),
to: new Date("5 Nov 2023"),
description: "Created a multi-tenant knowledge base website based on Google APIs",
technologies: stepsyTech,
links: [
{ text: "Case Study", href: "https://www.idimitrov.dev/c/cases/stepsy.wiki.md" }
],
feedback: "Great experience working with Ivan! Ready to implement your vision, also advises on how it should be done."
})}
{experience({ {experience({
company: "HOI 2 Bunker", company: "HOI 2 Bunker",
position: "Freelance Full Stack Software Developer", position: "Freelance Full Stack Software Developer",
location: "UK", location: "UK",
from: new Date("22 Jun 2023"), from: new Date("22 Jun 2023"),
to: new Date("27 Jun 2023"), to: new Date("27 Jun 2023"),
description: "Scraped an old wiki website with over 500 pages and created a new static site generated using Markdown.", description: "Scraped an old wiki website with over 500 pages and created a new static site generated using Markdown and NextJS.",
technologies: hoi2Tech technologies: hoi2Tech,
feedback: "Ivan went above and beyond to make sure I was happy with the final result"
})} })}
</View>
</Page>
<Page
size="A4"
style={tw(pageStyles)}
>
<View style={tw("my-auto")}>
{experience({ {experience({
company: "North Concepts", company: "North Concepts",
position: "Technical Writer for Java Data Pipeline Library", position: "Technical Writer for Java Data Pipeline Library",
@ -291,7 +343,8 @@ const CV = () => (
from: new Date("25 May 2023"), from: new Date("25 May 2023"),
to: new Date("20 Jun 2023"), to: new Date("20 Jun 2023"),
description: "Wrote technical documentation and content for the DataPipeline library by NorthConcepts.", description: "Wrote technical documentation and content for the DataPipeline library by NorthConcepts.",
technologies: ncTech technologies: ncTech,
feedback: "Ivan is a talented developer and was able to understand and write about our developer framework without difficulty."
})} })}
{experience({ {experience({
company: "RA Creative", company: "RA Creative",
@ -307,13 +360,6 @@ const CV = () => (
{ text: "Wells Fargo", href: "https://www.wellsfargo.com/" }, { text: "Wells Fargo", href: "https://www.wellsfargo.com/" },
] ]
})} })}
</View>
</Page>
<Page
size="A4"
style={tw(pageStyles)}
>
<View style={tw("my-auto")}>
{experience({ {experience({
company: "Central Net", company: "Central Net",
position: "Full Stack + Mobile Software Developer", position: "Full Stack + Mobile Software Developer",