diff --git a/src/images/Lato-Regular.ttf b/src/images/Lato-Regular.ttf new file mode 100644 index 0000000..bb2e887 Binary files /dev/null and b/src/images/Lato-Regular.ttf differ diff --git a/src/images/Roboto-Regular.ttf b/src/images/Roboto-Regular.ttf new file mode 100644 index 0000000..3d6861b Binary files /dev/null and b/src/images/Roboto-Regular.ttf differ diff --git a/src/images/me.png b/src/images/me.png new file mode 100644 index 0000000..63c6bac Binary files /dev/null and b/src/images/me.png differ diff --git a/src/pages/index.js b/src/pages/index.js index dbc0fb9..17887db 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -1,183 +1,270 @@ import * as React from "react" +import "../styles/general.scss" +import MePng from "../images/me.png" -// styles -const pageStyles = { - color: "#232129", - padding: 96, - fontFamily: "-apple-system, Roboto, sans-serif, serif", -} -const headingStyles = { - marginTop: 0, - marginBottom: 64, - maxWidth: 320, -} -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", - url: "https://www.gatsbyjs.com/docs/tutorial/", - description: - "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", - }, - { - text: "How to Guides", - url: "https://www.gatsbyjs.com/docs/how-to/", - description: - "Practical step-by-step guides to help you achieve a specific goal. Most useful when you're trying to get something done.", - color: "#1099A8", - }, - { - text: "Reference Guides", - url: "https://www.gatsbyjs.com/docs/reference/", - description: - "Nitty-gritty technical descriptions of how Gatsby works. Most useful when you need detailed information about Gatsby's APIs.", - color: "#BC027F", - }, - { - text: "Conceptual Guides", - url: "https://www.gatsbyjs.com/docs/conceptual/", - description: - "Big-picture explanations of higher-level Gatsby concepts. Most useful for building understanding of a particular topic.", - color: "#0D96F2", - }, - { - text: "Plugin Library", - url: "https://www.gatsbyjs.com/plugins", - 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 = () => { +const SegmentWithImage = ({ segment }) => { return ( -
- Home Page -

- Congratulations -
- — you just made a Gatsby site! - - 🎉🎉🎉 - -

-

- Edit src/pages/index.js to see this page - update in real-time.{" "} - - 😎 - -

- - Gatsby G Logo + -
+
+ { segment.title } +
+
+ { + typeof segment.content === "object" ? + Object.keys(segment.content).map( (key) => { + return ( + <> +
+ + { key + ": " } + +
+
+ + { + segment.content[key].includes("github.com") ? + + { segment.content[key] } + + : + segment.content[key] + } + +
+ + ) + } + ) + : + "lol" + } +
+ + ) +} + +const SegmentNormal = ({ segment }) => { + return ( +
+
+ { segment.title } +
+
+ +
+
+ ) +} + +const SegmentRODO = ({ segment }) => { + return ( +
+
+ { segment.content } +
+
+ ) +} + + +const Segment = ({ index, segment }) => { + + let segment_index = "segment_" + index + + return ( +
+ { + "image" in segment ? + + : + segment.title === "" ? + + : + + } +
+ ) +} + + +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.", + } + }, + { + title: "Umiejętności", + content: { + "Programowanie": [ + "Python - Django / Django REST Framework / Channels 3.0", + "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", + ], + } + }, + { + title: "Doświadczenie", + content: { + "Zespół Szkół Elektronicznych w Rzeszowie / Technikum nr 6 - Technik Informatyk - od 2013 do 2017": "", + "Uniwersytet Rzeszowski - Studia Inżynierskie - Informatyka - od 2017 do 2021": [ + { + "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)" + ] + } + }, + { + title: "Zainteresowania", + content: { + "Web3.0": [ + "Blockchain / Cryptography", + ], + "Artificial Intelligence / Machine Learning": "", + "IT Security": "", + "Grafika Trójwymiarowa & Dwuwymiarowa": "", + } + }, + { + title: "", + 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)." + } + ] + + return ( + <> +
+ { + content.map( (value, index) => { + return ( + + ) + } + ) + } +
+
+ +
+ ) } diff --git a/src/styles/general.scss b/src/styles/general.scss new file mode 100644 index 0000000..2209e50 --- /dev/null +++ b/src/styles/general.scss @@ -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; +} \ No newline at end of file