create CV page
parent
75dedede16
commit
075981a4e8
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 77 KiB |
|
|
@ -1,183 +1,270 @@
|
||||||
import * as React from "react"
|
import * as React from "react"
|
||||||
|
import "../styles/general.scss"
|
||||||
|
import MePng from "../images/me.png"
|
||||||
|
|
||||||
// styles
|
const SegmentWithImage = ({ segment }) => {
|
||||||
const pageStyles = {
|
return (
|
||||||
color: "#232129",
|
<div>
|
||||||
padding: 96,
|
<img
|
||||||
fontFamily: "-apple-system, Roboto, sans-serif, serif",
|
src={ MePng }
|
||||||
}
|
className="segment_image"
|
||||||
const headingStyles = {
|
/>
|
||||||
marginTop: 0,
|
<div className="segment_title segment_title_image">
|
||||||
marginBottom: 64,
|
{ segment.title }
|
||||||
maxWidth: 320,
|
</div>
|
||||||
}
|
<div className="segment_content_image">
|
||||||
const headingAccentStyles = {
|
|
||||||
color: "#663399",
|
|
||||||
}
|
|
||||||
const paragraphStyles = {
|
|
||||||
marginBottom: 48,
|
|
||||||
}
|
|
||||||
const codeStyles = {
|
|
||||||
color: "#8A6534",
|
|
||||||
padding: 4,
|
|
||||||
backgroundColor: "#FFF4DB",
|
|
||||||
fontSize: "1.25rem",
|
|
||||||
borderRadius: 4,
|
|
||||||
}
|
|
||||||
const listStyles = {
|
|
||||||
marginBottom: 96,
|
|
||||||
paddingLeft: 0,
|
|
||||||
}
|
|
||||||
const listItemStyles = {
|
|
||||||
fontWeight: 300,
|
|
||||||
fontSize: 24,
|
|
||||||
maxWidth: 560,
|
|
||||||
marginBottom: 30,
|
|
||||||
}
|
|
||||||
|
|
||||||
const linkStyle = {
|
|
||||||
color: "#8954A8",
|
|
||||||
fontWeight: "bold",
|
|
||||||
fontSize: 16,
|
|
||||||
verticalAlign: "5%",
|
|
||||||
}
|
|
||||||
|
|
||||||
const docLinkStyle = {
|
|
||||||
...linkStyle,
|
|
||||||
listStyleType: "none",
|
|
||||||
marginBottom: 24,
|
|
||||||
}
|
|
||||||
|
|
||||||
const descriptionStyle = {
|
|
||||||
color: "#232129",
|
|
||||||
fontSize: 14,
|
|
||||||
marginTop: 10,
|
|
||||||
marginBottom: 0,
|
|
||||||
lineHeight: 1.25,
|
|
||||||
}
|
|
||||||
|
|
||||||
const docLink = {
|
|
||||||
text: "Documentation",
|
|
||||||
url: "https://www.gatsbyjs.com/docs/",
|
|
||||||
color: "#8954A8",
|
|
||||||
}
|
|
||||||
|
|
||||||
const badgeStyle = {
|
|
||||||
color: "#fff",
|
|
||||||
backgroundColor: "#088413",
|
|
||||||
border: "1px solid #088413",
|
|
||||||
fontSize: 11,
|
|
||||||
fontWeight: "bold",
|
|
||||||
letterSpacing: 1,
|
|
||||||
borderRadius: 4,
|
|
||||||
padding: "4px 6px",
|
|
||||||
display: "inline-block",
|
|
||||||
position: "relative",
|
|
||||||
top: -2,
|
|
||||||
marginLeft: 10,
|
|
||||||
lineHeight: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
|
||||||
const links = [
|
|
||||||
{
|
{
|
||||||
text: "Tutorial",
|
typeof segment.content === "object" ?
|
||||||
url: "https://www.gatsbyjs.com/docs/tutorial/",
|
Object.keys(segment.content).map( (key) => {
|
||||||
description:
|
return (
|
||||||
"A great place to get started if you're new to web development. Designed to guide you through setting up your first Gatsby site.",
|
<>
|
||||||
color: "#E95800",
|
<div
|
||||||
|
className="segment_image_item"
|
||||||
|
key={ "item_" + key }
|
||||||
|
>
|
||||||
|
|
||||||
|
{ key + ": " }
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
className="segment_image_item subitem"
|
||||||
|
>
|
||||||
|
|
||||||
|
{
|
||||||
|
segment.content[key].includes("github.com") ?
|
||||||
|
<a href={ "https://" + segment.content[key] }>
|
||||||
|
{ segment.content[key] }
|
||||||
|
</a>
|
||||||
|
:
|
||||||
|
segment.content[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
:
|
||||||
|
"lol"
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const SegmentNormal = ({ segment }) => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div className="segment_title">
|
||||||
|
{ segment.title }
|
||||||
|
</div>
|
||||||
|
<div className="segment_content">
|
||||||
|
<ul>
|
||||||
|
{
|
||||||
|
typeof segment.content === "object" ?
|
||||||
|
Object.keys(segment.content).map( (key) => {
|
||||||
|
return (
|
||||||
|
<li key={ "item_" + key }>
|
||||||
|
{
|
||||||
|
typeof segment.content[key] === "object" ?
|
||||||
|
key + ": "
|
||||||
|
:
|
||||||
|
key + ","
|
||||||
|
}
|
||||||
|
<ul>
|
||||||
|
{
|
||||||
|
typeof segment.content[key] === "object" ?
|
||||||
|
segment.content[key].map( (value, index) => {
|
||||||
|
return (
|
||||||
|
<li key={ index }>
|
||||||
|
{
|
||||||
|
typeof value === "object" ?
|
||||||
|
Object.keys( value ).map( ( key_two, index_two) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{ key_two + ": " }
|
||||||
|
<ul key={ index_two }>
|
||||||
|
{
|
||||||
|
typeof value === "object" ?
|
||||||
|
value[key_two].map( (item, index_three) => {
|
||||||
|
return (
|
||||||
|
<li>
|
||||||
|
{ item + "," }
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
:
|
||||||
|
value + ","
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
:
|
||||||
|
value + ","
|
||||||
|
}
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
:
|
||||||
|
""
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
:
|
||||||
|
"lol"
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const SegmentRODO = ({ segment }) => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div className="segment_content foot_content">
|
||||||
|
{ segment.content }
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const Segment = ({ index, segment }) => {
|
||||||
|
|
||||||
|
let segment_index = "segment_" + index
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className="segment_general"
|
||||||
|
id={ segment_index }
|
||||||
|
key={ segment_index }
|
||||||
|
>
|
||||||
|
{
|
||||||
|
"image" in segment ?
|
||||||
|
<SegmentWithImage
|
||||||
|
segment={ segment }
|
||||||
|
/>
|
||||||
|
:
|
||||||
|
segment.title === "" ?
|
||||||
|
<SegmentRODO
|
||||||
|
segment={ segment }
|
||||||
|
/>
|
||||||
|
:
|
||||||
|
<SegmentNormal
|
||||||
|
segment={ segment }
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const IndexPage = () => {
|
||||||
|
|
||||||
|
let content = [
|
||||||
|
{
|
||||||
|
title: "Kamil Żuk",
|
||||||
|
image: "me.png",
|
||||||
|
content: {
|
||||||
|
"E-mail": "zukkamil.44@gmail.com",
|
||||||
|
"Github": "github.com/tbs093a",
|
||||||
|
"Wykształcenie": "Wyższe / Inżynier",
|
||||||
|
"Miejsce Zamieszkania": "Rzeszów / Polska",
|
||||||
|
"Data Urodzenia": "30.06.1997 r.",
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "How to Guides",
|
title: "Umiejętności",
|
||||||
url: "https://www.gatsbyjs.com/docs/how-to/",
|
content: {
|
||||||
description:
|
"Programowanie": [
|
||||||
"Practical step-by-step guides to help you achieve a specific goal. Most useful when you're trying to get something done.",
|
"Python - Django / Django REST Framework / Channels 3.0",
|
||||||
color: "#1099A8",
|
"Javascript - ReactJS / Redux Toolkit",
|
||||||
|
],
|
||||||
|
"Obsługa Narzędzi DevOps": [
|
||||||
|
"Jenkins / Ansible / Docker / Docker-Compose / Docker Swarm / Kubernetes / Automatyzacja w Bash",
|
||||||
|
],
|
||||||
|
"Konfiguracja & Administracja Baz Danych": [
|
||||||
|
"SQL - MariaDB / MySQL / PostgreSQL",
|
||||||
|
"NoSQL - MongoDb / ElasticSearch / Redis"
|
||||||
|
],
|
||||||
|
"Język Angielski": [
|
||||||
|
"Poziom B2",
|
||||||
|
],
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "Reference Guides",
|
title: "Doświadczenie",
|
||||||
url: "https://www.gatsbyjs.com/docs/reference/",
|
content: {
|
||||||
description:
|
"Zespół Szkół Elektronicznych w Rzeszowie / Technikum nr 6 - Technik Informatyk - od 2013 do 2017": "",
|
||||||
"Nitty-gritty technical descriptions of how Gatsby works. Most useful when you need detailed information about Gatsby's APIs.",
|
"Uniwersytet Rzeszowski - Studia Inżynierskie - Informatyka - od 2017 do 2021": [
|
||||||
color: "#BC027F",
|
{
|
||||||
|
"Praca Inżynierska - Graficzna baza układów dłoni na potrzeby systemu rozpoznawania Polskiego Języka Migowego (PJM)": [
|
||||||
|
"integracja Django / Django REST Framework z oprogramowaniem Blender",
|
||||||
|
"integracja Djnago / Django REST Framework z bazą danych MongoDb podzielonej na fragmenty (shards)",
|
||||||
|
"implementacja protokołu WebSocket (moduł Channles 3.0) do monitorowania procesu renderowania układów dłoni w czasie rzeczywistym",
|
||||||
|
"implementacja synchronicznego API w Django REST Framework do zarządzania wyrenderowanymi obrazami oraz modelami 3D",
|
||||||
|
"implementacja asynchronicznego API w Django + Channels 3.0 + Redis do nadzorowania procesu renderowania na serwerze w czasie rzeczywistym",
|
||||||
|
"implementacja aplikacji klienckiej w ReactJS / Gatsby + Redux Toolkit do obsługi synchronicznego i asynchronicznego API",
|
||||||
|
"wdrożenie aplikacji w formie rozproszonej dzięki narzędziom konteneryzacji i orkiestracji Docker + Docker-Compose",
|
||||||
|
"implementacja skryptów Bash automatyzujących migrację / konfigurację wszystkich środowisk konteneryzacyjnych na podstawie zmeinnych środowiskowych",
|
||||||
|
"wykonanie modelu trójwymiarowgo dłoni przeznaczonego do renderowania realistycznych próbek (zdjęć) układów dłoni, jako materiały do nauki systemu rozpoznawania PJM",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Sembot Sp. z o. o. - DevOps Engineer & Python Developer - od 01.11.2020": [
|
||||||
|
"Obowiązki związane z administracją serwerów (OVH / AWS / Digital Ocean)",
|
||||||
|
"Obowiązki związane z automatyzacją operacji rutynowych (Ansible / Jenkins pipeline / Bash scripts)",
|
||||||
|
"Obowiązki związane z wdrażaniem produkcyjnym oprogramowania zorientowanego na kontenerach (Docker / Docker-Compose / Docker Swarm)",
|
||||||
|
"Obowiązki związane z konfiguracją serwerową (Nginx / Apache / Docker)",
|
||||||
|
"Obowiązki związane z programowaniem narzędzi marchtech (Python / Django / Django REST Framework)",
|
||||||
|
"Obowiązki związane z implementacją i konfiguracją baz danych do obsługi narzędzi marchtech (Big Data) (MongoDb / Elasticsearch / MariaDb / MySQL / Redis / AWS SQS)"
|
||||||
|
]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "Conceptual Guides",
|
title: "Zainteresowania",
|
||||||
url: "https://www.gatsbyjs.com/docs/conceptual/",
|
content: {
|
||||||
description:
|
"Web3.0": [
|
||||||
"Big-picture explanations of higher-level Gatsby concepts. Most useful for building understanding of a particular topic.",
|
"Blockchain / Cryptography",
|
||||||
color: "#0D96F2",
|
],
|
||||||
|
"Artificial Intelligence / Machine Learning": "",
|
||||||
|
"IT Security": "",
|
||||||
|
"Grafika Trójwymiarowa & Dwuwymiarowa": "",
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "Plugin Library",
|
title: "",
|
||||||
url: "https://www.gatsbyjs.com/plugins",
|
content: "Wyrażam zgodę na przetwarzanie moich danych osobowych dla potrzeb niezbędnych do realizacji procesu rekrutacji zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO)."
|
||||||
description:
|
}
|
||||||
"Add functionality and customize your Gatsby site or app with thousands of plugins built by our amazing developer community.",
|
|
||||||
color: "#8EB814",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: "Build and Host",
|
|
||||||
url: "https://www.gatsbyjs.com/cloud",
|
|
||||||
badge: true,
|
|
||||||
description:
|
|
||||||
"Now you’re ready to show the world! Give your Gatsby site superpowers: Build and host on Gatsby Cloud. Get started for free!",
|
|
||||||
color: "#663399",
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
|
|
||||||
// markup
|
|
||||||
const IndexPage = () => {
|
|
||||||
return (
|
return (
|
||||||
<main style={pageStyles}>
|
<>
|
||||||
<title>Home Page</title>
|
<div className="global_segment">
|
||||||
<h1 style={headingStyles}>
|
{
|
||||||
Congratulations
|
content.map( (value, index) => {
|
||||||
<br />
|
return (
|
||||||
<span style={headingAccentStyles}>— you just made a Gatsby site! </span>
|
<Segment
|
||||||
<span role="img" aria-label="Party popper emojis">
|
index={ index }
|
||||||
🎉🎉🎉
|
segment={ value }
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
<p style={paragraphStyles}>
|
|
||||||
Edit <code style={codeStyles}>src/pages/index.js</code> to see this page
|
|
||||||
update in real-time.{" "}
|
|
||||||
<span role="img" aria-label="Sunglasses smiley emoji">
|
|
||||||
😎
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
<ul style={listStyles}>
|
|
||||||
<li style={docLinkStyle}>
|
|
||||||
<a
|
|
||||||
style={linkStyle}
|
|
||||||
href={`${docLink.url}?utm_source=starter&utm_medium=start-page&utm_campaign=minimal-starter`}
|
|
||||||
>
|
|
||||||
{docLink.text}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{links.map(link => (
|
|
||||||
<li key={link.url} style={{ ...listItemStyles, color: link.color }}>
|
|
||||||
<span>
|
|
||||||
<a
|
|
||||||
style={linkStyle}
|
|
||||||
href={`${link.url}?utm_source=starter&utm_medium=start-page&utm_campaign=minimal-starter`}
|
|
||||||
>
|
|
||||||
{link.text}
|
|
||||||
</a>
|
|
||||||
{link.badge && (
|
|
||||||
<span style={badgeStyle} aria-label="New Badge">
|
|
||||||
NEW!
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
<p style={descriptionStyle}>{link.description}</p>
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
))}
|
|
||||||
</ul>
|
|
||||||
<img
|
|
||||||
alt="Gatsby G Logo"
|
|
||||||
src="data:image/svg+xml,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 2a10 10 0 110 20 10 10 0 010-20zm0 2c-3.73 0-6.86 2.55-7.75 6L14 19.75c3.45-.89 6-4.02 6-7.75h-5.25v1.5h3.45a6.37 6.37 0 01-3.89 4.44L6.06 9.69C7 7.31 9.3 5.63 12 5.63c2.13 0 4 1.04 5.18 2.65l1.23-1.06A7.959 7.959 0 0012 4zm-8 8a8 8 0 008 8c.04 0 .09 0-8-8z' fill='%23639'/%3E%3C/svg%3E"
|
|
||||||
/>
|
/>
|
||||||
</main>
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
<div className="foot">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,137 @@
|
||||||
|
body {
|
||||||
|
background-color: #272727;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Roboto';
|
||||||
|
src: url("../images/Roboto-Regular.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src: url("../images/Lato-Regular.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
$div_background_color: rgba(26, 83, 187, 1);
|
||||||
|
|
||||||
|
$title_font_family: Roboto;
|
||||||
|
$title_font_size: 21pt;
|
||||||
|
|
||||||
|
$regular_font_family: Lato;
|
||||||
|
$regular_font_size: 12pt;
|
||||||
|
$regular_image_font_size: 10.5pt;
|
||||||
|
|
||||||
|
$foot_font_size: 9.8pt;
|
||||||
|
|
||||||
|
.global_segment {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
width: 21cm;
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
color: #0d2956;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:active {
|
||||||
|
color: #5478b3;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
margin-bottom: 0;
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul li::before {
|
||||||
|
content: ">> ";
|
||||||
|
color: $div_background_color;
|
||||||
|
font-weight: bold;
|
||||||
|
display: inline-block;
|
||||||
|
width: 2em;
|
||||||
|
margin-left: -2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.segment_general {
|
||||||
|
float: left;
|
||||||
|
margin-top: 30px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.segment_image {
|
||||||
|
float: left;
|
||||||
|
width: 210px;
|
||||||
|
height:250px;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: $div_background_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.segment_content {
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
font-family: $regular_font_family;
|
||||||
|
font-size: $regular_font_size;
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
|
||||||
|
.foot_content {
|
||||||
|
font-size: $foot_font_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
.segment_content_image {
|
||||||
|
float: right;
|
||||||
|
padding: 15px;
|
||||||
|
width: 180px;
|
||||||
|
height:220px;
|
||||||
|
color: white;
|
||||||
|
font-size: $regular_image_font_size;
|
||||||
|
font-family: $regular_font_family;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: $div_background_color;
|
||||||
|
|
||||||
|
.segment_image_item {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.segment_title {
|
||||||
|
float: left;
|
||||||
|
width: 250px;
|
||||||
|
padding-top: 12px;
|
||||||
|
height: 45px;
|
||||||
|
color: white;
|
||||||
|
font-family: $title_font_family;
|
||||||
|
font-size: $title_font_size;
|
||||||
|
text-align: center;
|
||||||
|
background-color: $div_background_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.segment_title_image {
|
||||||
|
float: left;
|
||||||
|
margin-top: 100px;
|
||||||
|
margin-left: -50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.subitem {
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.foot {
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue