This commit is contained in:
parent
1d67745c69
commit
438f83e217
@ -11,28 +11,19 @@ const messages = defineMessages({
|
||||
defaultMessage: "Skills",
|
||||
id: "Experience.skills",
|
||||
},
|
||||
yourpass: {
|
||||
defaultMessage: "July 2021 - Present ({count} years)",
|
||||
id: "Experience.yourpass",
|
||||
},
|
||||
yoursystem: {
|
||||
defaultMessage: "February 2016 - December 2021 (5 years)",
|
||||
id: "Experience.yoursystem",
|
||||
},
|
||||
past: {
|
||||
defaultMessage: "Birth - February 2016",
|
||||
id: "Experience.past",
|
||||
},
|
||||
pastDescription: {
|
||||
defaultMessage:
|
||||
"Working on smaller projects such as chats, forum based websites, web based presentations, most notably a system for handling the driver training center and driving school agenda... Tinkering...",
|
||||
id: "Experience.pastDescription",
|
||||
},
|
||||
});
|
||||
|
||||
const approxCurrentYears = Math.round(
|
||||
const approxCurrentYears = {
|
||||
InvestBay: Math.round(
|
||||
(Date.now() - new Date("2024-02-01").getTime()) / 1000 / 60 / 60 / 24 / 365
|
||||
),
|
||||
YourPass: Math.round(
|
||||
(Date.now() - new Date("2021-06-01").getTime()) / 1000 / 60 / 60 / 24 / 365
|
||||
);
|
||||
),
|
||||
YourSystemSysOps: Math.round(
|
||||
(Date.now() - new Date("2022-01-01").getTime()) / 1000 / 60 / 60 / 24 / 365
|
||||
),
|
||||
};
|
||||
|
||||
const yourpassSkills = [
|
||||
"DevOps",
|
||||
@ -79,13 +70,40 @@ const Experience: React.FC = () => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Headline level={3}>INVESTBAY s.r.o.</Headline>
|
||||
<SubHeadline level={4}>DevOps Architect</SubHeadline>
|
||||
<Content>
|
||||
<Paragraph>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
defaultMessage: "February 2024 - Present",
|
||||
id: "Experience.investbay",
|
||||
},
|
||||
{
|
||||
// not used atm
|
||||
count: approxCurrentYears.InvestBay,
|
||||
}
|
||||
)}
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
<strong>{intl.formatMessage(messages.skills)}:</strong>{" "}
|
||||
{yourpassSkills.join(" · ")}
|
||||
</Paragraph>
|
||||
</Content>
|
||||
|
||||
<Headline level={3}>YOUR PASS s.r.o.</Headline>
|
||||
<SubHeadline level={4}>DevOps Engineer</SubHeadline>
|
||||
<Content>
|
||||
<Paragraph>
|
||||
{intl.formatMessage(messages.yourpass, {
|
||||
count: approxCurrentYears,
|
||||
})}
|
||||
{intl.formatMessage(
|
||||
{
|
||||
defaultMessage: "July 2021 - Present ({count} years)",
|
||||
id: "Experience.yourpass",
|
||||
},
|
||||
{
|
||||
count: approxCurrentYears.YourPass,
|
||||
}
|
||||
)}
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
<strong>{intl.formatMessage(messages.skills)}:</strong>{" "}
|
||||
@ -96,10 +114,35 @@ const Experience: React.FC = () => {
|
||||
<Spacer />
|
||||
|
||||
<Headline level={3}>YOUR SYSTEM s.r.o.</Headline>
|
||||
<SubHeadline level={4}>SysOps</SubHeadline>
|
||||
|
||||
<Content>
|
||||
<Paragraph>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
defaultMessage: "January 2022 - Present ({count} years)",
|
||||
id: "Experience.yoursystem",
|
||||
},
|
||||
{
|
||||
count: approxCurrentYears.YourSystemSysOps,
|
||||
}
|
||||
)}
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
<strong>{intl.formatMessage(messages.skills)}:</strong>{" "}
|
||||
{yoursystemSkills.join(" · ")}
|
||||
</Paragraph>
|
||||
</Content>
|
||||
|
||||
<SubHeadline level={4}>Lead Developer/Architect</SubHeadline>
|
||||
|
||||
<Content>
|
||||
<Paragraph>{intl.formatMessage(messages.yoursystem)}</Paragraph>
|
||||
<Paragraph>
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "February 2016 - December 2021 (5 years)",
|
||||
id: "Experience.yoursystem",
|
||||
})}
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
<strong>{intl.formatMessage(messages.skills)}:</strong>{" "}
|
||||
{yoursystemSkills.join(" · ")}
|
||||
@ -110,8 +153,19 @@ const Experience: React.FC = () => {
|
||||
<SubHeadline level={4}>Developer</SubHeadline>
|
||||
|
||||
<Content>
|
||||
<Paragraph>{intl.formatMessage(messages.past)}</Paragraph>
|
||||
<Paragraph>{intl.formatMessage(messages.pastDescription)}</Paragraph>
|
||||
<Paragraph>
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Birth - February 2016",
|
||||
id: "Experience.past",
|
||||
})}
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
{intl.formatMessage({
|
||||
defaultMessage:
|
||||
"Working on smaller projects such as chats, forum based websites, web based presentations, most notably a system for handling the driver training center and driving school agenda... Tinkering...",
|
||||
id: "Experience.pastDescription",
|
||||
})}
|
||||
</Paragraph>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import React from "react";
|
||||
import { defineMessages, useIntl } from "react-intl";
|
||||
import { useIntl } from "react-intl";
|
||||
|
||||
import { SubHeadline } from "../common/Headline";
|
||||
import { List, ListItem } from "../common/List";
|
||||
@ -7,43 +7,6 @@ import { Spacer } from "../common/Spacer";
|
||||
import { Paragraph } from "../common/Text";
|
||||
import Skill from "./Skill";
|
||||
|
||||
const messages = defineMessages({
|
||||
backendDevelopment: {
|
||||
defaultMessage:
|
||||
"Deep knowledge of backend operations, mostly supporting web based applications using various technologies, programming languages and frameworks.",
|
||||
id: "Skills.backendDevelopment",
|
||||
},
|
||||
backendDevelopmentAdditional: {
|
||||
defaultMessage:
|
||||
"In recent years, the main focus was on Go to write tooling and backend services.",
|
||||
id: "Skills.backendDevelopment",
|
||||
},
|
||||
devops: {
|
||||
defaultMessage:
|
||||
"Several years of experience developing, maintaining and adhering to the DevOps practices to streamline organization's processes across both backend and frontend development.",
|
||||
id: "Skills.devops",
|
||||
},
|
||||
frontendDevelopment: {
|
||||
defaultMessage:
|
||||
"Extensive experience in frontend development spanning back to the early 2000s.",
|
||||
id: "Skills.frontendDevelopment",
|
||||
},
|
||||
infrastructureOperations: {
|
||||
defaultMessage:
|
||||
"Throughout my career, I have gained valuable experience in developing and maintaining high-load infrastructures over several years.",
|
||||
id: "Skills.infrastructureOperations",
|
||||
},
|
||||
infrastructureOperationsAdditional: {
|
||||
defaultMessage:
|
||||
"Following the OCI (Open Container Initiative) and leveraging Docker and Kubernetes to create highly available deployments, primarily on the AWS platform, was a challenging and enjoyable experience, that has greatly enhanced my skills in this area.",
|
||||
id: "Skills.infrastructureOperationsAdditional",
|
||||
},
|
||||
otherNotableSkills: {
|
||||
defaultMessage: "Other notable skills",
|
||||
id: "Skills.otherNotableSkills",
|
||||
},
|
||||
});
|
||||
|
||||
type OtherSkill = {
|
||||
title: string;
|
||||
description?: string;
|
||||
@ -51,13 +14,13 @@ type OtherSkill = {
|
||||
|
||||
const otherSkills: OtherSkill[] = [
|
||||
{
|
||||
title: "Primary languages",
|
||||
description: "Go, Typescript (and Javascript)",
|
||||
title: "Strong proficiency in",
|
||||
description: "Go, Typescript (and Javascript), Bash, IaaC tools",
|
||||
},
|
||||
{
|
||||
title: "Infrastructure based skills",
|
||||
title: "Infrastructure related skills",
|
||||
description:
|
||||
"Kubernetes and AWS EKS, Containerized applications, Linux system administration, Amazon Web Services - good understanding of Networking, RDS, Queues",
|
||||
"Kubernetes and AWS EKS, Containerized applications, Linux system administration, Amazon Web Services - good understanding of Networking, RDS, Queues. Notable experience with GCP/Azure.",
|
||||
},
|
||||
{
|
||||
title: "Databases",
|
||||
@ -88,21 +51,50 @@ const Skills: React.FC = () => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Skill title="DevOps">{intl.formatMessage(messages.devops)}</Skill>
|
||||
<Skill title="DevOps">
|
||||
{intl.formatMessage({
|
||||
defaultMessage:
|
||||
"Several years of experience developing, maintaining and adhering to the DevOps practices to streamline organization's processes across both backend and frontend development.",
|
||||
id: "Skills.devops",
|
||||
})}
|
||||
</Skill>
|
||||
<Skill title="Front-End Development">
|
||||
{intl.formatMessage(messages.frontendDevelopment)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage:
|
||||
"Extensive experience in frontend development spanning back to the early 2000s.",
|
||||
id: "Skills.frontendDevelopment",
|
||||
})}
|
||||
</Skill>
|
||||
<Skill title="Back-End Development">
|
||||
{intl.formatMessage(messages.backendDevelopment)}
|
||||
{intl.formatMessage(messages.backendDevelopmentAdditional)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage:
|
||||
"Deep knowledge of backend operations, mostly supporting web based applications using various technologies, programming languages and frameworks.",
|
||||
id: "Skills.backendDevelopment",
|
||||
})}
|
||||
{intl.formatMessage({
|
||||
defaultMessage:
|
||||
"In recent years, the main focus was on Go to write tooling and backend services.",
|
||||
id: "Skills.backendDevelopment",
|
||||
})}
|
||||
</Skill>
|
||||
<Skill title="Infrastructure operations">
|
||||
{intl.formatMessage(messages.infrastructureOperations)}
|
||||
{intl.formatMessage(messages.infrastructureOperationsAdditional)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage:
|
||||
"Throughout my career, I have gained valuable experience in developing and maintaining high-load infrastructures over several years.",
|
||||
id: "Skills.infrastructureOperations",
|
||||
})}
|
||||
{intl.formatMessage({
|
||||
defaultMessage:
|
||||
"Following the OCI (Open Container Initiative) and leveraging Docker and Kubernetes to create highly available deployments, primarily on the AWS platform, was a challenging and enjoyable experience, that has greatly enhanced my skills in this area.",
|
||||
id: "Skills.infrastructureOperationsAdditional",
|
||||
})}
|
||||
</Skill>
|
||||
<Spacer withDivider />
|
||||
<SubHeadline level={4}>
|
||||
{intl.formatMessage(messages.otherNotableSkills)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Other notable skills",
|
||||
id: "Skills.otherNotableSkills",
|
||||
})}
|
||||
</SubHeadline>
|
||||
<List>
|
||||
{otherSkills.map((s) => (
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import React, { useEffect, useRef } from "react";
|
||||
import { defineMessages, useIntl } from "react-intl";
|
||||
import { useIntl } from "react-intl";
|
||||
|
||||
import { CONTACT_EMAIL, CONTACT_PHONE } from "../../config/environment";
|
||||
import { Contact } from "../common/Contact";
|
||||
@ -7,29 +7,6 @@ import { List, ListItem } from "../common/List";
|
||||
import { Spacer } from "../common/Spacer";
|
||||
import NavigationHeadline from "./NavigationHeadline";
|
||||
|
||||
const messages = defineMessages({
|
||||
certifications: {
|
||||
defaultMessage: "Certifications",
|
||||
id: "Navigation.certifications",
|
||||
},
|
||||
contact: {
|
||||
defaultMessage: "Contact",
|
||||
id: "Navigation.contact",
|
||||
},
|
||||
experience: {
|
||||
defaultMessage: "Experience",
|
||||
id: "Navigation.experience",
|
||||
},
|
||||
objective: {
|
||||
defaultMessage: "Objective",
|
||||
id: "Navigation.objective",
|
||||
},
|
||||
topSkills: {
|
||||
defaultMessage: "Top Skills",
|
||||
id: "Navigation.topSkills",
|
||||
},
|
||||
});
|
||||
|
||||
const getTopOffset = (input: HTMLElement) => {
|
||||
let el: HTMLElement | Element | null = input;
|
||||
let o = 0;
|
||||
@ -110,7 +87,10 @@ const MainNavigation: React.FC = () => {
|
||||
return (
|
||||
<div ref={ref}>
|
||||
<NavigationHeadline>
|
||||
{intl.formatMessage(messages.contact)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Contact",
|
||||
id: "Navigation.contact",
|
||||
})}
|
||||
</NavigationHeadline>
|
||||
|
||||
<Spacer />
|
||||
@ -118,28 +98,40 @@ const MainNavigation: React.FC = () => {
|
||||
<Contact email={CONTACT_EMAIL} phoneNumber={CONTACT_PHONE} />
|
||||
|
||||
<NavigationHeadline href="#objective">
|
||||
{intl.formatMessage(messages.objective)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Objective",
|
||||
id: "Navigation.objective",
|
||||
})}
|
||||
</NavigationHeadline>
|
||||
|
||||
<NavigationHeadline href="#skills">
|
||||
{intl.formatMessage(messages.topSkills)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Top Skills",
|
||||
id: "Navigation.topSkills",
|
||||
})}
|
||||
</NavigationHeadline>
|
||||
|
||||
<Spacer />
|
||||
|
||||
<List>
|
||||
<ListItem>DevOps</ListItem>
|
||||
<ListItem>Front-End Development</ListItem>
|
||||
<ListItem>Back-End Development</ListItem>
|
||||
<ListItem>Kubernetes</ListItem>
|
||||
<ListItem>Typescript</ListItem>
|
||||
<ListItem>Linux</ListItem>
|
||||
<ListItem>Go</ListItem>
|
||||
<ListItem>Typescript</ListItem>
|
||||
<ListItem>Back-End Development</ListItem>
|
||||
<ListItem>Front-End Development</ListItem>
|
||||
<ListItem>Scripting:</ListItem>
|
||||
<ListItem>Bash, Python, Lua</ListItem>
|
||||
</List>
|
||||
|
||||
<Spacer spacing={0} withDivider />
|
||||
|
||||
<NavigationHeadline>
|
||||
{intl.formatMessage(messages.certifications)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Certifications",
|
||||
id: "Navigation.certifications",
|
||||
})}
|
||||
</NavigationHeadline>
|
||||
|
||||
<Spacer />
|
||||
@ -152,7 +144,10 @@ const MainNavigation: React.FC = () => {
|
||||
<Spacer spacing={0} withDivider />
|
||||
|
||||
<NavigationHeadline href="#experience">
|
||||
{intl.formatMessage(messages.experience)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Experience",
|
||||
id: "Navigation.experience",
|
||||
})}
|
||||
</NavigationHeadline>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import styled from "@emotion/styled";
|
||||
import React from "react";
|
||||
import { defineMessages, useIntl } from "react-intl";
|
||||
import { useIntl } from "react-intl";
|
||||
|
||||
import { Experience, Skills, Summary } from "../components/CV";
|
||||
import MainLayout from "../components/Layout/MainLayout";
|
||||
@ -11,21 +11,6 @@ import { Headline, SubHeadline } from "../components/common/Headline";
|
||||
import { Spacer } from "../components/common/Spacer";
|
||||
import { CONTACT_EMAIL, CONTACT_PHONE, POSITION } from "../config/environment";
|
||||
|
||||
const messages = defineMessages({
|
||||
experienceTitle: {
|
||||
defaultMessage: "Experience",
|
||||
id: "Dashboard.experienceTitle",
|
||||
},
|
||||
location: {
|
||||
defaultMessage: "Central Bohemia, Czechia",
|
||||
id: "Dashboard.location",
|
||||
},
|
||||
skillsTitle: {
|
||||
defaultMessage: "Skills",
|
||||
id: "Dashboard.skillsTitle",
|
||||
},
|
||||
});
|
||||
|
||||
const HiddenWithNav = styled("div")({
|
||||
display: "none",
|
||||
[hideNavigationMQ]: {
|
||||
@ -41,7 +26,10 @@ const Dashboard: React.FC = () => {
|
||||
<Headline level={1}>Lukáš Čech</Headline>
|
||||
<SubHeadline level={2}>{POSITION}</SubHeadline>
|
||||
<SubHeadline level={4}>
|
||||
{intl.formatMessage(messages.location)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Central Bohemia, Czechia",
|
||||
id: "Dashboard.location",
|
||||
})}
|
||||
</SubHeadline>
|
||||
|
||||
<HiddenWithNav>
|
||||
@ -58,7 +46,12 @@ const Dashboard: React.FC = () => {
|
||||
<div id="skills" />
|
||||
<Spacer withDivider />
|
||||
|
||||
<Headline level={2}>{intl.formatMessage(messages.skillsTitle)}</Headline>
|
||||
<Headline level={2}>
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Skills",
|
||||
id: "Dashboard.skillsTitle",
|
||||
})}
|
||||
</Headline>
|
||||
<Spacer />
|
||||
<Content>
|
||||
<Skills />
|
||||
@ -68,7 +61,10 @@ const Dashboard: React.FC = () => {
|
||||
<Spacer withDivider />
|
||||
|
||||
<Headline level={2}>
|
||||
{intl.formatMessage(messages.experienceTitle)}
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Experience",
|
||||
id: "Dashboard.experienceTitle",
|
||||
})}
|
||||
</Headline>
|
||||
<Spacer />
|
||||
<Content>
|
||||
|
||||
@ -1,16 +1,9 @@
|
||||
import styled from "@emotion/styled";
|
||||
import React from "react";
|
||||
import { defineMessages, useIntl } from "react-intl";
|
||||
import { useIntl } from "react-intl";
|
||||
|
||||
import { Link } from "../components/common/Link";
|
||||
|
||||
const messages = defineMessages({
|
||||
notFound: {
|
||||
defaultMessage: "Nothing to see here",
|
||||
id: "Router.NotFound",
|
||||
},
|
||||
});
|
||||
|
||||
const Root = styled("div")({
|
||||
display: "flex",
|
||||
flexDirection: "column",
|
||||
@ -25,7 +18,12 @@ const NotFound = () => {
|
||||
|
||||
return (
|
||||
<Root>
|
||||
<p>{intl.formatMessage(messages.notFound)}</p>
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
defaultMessage: "Nothing to see here",
|
||||
id: "Router.NotFound",
|
||||
})}
|
||||
</p>
|
||||
<Link to="/">Go home</Link>
|
||||
</Root>
|
||||
);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user