commit dcd46d5f7a0ca07185e75174fe12f57dbf549d60 Author: Michael Clemens Date: Thu Feb 3 12:13:05 2022 +0100 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..46f5006 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +public/* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..ab9dea0 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "themes/resume-a4"] + path = themes/resume-a4 + url = https://gitlab.com/mertbakir/resume-a4.git diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/assets/css/_base.scss b/assets/css/_base.scss new file mode 100644 index 0000000..d51c699 --- /dev/null +++ b/assets/css/_base.scss @@ -0,0 +1,38 @@ +* { + margin: 0; + padding: 0; +} + +body { + background: #fff; + color: $text-color; + font-family: $font-1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + text-decoration: underline; + color: $text-color; + + i { + padding: 0 0.2rem 0 0.25rem; + } + + &:hover { + text-decoration: underline; + color: red; + } + + &:not(.no-external-icon)::after { + content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==); + margin: 0 0.2rem 0 0.25rem; + } +} + +li { + list-style-type: square; + padding-left: 0px; + list-style-position: inside; + margin: 0.5rem 0; +} diff --git a/assets/css/_layout.scss b/assets/css/_layout.scss new file mode 100644 index 0000000..2941c1b --- /dev/null +++ b/assets/css/_layout.scss @@ -0,0 +1,159 @@ +.paper { + position: relative; + margin: 0.5rem auto; + padding: 0.45in 0.5in; + width: 210mm; + height: 297mm; + background-color: #fff; + -webkit-box-shadow: 0.2rem 0.2rem 0.6rem #aaa; + -moz-box-shadow: 0.2rem 0.2rem 0.6rem #aaa; + box-shadow: 0.2rem 0.2rem 0.6rem #aaa; + box-sizing: border-box; + + font-size: 0.88rem; + + h1, h2, h3 { + line-height: 1.2; + } + + h1 { + margin-bottom: 0.8rem; + font-size: 1.5rem; + } + + h2 { + margin-bottom: 0.4rem; + font-size: 1.1rem; + } + + h3 { + margin-bottom: 0.2rem; + font-size: 1rem; + } + + p { + margin: 0.5rem 0; + font-size: 0.88rem; + line-height: 1.5; + text-align: justify; + } + + > *:first-child { + margin-top: 0; + } +} + +main.paper { + margin-top: 2.5rem; + padding-top: 0; + + .grid { + width: 100%; + height: 100%; + display: grid; + grid-template-columns: repeat(7, 1fr); + grid-template-rows: repeat(6, 1fr); + grid-column-gap: 0; + grid-row-gap: 0; + + .flex-row { + display: flex; + flex-direction: row; + justify-content: space-between; + } + } + + header { + grid-area: 1 / 1 / 2 / 8; + border-bottom: $border-color 0.05rem solid; + height: 12.75rem; + + .title { + display: flex; + flex-direction: column; + justify-content: center; + font-family: $font-1; + + h1 { + margin-bottom: 0.4rem; + font-size: 2.5rem; + color: $text-color; + letter-spacing: 0.15rem; + text-transform: uppercase; + } + + h2 { + margin-bottom: 0.3rem; + font-size: 1rem; + } + } + + .avatar { + display: block; + margin: 1rem auto; + padding: 1rem; + object-fit: cover; + height: 8.75rem; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + } + + a i { + padding: 0; + } + } + + .left-column, .right-column { + margin-top: 0.75rem; + + > *:first-child, + > *:first-child > *:first-child { + margin-top: 0; + } + } + + .left-column { + grid-area: 2 / 1 / 7 / 6; + display: flex; + flex-direction: column; + justify-content: flex-start; + border-right: $border-color 0.05rem solid; + padding-right: 1rem; + } + + .right-column { + grid-area: 2 / 6 / 7 / 8; + display: flex; + flex-direction: column; + justify-content: flex-start; + margin-left: 0.5rem; + + li { + list-style-type: none; + padding: 0; + } + + h1 { + margin-bottom: 0.5rem; + font-size: 1.2rem; + } + + h2 { + margin-bottom: 0.2rem; + font-size: 1rem; + } + + h3 { + margin-bottom: 0.1rem; + font-size: 0.8rem; + } + + p { + font-size: 0.8rem; + line-height: 1.3; + } + } +} diff --git a/assets/css/_section.scss b/assets/css/_section.scss new file mode 100644 index 0000000..c122362 --- /dev/null +++ b/assets/css/_section.scss @@ -0,0 +1,101 @@ +.section { + margin-bottom: 1.5rem; + + > *:last-child { + margin-bottom: 0; + } + + .right-column & { + margin-bottom: 1rem; + } +} + +.section-title { + border-left: solid 0.35rem $text-color; + padding-left: 0.4rem; + font-family: $font-1; +} + +.item { + margin-bottom: 0.6rem; + + dl { + dt { + display: inline; + font-weight: 600; + + &::after { + content: ': ' + } + } + + dd { + display: inline; + + &:not(:last-child)::after { + content: ""; + display: block; + margin-bottom: 0.4em; + } + + *:not(:last-child)::after { + content: "; "; + margin-right: 0.25rem; + } + + } + } + + &.group { + .item { + margin-top: 0; + } + } +} + +.item-title { + font-weight: 600; + margin-bottom: 2px; +} + +.item-info { + font-weight: 400; + font-size: 12px; +} + +.job-title { + font-size: 14px; + font-weight: bold; +} + +.date { + color: scale-color($text-color, $lightness: 30%); +} + +main.paper .right-column, +main.paper .left-column, +.paper { + .section-education { + h2 { + margin-bottom: 0; + font-size: 1rem; + } + } + + .section-languages { + .item { + margin-bottom: 0.4rem; + } + + h2 { + margin-bottom: 0.1rem; + font-size: 0.9rem; + line-height: 1.1; + + span { + font-weight: 400; + font-size: 0.8rem; + } + } + } +} diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..7faf9e8 --- /dev/null +++ b/config.yaml @@ -0,0 +1,101 @@ +baseURL: "/resume" +languageCode: "en-us" +title: "Resume | Michael Clemens" +disableKinds: ["taxonomy", "term", "page", "section", "RSS", "sitemap", "robotsTXT", "404"] +theme: "resume-a4" + +# Construct main column, side column and additional page from features +# Every column and page may include any features. Some features are +# created using generic widgets and you can add easily new features, +# as long as an existing widget can render it as you like. +# +# Common keys: +# feature: name of the feature. For generic features, this is also the root key in the yaml file. +# title: string rendered as the header of the element. Can be disabled with an empty string. +# collection: the base name of the yaml file containing the data. Defaults to "features". +# widget: `layout/partials/section-.html` used to render this element. +# +# Common widgets: +# +# details-list: +# Used by default, if section-.html doesn't exists. +# +# Expects data in format (in yaml file): +# title: the title string +# subtitle: string rendered under title. E.g., company for projects, certificate authority etc. +# date: date string, e.g., when a certificate was given +# details: a text in markdown. +# link: url where the title will link to +# links: list of links rendered as a bullet list below details +# prefix: a string before the link +# title: a string inside the link +# url: the destination of the link +# icon: the icon string, e.g., "fas fa-cloud". rendered inside link and after title. +# +# word-list: +# Handy for skills and interests etc. +# +# Additional keys: +# style: Rendering style for word list. One of: list, compact, or title-list +# +# Expects data in format (in yaml file): +# A list of strings, if style is "list", or +# +# A list of: +# groupName: title of the group +# list: list of strings rendered under the group + +params: + useFontAwesome: true + css: + - custom.scss + header: + avatar: avatar.jpg + contact: true + tagline: true + links: true + side: + - feature: languages + - feature: skills + widget: word-list + style: title-list # list, compact, title-list + - feature: education + - feature: interests + widget: word-list + style: list + pages: + - features: + #- feature: about + # title: About Me + - feature: experience + - features: + - feature: projects + collection: projects + - feature: publications + title: Publications / Mentions + style: IEEE # IEEE, APA, else + #- feature: awards + #- feature: certificates + # title: Certifications + #- feature: interests + # widget: word-list + # style: list + + footer: + show: true + credits: false + footnote: >- + You can print this resume in A4 size or save as pdf. | Last update on 2022-02-01. + links: + #- prefix: Contact me on + # title: Linkedin + # url: 'https://www.linkedin.com/in/m-clemens/' + # icon: fab fa-linkedin + #- prefix: Check out my + # title: Website + # url: 'https://qrz.is' + # icon: fas fa-globe + - prefix: + title: Impress + url: 'https://qrz.is/impressum' + icon: fas fa-globe diff --git a/data/education.yaml b/data/education.yaml new file mode 100644 index 0000000..5412111 --- /dev/null +++ b/data/education.yaml @@ -0,0 +1,7 @@ +- name: "Fachinformatiker" + university: "epos consulting & software GmbH, Neckarsulm" + date: "09/2000 - 03/2004" + +- name: "Abitur" + university: "Technisches Gymnasium Heilbronn" + date: "09/1996 - 06/1999" diff --git a/data/experience.yaml b/data/experience.yaml new file mode 100644 index 0000000..885083b --- /dev/null +++ b/data/experience.yaml @@ -0,0 +1,49 @@ +- company: Schwarz IT KG, Neckarsulm + roles: + - role: Information Security Analyst + details: "- Incident handling and analysis\n + - Threat Intelligence Management" + date: "09/2020 - Present" + + - role: Information Security Engineer + details: "- Development and operation of the Qualys vulnerability scanner\n + - Inhouse consulting on information security-related issues\n + - Support of the departments in risk assessment\n + - Technical support of the Information Security Officers\n + - Development of hardening guidelines" + date: "09/2018 - 08/2020" + +- company: Fujitsu TDS GmbH, Neckarsulm + roles: + - role: IT-Security Engineer + details: "- Operation and further development of the SIEM solution\n + - Forensic analysis\n + - Operation of the vulnerability scanner" + date: "01/2017 - 08/2018" + +- company: Bürkert Werke GmbH, Ingelfingen + roles: + - role: Senior Information Security Administrator + details: "- Conception of an information security awareness campaign\n + - Evaluation of new IT security guidelines, measures and products\n + - Operation of IT security products" + date: "01/2016 - 12/2016" + +- company: Cirosec GmbH, Heilbronn + roles: + - role: Information Security Consultant + details: "- Penetration testing (web apps, Windows systems, networks)\n + - Conduction of configuration assessments (OS, application servers, VPN)\n + - Development of hardening policies (OS, applications servers, VPN)\n + - Conduction of conceptual analyses\n + - Development and conduction of security trainings" + date: "03/2011 - 12/2015" + +- company: dsb AG, Neckarsulm + roles: + - role: System and Database Administrator + details: "- System administrator IBM AIX\n + - Database administrator ADABAS C and DB2\n + - Backup administrator Tivoli Storage Manager" + date: "11/2004 - 02/2011" + diff --git a/data/features.yaml b/data/features.yaml new file mode 100644 index 0000000..bf7f76a --- /dev/null +++ b/data/features.yaml @@ -0,0 +1,79 @@ +about: + name: Michael Clemens + tagline: Information Security Expert + phone: + email: resume@clemens.name + links: + - title: LinkedIn + url: https://www.linkedin.com/in/m-clemens/ + icon: fab fa-linkedin + - title: Website + url: https://qrz.is + icon: fab fa-globe + - title: Git + url: https://git.qrz.is + icon: fab fa-github + details: | + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ornare sollicitudin fringilla. + Aenean nec volutpat arcu. Maecenas quis tempus risus. Curabitur condimentum ligula in erat pharetra porta. + + Nam suscipit nisi a bibendum lacinia. + + +skills: + - groupName: Security Tools + list: + - Nessus - Qualys - NMap + - Burp - HP Webinspect + - McAfee SIEM + - IntelMQ - MISP + + - groupName: Programming & Systems + list: + - Python - Bash - Git - Docker + - Debian - RHEL - OpenBSD - Windows + +interests: + - Breaking things + - Fixing things + - Amateur Radio + - Everything 8-bit + +languages: + - name: German + level: Native + + - name: English + level: Professional + + - name: French + level: Rudimentary + +# This will use the default widget: "details-list" +awards: + - title: "Tübitak - Graduation Project" + date: "2017" + subtitle: "A Decision Support System for 3D Cutting Problem" + #details: | + # - add more here if you like to. + # - or just comment out/delete the field. + links: + - title: example + url: https://mertbakir.gitlab.io + icon: fas fa-bolt + prefix: "This is an " # use quotation marks if you want to pass the tailing space. + - title: second link. + url: https://esdfdsfdsf + icon: "-" # you can get rid of the icon by entering dummy text + prefix: "omg" + +certificates: + - title: "Supervised Learning: Regression" + subtitle: Coursera + date: "2020" + link: https://xkcd.com/605/ # This link will be on title level. + + - title: "Supervised Learning: Classification" + subtitle: Coursera + date: "2020" + link: https://xkcd.com/388/ diff --git a/data/projects.yaml b/data/projects.yaml new file mode 100644 index 0000000..69d1da3 --- /dev/null +++ b/data/projects.yaml @@ -0,0 +1,69 @@ +projects: +- title: "Development and implementation of a threat intelligence collection and distribution system" + subtitle: "2021 (Python, PostgreSQL)" + date: + details: | + Design, development and implementation of a message pipeline hub for collection and deduplication of IOCs (indicators of compromise) from threat intelligence feeds and threat sharing platforms (eg. MISP) based on IntelMQ. Distribution/Revocation of deduplicated and normalized IOCs (eg. URLs, hashes) to external systems. + +- title: "Development of a solution for the automated creation of use case documentation" + subtitle: "2018 (Python)" + date: + details: | + Development of a python based solution to automatically generate use case and correlation rule documentation in Markdown format for the McAfee Enterprise Security Manager (ESM). + links: + - title: esm2markdown on gitea + url: https://git.qrz.is/clemens/esm2markdown + icon: fab fa-github + +#- title: "Evaluation of an application whitelisting solution" +# subtitle: "2016" +# date: +# details: | +# Evaluation of an application whitelisting solution for a global manufacturing company. + +- title: "Development of a Tivoli Storage Manager monitoring application" + subtitle: "2009 - 2011 (PHP, MySQL)" + date: + details: | + Development of a PHP web application to help IBM Tivoli Storage Manager (TSM) administrators to quickly get reports and health status information of their TSM servers with many users around the world including a big german insurance company. + links: + - title: TSM Monitor on gitea + url: https://git.qrz.is/clemens/tsmmonitor + icon: fab fa-github + +- title: "Personal Side Projects" + subtitle: "Various smaller side projects, not related to any of my employments:" + date: + details: + links: + - title: Hardrock-50 Remote Display - ESP32 based remote display for an amateur radio power amplifier + url: https://qrz.is/hardrock50-remote-display/ + icon: fab fa-github + - title: qrzlogger - Python application to log amateur radio contacts from the command line + url: https://git.qrz.is/clemens/qrzlogger + icon: fab fa-github + - title: pyBMNotify - Python script for monitoring the Brandmeister network and sending push notifications + url: https://git.qrz.is/clemens/pyBMNotify + icon: fab fa-github + - title: qrz.sh - Amateur radio callsign data query script written in Bash + url: https://git.qrz.is/clemens/qrz.sh + icon: fab fa-github + - title: MSTerminology - Translates strings used in all kind of Microsoft products + url: https://git.qrz.is/clemens/MSTerminology + icon: fab fa-github + - title: Nmap-sqlite-output - Nmap NSE script for storing scan results into sqlite3 databases + url: https://git.qrz.is/clemens/nmap-sqlite-output + icon: fab fa-github + - title: Shellfolio - Command line cryptocurrency portfolio manager and price tracker + url: https://git.qrz.is/clemens/shellfolio + icon: fab fa-github + - title: nsd-dyndns - Dynamic DNS for NSD + url: https://git.qrz.is/clemens/nsd-dyndns + icon: fab fa-github + - title: The Laundruino - Washing machine monitoring with an Arduino + url: https://qrz.is/the-arduino-enabled-washing-machine/ + icon: fab fa-github + - title: The One Button Audio Book Player - The one button audiobook player + url: https://qrz.is/the-one-button-audiobook-player/ + icon: fab fa-github + diff --git a/data/publications.yaml b/data/publications.yaml new file mode 100644 index 0000000..3115d39 --- /dev/null +++ b/data/publications.yaml @@ -0,0 +1,26 @@ +- authors: + - last_name: McManus + first_name: Sean + - last_name: Cook + first_name: Mike + date: "2013" + title: "Raspberri Pi for Dummies" + journal: One-Button Audiobook Player as one of 'Ten Inspiring Projects for the Raspberry Pi' + page: "371-372" +- authors: + date: "2013" + title: Linux User & Developer Magazine + journal: "10 amazing Raspberry Pi projects - The one-button audio player" + page: "26" +- authors: + - last_name: Clemens + first_name: Michael + date: "2012" + title: "Menschengemachte Schwachstellen auf der Hack.lu 2012" + journal: iX 12/2012 +- authors: + - last_name: Donath + first_name: Andreas + date: "2011" + title: "Laundruino - Waschmaschine mit Onlineanschluss" + journal: https://www.golem.de/1108/85541.html diff --git a/public b/public new file mode 120000 index 0000000..d7615ae --- /dev/null +++ b/public @@ -0,0 +1 @@ +/var/www/resume.clemens.name/ \ No newline at end of file diff --git a/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.content b/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.content new file mode 100644 index 0000000..7ec9b82 --- /dev/null +++ b/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.content @@ -0,0 +1 @@ +*{margin:0;padding:0}body{background:#fff;color:#202020;font-family:pt sans,ibm plex sans,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none;color:#202020}a i{padding:0 .2rem 0 .25rem}a:hover{text-decoration:underline}a:not(.no-external-icon)::after{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==);margin:0 .2rem 0 .25rem}li{list-style-type:square;padding-left:0;list-style-position:inside;margin:.5rem 0}*::-webkit-scrollbar{width:12px;height:8px}*::-webkit-scrollbar-thumb{background-color:#b56b00;outline:1px solid #b56b00}*::-webkit-scrollbar-track{background-color:#ffe1b5}::selection{background:#b56b00;color:#fff}::-moz-selection{background:#b56b00;color:#fff}.paper{position:relative;margin:.5rem auto;padding:.45in .5in;width:210mm;height:297mm;background-color:#fff;-webkit-box-shadow:.2rem .2rem .6rem #aaa;-moz-box-shadow:.2rem .2rem .6rem #aaa;box-shadow:.2rem .2rem .6rem #aaa;box-sizing:border-box;font-size:.88rem}.paper h1,.paper h2,.paper h3{line-height:1.2}.paper h1{margin-bottom:.8rem;font-size:1.5rem}.paper h2{margin-bottom:.4rem;font-size:1.1rem}.paper h3{margin-bottom:.2rem;font-size:1rem}.paper p{margin:.5rem 0;font-size:.88rem;line-height:1.5;text-align:justify}.paper>*:first-child{margin-top:0}main.paper{margin-top:2.5rem;padding-top:0}main.paper .grid{width:100%;height:100%;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);grid-column-gap:0;grid-row-gap:0}main.paper .grid .flex-row{display:flex;flex-direction:row;justify-content:space-between}main.paper header{grid-area:1/1/2/8;border-bottom:#bfbfbf .05rem solid;height:12.75rem}main.paper header .title{display:flex;flex-direction:column;justify-content:center;font-family:pt sans,ibm plex sans,arial,sans-serif}main.paper header .title h1{margin-bottom:.4rem;font-size:2.5rem;color:#202020;letter-spacing:.15rem;text-transform:uppercase}main.paper header .title h2{margin-bottom:.3rem;font-size:1rem}main.paper header .avatar{display:block;margin:1rem auto;padding:1rem;object-fit:cover;height:8.75rem;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%}main.paper header a i{padding:0}main.paper .left-column,main.paper .right-column{margin-top:.75rem}main.paper .left-column>*:first-child,main.paper .left-column>*:first-child>*:first-child,main.paper .right-column>*:first-child,main.paper .right-column>*:first-child>*:first-child{margin-top:0}main.paper .left-column{grid-area:2/1/7/6;display:flex;flex-direction:column;justify-content:flex-start;border-right:#bfbfbf .05rem solid;padding-right:1rem}main.paper .right-column{grid-area:2/6/7/8;display:flex;flex-direction:column;justify-content:flex-start;margin-left:.5rem}main.paper .right-column li{list-style-type:none;padding:0}main.paper .right-column h1{margin-bottom:.5rem;font-size:1.2rem}main.paper .right-column h2{margin-bottom:.2rem;font-size:1rem}main.paper .right-column h3{margin-bottom:.1rem;font-size:.8rem}main.paper .right-column p{font-size:.8rem;line-height:1.3}.section{margin-bottom:1.5rem}.section>*:last-child{margin-bottom:0}.right-column .section{margin-bottom:1rem}.section-title{border-left:solid .35rem #202020;padding-left:.4rem;font-family:pt sans,ibm plex sans,arial,sans-serif}.item{margin-bottom:.6rem}.item dl dt{display:inline;font-weight:600}.item dl dt::after{content:': '}.item dl dd{display:inline}.item dl dd:not(:last-child)::after{content:"";display:block;margin-bottom:.4em}.item dl dd *:not(:last-child)::after{content:"; ";margin-right:.25rem}.item.group .item{margin-top:0}.item-title{font-weight:600;margin-bottom:2px}.item-info{font-weight:400;font-size:12px}.job-title{font-size:14px;font-weight:700}.date{color:#636363}main.paper .right-column .section-education h2,main.paper .left-column .section-education h2,.paper .section-education h2{margin-bottom:0;font-size:1rem}main.paper .right-column .section-languages .item,main.paper .left-column .section-languages .item,.paper .section-languages .item{margin-bottom:.4rem}main.paper .right-column .section-languages h2,main.paper .left-column .section-languages h2,.paper .section-languages h2{margin-bottom:.1rem;font-size:.9rem;line-height:1.1}main.paper .right-column .section-languages h2 span,main.paper .left-column .section-languages h2 span,.paper .section-languages h2 span{font-weight:400;font-size:.8rem}footer{width:8.25in;margin:36px auto;text-align:center;display:flex;flex-flow:column}footer .footer-item{margin-bottom:.5rem}footer .footer-item a{color:#e30a17;padding:0 4px}footer .footer-item a span{font-weight:700}footer .footer-item a:hover{color:#fff;background-color:#e30a17;text-decoration:none;transition:all .35s ease-out;transition-property:all .35s ease-out;-webkit-transition-property:all .35s ease-out;-moz-transition-property:all .35s ease-out;-o-transition-property:all .35s ease-out}footer .footer-item .footer-link:not(:last-child)::after{content:"\00B7"}@media print{@page{size:A4;margin:0}html,body{background:#fff;margin:0;padding:0}.paper,main.paper{margin:0;width:210mm;height:297mm;overflow:hidden;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;page-break-after:always}a{text-decoration:none}footer{display:none}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.json b/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.json new file mode 100644 index 0000000..a5ca9c5 --- /dev/null +++ b/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.json @@ -0,0 +1 @@ +{"Target":"css/main.min.d00ec764eee10198edc1c0a0424ca1e17f4d114ecff6fdd8b8ae20bff237295c.css","MediaType":"text/css","Data":{"Integrity":"sha256-0A7HZO7hAZjtwcCgQkyh4X9NEU7P9v3YuK4gv/I3KVw="}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.content b/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.content new file mode 100644 index 0000000..327b797 --- /dev/null +++ b/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.content @@ -0,0 +1 @@ +*{margin:0;padding:0}body{background:#fff;color:#202020;font-family:pt sans,ibm plex sans,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:underline;color:#202020}a i{padding:0 .2rem 0 .25rem}a:hover{text-decoration:underline;color:red}a:not(.no-external-icon)::after{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==);margin:0 .2rem 0 .25rem}li{list-style-type:square;padding-left:0;list-style-position:inside;margin:.5rem 0}*::-webkit-scrollbar{width:12px;height:8px}*::-webkit-scrollbar-thumb{background-color:#b56b00;outline:1px solid #b56b00}*::-webkit-scrollbar-track{background-color:#ffe1b5}::selection{background:#b56b00;color:#fff}::-moz-selection{background:#b56b00;color:#fff}.paper{position:relative;margin:.5rem auto;padding:.45in .5in;width:210mm;height:297mm;background-color:#fff;-webkit-box-shadow:.2rem .2rem .6rem #aaa;-moz-box-shadow:.2rem .2rem .6rem #aaa;box-shadow:.2rem .2rem .6rem #aaa;box-sizing:border-box;font-size:.88rem}.paper h1,.paper h2,.paper h3{line-height:1.2}.paper h1{margin-bottom:.8rem;font-size:1.5rem}.paper h2{margin-bottom:.4rem;font-size:1.1rem}.paper h3{margin-bottom:.2rem;font-size:1rem}.paper p{margin:.5rem 0;font-size:.88rem;line-height:1.5;text-align:justify}.paper>*:first-child{margin-top:0}main.paper{margin-top:2.5rem;padding-top:0}main.paper .grid{width:100%;height:100%;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);grid-column-gap:0;grid-row-gap:0}main.paper .grid .flex-row{display:flex;flex-direction:row;justify-content:space-between}main.paper header{grid-area:1/1/2/8;border-bottom:#bfbfbf .05rem solid;height:12.75rem}main.paper header .title{display:flex;flex-direction:column;justify-content:center;font-family:pt sans,ibm plex sans,arial,sans-serif}main.paper header .title h1{margin-bottom:.4rem;font-size:2.5rem;color:#202020;letter-spacing:.15rem;text-transform:uppercase}main.paper header .title h2{margin-bottom:.3rem;font-size:1rem}main.paper header .avatar{display:block;margin:1rem auto;padding:1rem;object-fit:cover;height:8.75rem;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%}main.paper header a i{padding:0}main.paper .left-column,main.paper .right-column{margin-top:.75rem}main.paper .left-column>*:first-child,main.paper .left-column>*:first-child>*:first-child,main.paper .right-column>*:first-child,main.paper .right-column>*:first-child>*:first-child{margin-top:0}main.paper .left-column{grid-area:2/1/7/6;display:flex;flex-direction:column;justify-content:flex-start;border-right:#bfbfbf .05rem solid;padding-right:1rem}main.paper .right-column{grid-area:2/6/7/8;display:flex;flex-direction:column;justify-content:flex-start;margin-left:.5rem}main.paper .right-column li{list-style-type:none;padding:0}main.paper .right-column h1{margin-bottom:.5rem;font-size:1.2rem}main.paper .right-column h2{margin-bottom:.2rem;font-size:1rem}main.paper .right-column h3{margin-bottom:.1rem;font-size:.8rem}main.paper .right-column p{font-size:.8rem;line-height:1.3}.section{margin-bottom:1.5rem}.section>*:last-child{margin-bottom:0}.right-column .section{margin-bottom:1rem}.section-title{border-left:solid .35rem #202020;padding-left:.4rem;font-family:pt sans,ibm plex sans,arial,sans-serif}.item{margin-bottom:.6rem}.item dl dt{display:inline;font-weight:600}.item dl dt::after{content:': '}.item dl dd{display:inline}.item dl dd:not(:last-child)::after{content:"";display:block;margin-bottom:.4em}.item dl dd *:not(:last-child)::after{content:"; ";margin-right:.25rem}.item.group .item{margin-top:0}.item-title{font-weight:600;margin-bottom:2px}.item-info{font-weight:400;font-size:12px}.job-title{font-size:14px;font-weight:700}.date{color:#636363}main.paper .right-column .section-education h2,main.paper .left-column .section-education h2,.paper .section-education h2{margin-bottom:0;font-size:1rem}main.paper .right-column .section-languages .item,main.paper .left-column .section-languages .item,.paper .section-languages .item{margin-bottom:.4rem}main.paper .right-column .section-languages h2,main.paper .left-column .section-languages h2,.paper .section-languages h2{margin-bottom:.1rem;font-size:.9rem;line-height:1.1}main.paper .right-column .section-languages h2 span,main.paper .left-column .section-languages h2 span,.paper .section-languages h2 span{font-weight:400;font-size:.8rem}footer{width:8.25in;margin:36px auto;text-align:center;display:flex;flex-flow:column}footer .footer-item{margin-bottom:.5rem}footer .footer-item a{color:#e30a17;padding:0 4px}footer .footer-item a span{font-weight:700}footer .footer-item a:hover{color:#fff;background-color:#e30a17;text-decoration:none;transition:all .35s ease-out;transition-property:all .35s ease-out;-webkit-transition-property:all .35s ease-out;-moz-transition-property:all .35s ease-out;-o-transition-property:all .35s ease-out}footer .footer-item .footer-link:not(:last-child)::after{content:"\00B7"}@media print{@page{size:A4;margin:0}html,body{background:#fff;margin:0;padding:0}.paper,main.paper{margin:0;width:210mm;height:297mm;overflow:hidden;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;page-break-after:always}a{text-decoration:none}footer{display:none}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.json b/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.json new file mode 100644 index 0000000..f1a333a --- /dev/null +++ b/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.json @@ -0,0 +1 @@ +{"Target":"css/main.min.21500104e30855acedd2e664b0895af1b40370d4bf80a8335a3234490317809f.css","MediaType":"text/css","Data":{"Integrity":"sha256-IVABBOMIVazt0uZksIla8bQDcNS/gKgzWjI0SQMXgJ8="}} \ No newline at end of file diff --git a/static/avatar.jpg b/static/avatar.jpg new file mode 100644 index 0000000..a136028 Binary files /dev/null and b/static/avatar.jpg differ diff --git a/themes/resume-a4 b/themes/resume-a4 new file mode 160000 index 0000000..661a996 --- /dev/null +++ b/themes/resume-a4 @@ -0,0 +1 @@ +Subproject commit 661a99622c2259ca20b3aa4a11b202e8d6bc6b40