├── layouts ├── content │ └── _redirects ├── partials │ ├── _avatar.html │ ├── _overview.html │ ├── _competencies.html │ ├── _contacts.html │ ├── _skills.html │ ├── _certs.html │ ├── head.html │ ├── _projects.html │ └── _experience.html ├── _default │ └── baseof.html ├── 404.html └── index.html ├── .gitignore ├── Makefile ├── resume-operator.png ├── static └── img │ └── avatar.jpg ├── assets └── scss │ ├── _functions.scss │ ├── components │ ├── _404.scss │ ├── _competencies.scss │ ├── _repos.scss │ ├── _section.scss │ ├── _certifications.scss │ ├── _contact.scss │ ├── _side_section.scss │ ├── _skills.scss │ ├── _avatar.scss │ ├── _experience.scss │ └── _cards.scss │ ├── abstract.scss │ ├── _typography.scss │ ├── _mixins.scss │ ├── _base.scss │ ├── _layout.scss │ └── main.scss ├── data ├── certs │ └── VCP-DCV.yaml ├── experience │ └── vmware.yaml └── profile.yaml ├── Dockerfile ├── i18n └── en.toml ├── config.toml ├── .github └── workflows │ └── gh-pages.yml └── README.md /layouts/content/_redirects: -------------------------------------------------------------------------------- 1 | /* /404.html 404 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .hugo_build.lock 2 | 3 | resources/ -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | build: 2 | docker build -t ${IMG} . 3 | 4 | push: 5 | docker push ${IMG} -------------------------------------------------------------------------------- /resume-operator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JefeDavis/resume/HEAD/resume-operator.png -------------------------------------------------------------------------------- /static/img/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JefeDavis/resume/HEAD/static/img/avatar.jpg -------------------------------------------------------------------------------- /assets/scss/_functions.scss: -------------------------------------------------------------------------------- 1 | @function paper_height($width) { 2 | @return $width / 0.70695553; 3 | } -------------------------------------------------------------------------------- /assets/scss/components/_404.scss: -------------------------------------------------------------------------------- 1 | .pageNotFound { 2 | padding-top: 8rem; 3 | @include hz-center; 4 | 5 | &__text { 6 | padding-top: 3rem; 7 | } 8 | } -------------------------------------------------------------------------------- /data/certs/VCP-DCV.yaml: -------------------------------------------------------------------------------- 1 | title: My Sweet Cert 2 | issuer: Who Knows 3 | earnedDate: 2020-12-18 4 | alias: MSW 5 | validationURL: https://invalid.url 6 | imageURL: https://not-a-valid.url 7 | -------------------------------------------------------------------------------- /assets/scss/components/_competencies.scss: -------------------------------------------------------------------------------- 1 | .competencies { 2 | & li{ 3 | display: inline-list; 4 | list-style-type: disc; 5 | font-weight: 400; 6 | transition: all 0.2s ease-in-out; 7 | } 8 | } -------------------------------------------------------------------------------- /assets/scss/abstract.scss: -------------------------------------------------------------------------------- 1 | // WIDTHS 2 | $width-left-col: 56rem; //70% 3 | $page-width: 80rem; 4 | $width-right-col: $page-width - $width-left-col; 5 | 6 | // ANIMATIONS 7 | $cubic: 0.63, 0.21, 0.76, 1.58; -------------------------------------------------------------------------------- /layouts/partials/_avatar.html: -------------------------------------------------------------------------------- 1 | {{ if .basicInfo.photo }} 2 |
3 |
4 | photo of me 5 |
6 |
7 | {{ end }} -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM klakegg/hugo:ext-alpine 2 | COPY assets/ /site/assets/ 3 | COPY i18n/ /site/i18n/ 4 | COPY layouts/ /site/layouts/ 5 | COPY config.toml /site/ 6 | COPY static/ /site/static/ 7 | COPY data/ /site/data/ 8 | 9 | WORKDIR /site 10 | 11 | CMD [ "server"] 12 | -------------------------------------------------------------------------------- /i18n/en.toml: -------------------------------------------------------------------------------- 1 | [overview] 2 | other = "Overview" 3 | 4 | [experience] 5 | other = "Experience" 6 | 7 | [skills] 8 | other = "Skills" 9 | 10 | [certifications] 11 | other = "Certifications" 12 | 13 | [competencies] 14 | other = "Core Competencies" 15 | 16 | [projects] 17 | other = "Projects" -------------------------------------------------------------------------------- /layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{- partial "head.html" . -}} 4 | 5 | {{- partial "header.html" . -}} 6 |
7 | {{- block "main" . }}{{- end }} 8 |
9 | {{- partial "footer.html" . -}} 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /layouts/partials/_overview.html: -------------------------------------------------------------------------------- 1 | {{ if .overview }} 2 |
3 |
4 |

{{ i18n "overview" }}

5 |
6 |
7 |

{{ .overview | safeHTML | emojify }}

8 |
9 |
10 | {{ end }} -------------------------------------------------------------------------------- /assets/scss/components/_repos.scss: -------------------------------------------------------------------------------- 1 | .repos { 2 | &::before, 3 | &::after{ 4 | box-sizing: border-box; 5 | } 6 | 7 | &__languageicon{ 8 | width: 0.95rem; 9 | height: 0.95rem; 10 | border-radius: 100%; 11 | display: inline-block; 12 | top: 1px; 13 | position: relative; 14 | margin-left: 1rem; 15 | } 16 | 17 | &__language{ 18 | margin-bottom: .5rem; 19 | } 20 | } -------------------------------------------------------------------------------- /assets/scss/components/_section.scss: -------------------------------------------------------------------------------- 1 | .section { 2 | display: block; 3 | margin-bottom: 2rem; 4 | 5 | &__heading { 6 | width: 100%; 7 | overflow: hidden; 8 | } 9 | 10 | &__title { 11 | position: relative; 12 | color: $color-primary; 13 | border-bottom: 1px solid; 14 | border-color: $color-primary; 15 | 16 | &:hover::after { 17 | border-color: $color-secondary; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /assets/scss/components/_certifications.scss: -------------------------------------------------------------------------------- 1 | .certification { 2 | display: block; 3 | margin-bottom: 3rem; 4 | @include avoid-break; 5 | font-size: 90%; 6 | 7 | & li { 8 | list-style-type: disc; 9 | } 10 | 11 | &__title { 12 | color: $color-primary; 13 | } 14 | 15 | &__date { 16 | &::before{ 17 | content: "("; 18 | } 19 | 20 | &::after{ 21 | content: ")"; 22 | } 23 | 24 | color: $color-dark; 25 | font-style: italic; 26 | } 27 | } -------------------------------------------------------------------------------- /layouts/partials/_competencies.html: -------------------------------------------------------------------------------- 1 | {{ if .coreCompetencies }} 2 |
3 |
4 |

{{ i18n "competencies" }}

5 |
6 |
7 | 14 |
15 |
16 | {{ end }} -------------------------------------------------------------------------------- /layouts/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ partial "head.html" . }} 4 | 5 |
6 |
7 |

Page not found :(

8 |

9 | You're an explorer, aren't ya?
10 | But the page you are attempting to access cannot be found.
11 | Go back to the main page 12 |

13 |
14 |
15 | 16 | -------------------------------------------------------------------------------- /layouts/partials/_contacts.html: -------------------------------------------------------------------------------- 1 | {{ if .basicInfo.contacts }} 2 |
3 | 15 |
16 | {{ end }} -------------------------------------------------------------------------------- /assets/scss/components/_contact.scss: -------------------------------------------------------------------------------- 1 | .contact { 2 | line-height: 2rem; 3 | 4 | &__item { 5 | position: relative; 6 | font-size: 1rem; 7 | 8 | & > i { 9 | background-color: $color-right-col-icon-background; 10 | color: $color-right-col-icon-primary; 11 | font-size: 1rem; 12 | text-align: center; 13 | border-radius: 50%; 14 | padding-top: 0.5rem; 15 | width: 2rem; 16 | height: 2rem; 17 | margin-right: 0.5rem; 18 | margin-bottom: 0.5rem; 19 | } 20 | & > span { 21 | @include vt-center; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /assets/scss/_typography.scss: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: "Roboto", sans-serif; 3 | font-weight: 300; 4 | line-height: 1.7; 5 | font-size: 1.12rem; 6 | color: $color-dark; 7 | } 8 | 9 | .mainHeading { 10 | text-transform: uppercase; 11 | font-size: 5rem; 12 | color: $color-primary; 13 | 14 | & span { 15 | color: $color-primary; 16 | } 17 | } 18 | 19 | .section_title { 20 | font-size: 2.1rem; 21 | color: $color-dark; 22 | } 23 | 24 | h1, 25 | h2 { 26 | text-transform: uppercase; 27 | font-family: 'Oswald', sans-serif; 28 | } 29 | 30 | a { 31 | color: $color-primary; 32 | } -------------------------------------------------------------------------------- /assets/scss/components/_side_section.scss: -------------------------------------------------------------------------------- 1 | .sideSection { 2 | display: block; 3 | margin-bottom: 3rem; 4 | @include avoid-break; 5 | 6 | &__heading { 7 | width: 100%; 8 | overflow: hidden; 9 | text-align: Left; 10 | border-bottom: 1px solid $color-primary; 11 | margin-bottom: 1rem; 12 | color: $color-right-col-heading-text; 13 | } 14 | 15 | &__title { 16 | position: relative; 17 | 18 | &::after { 19 | margin-left: 1rem; 20 | } 21 | 22 | &::before { 23 | margin-left: -11rem; 24 | } 25 | } 26 | 27 | & li { 28 | list-style: none; 29 | } 30 | } -------------------------------------------------------------------------------- /data/experience/vmware.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | employer: Lorem Ipsum 3 | location: Remote 4 | startDate: 2021-03-01 5 | endDate: Present 6 | positions: 7 | - title: Lorem ipsum dolor sit 8 | highlights: 9 | - Lorem ipsum dolor sit amet, consectetur adipiscing elit. 10 | - Mauris fermentum nulla nec erat eleifend dapibus. 11 | - Aliquam nec elit in risus volutpat facilisis ac sed leo. 12 | - Donec nec libero ac ex sagittis elementum eget et ante. 13 | - Curabitur eu justo nec sapien hendrerit fermentum eu nec erat. 14 | - Ut viverra massa at pellentesque suscipit. 15 | -------------------------------------------------------------------------------- /assets/scss/components/_skills.scss: -------------------------------------------------------------------------------- 1 | .skills { 2 | &__group { 3 | & span { 4 | font-weight: 700; 5 | display: inline-block; 6 | border-bottom: 1px solid $color-dark; 7 | 8 | &::after{ 9 | content: ":" 10 | } 11 | } 12 | 13 | & li{ 14 | display: inline-block; 15 | font-weight: 400; 16 | transition: all 0.2s ease-in-out; 17 | padding: 0 1px; 18 | border-radius: 2px; 19 | 20 | &:not(:last-child)::after{ 21 | content: ", " 22 | } 23 | 24 | &:hover { 25 | background-color: $color-primary; 26 | color: $color-light; 27 | } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /assets/scss/components/_avatar.scss: -------------------------------------------------------------------------------- 1 | .avatar { 2 | width: 100%; 3 | height: $width-right-col - 6rem; 4 | position: relative; 5 | overflow: hidden; 6 | 7 | &__container { 8 | @include hz-center; 9 | width: 100%; 10 | clip-path: circle(50% at 50% 56%); 11 | height: $width-right-col - 8rem; 12 | text-align: center; 13 | transition: all 0.3s cubic-bezier($cubic); 14 | 15 | &:hover { 16 | width: 110%; 17 | } 18 | } 19 | 20 | &__img { 21 | object-fit: cover; 22 | width: 110%; 23 | transition: all 0.3s cubic-bezier($cubic); 24 | @include all-center; 25 | 26 | &:hover { 27 | width: 105%; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /layouts/partials/_skills.html: -------------------------------------------------------------------------------- 1 | {{ if .skills }} 2 |
3 |
4 |

{{ i18n "skills" }}

5 |
6 |
7 | 19 |
20 |
21 | {{ end }} 22 | -------------------------------------------------------------------------------- /layouts/partials/_certs.html: -------------------------------------------------------------------------------- 1 | {{ if .certs }} 2 |
3 |
4 |

{{ i18n "certifications" }}

5 |
6 |
7 | 17 |
18 |
19 | {{ end }} -------------------------------------------------------------------------------- /assets/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin shadow($distance) { 2 | -webkit-box-shadow: $distance * 1rem $distance * 2rem $distance * 3rem rgba($color-dark, $distance * 0.3); 3 | -moz-box-shadow: $distance * 1rem $distance * 2rem $distance * 3rem rgba($color-dark, $distance * 0.3); 4 | box-shadow: $distance * 1rem $distance * 2rem $distance * 3rem rgba($color-dark, $distance * 0.3); 5 | } 6 | 7 | @mixin hz-center { 8 | position: absolute; 9 | left: 50%; 10 | transform: translateX(-50%); 11 | } 12 | 13 | @mixin vt-center { 14 | position: absolute; 15 | top: 50%; 16 | transform: translateY(-50%); 17 | } 18 | 19 | @mixin all-center { 20 | position: absolute; 21 | top: 50%; 22 | left: 50%; 23 | transform: translateX(-50%) translateY(-50%); 24 | } 25 | 26 | @mixin avoid-break { 27 | @media print { 28 | page-break-inside: avoid; 29 | } 30 | } -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | languageCode = "en-us" 2 | defaultContentLanguage = "en" 3 | enableRobotsTXT = true 4 | enableEmoji = true 5 | 6 | disableKinds = ["page", "section", "taxonomy", "term", "RSS", "sitemap"] 7 | 8 | baseURL = "https://jefedavis.github.io/resume" 9 | title = "Jeff Davis - CV" 10 | #googleAnalytics = "" 11 | 12 | [params] 13 | enableMetaTags = true 14 | colorLight = "#fff" 15 | colorDark = "#666" 16 | colorPageBackground = "#ddd" 17 | colorPrimary = "#4C7535" #LightGreen 18 | colorSecondary = "#68B3C2" #LightTeal 19 | colorHeader = "#3E762A" #DarkGreen 20 | colorHeader2 = "#33779D" #DarkTeal 21 | colorIconPrimary = "#fff" 22 | colorIconBackground = "#96B986" 23 | colorRightColumnBackground = "#f5f5f5" 24 | colorRightColumnHeadingText = "#4C7535" 25 | colorRightColumnBodyText = "#666" 26 | colorRightColumnIconPrimary = "#fff" 27 | colorRightColumnIconBackground = "#96B986" 28 | pages = 3 -------------------------------------------------------------------------------- /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: github pages 2 | 3 | on: 4 | push: 5 | branches: 6 | - main # Set a branch to deploy 7 | pull_request: 8 | 9 | jobs: 10 | deploy: 11 | runs-on: ubuntu-20.04 12 | steps: 13 | - uses: actions/checkout@v2 14 | with: 15 | submodules: true # Fetch Hugo themes (true OR recursive) 16 | fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod 17 | 18 | - name: Setup Hugo 19 | uses: peaceiris/actions-hugo@v2 20 | with: 21 | hugo-version: 'latest' 22 | extended: true 23 | 24 | - name: Build 25 | run: hugo --minify 26 | 27 | - name: Deploy 28 | uses: peaceiris/actions-gh-pages@v3 29 | if: github.ref == 'refs/heads/main' 30 | with: 31 | github_token: ${{ secrets.GITHUB_TOKEN }} 32 | publish_dir: ./public 33 | -------------------------------------------------------------------------------- /assets/scss/_base.scss: -------------------------------------------------------------------------------- 1 | *, 2 | *::after, 3 | *::before { 4 | margin: 0; 5 | padding: 0; 6 | box-sizing: inherit; 7 | } 8 | 9 | html { 10 | font-size: 62.5%; 11 | background-color: $color-page-background; 12 | 13 | @media print { 14 | color-adjust: exact; 15 | print-color-adjust: exact; 16 | -webkit-print-color-adjust: exact; 17 | } 18 | } 19 | 20 | .content { 21 | //A4 paper 22 | width: $page-width; 23 | min-height: paper_height($page-width); 24 | background-color: $color-light; 25 | 26 | @media screen and (min-width: 60rem) { 27 | margin: 6rem 0; 28 | @include shadow(1); 29 | @include hz-center; 30 | } 31 | 32 | @media print { 33 | margin: 0; 34 | height: paper_height($page-width) * $pages; 35 | } 36 | } 37 | 38 | body { 39 | box-sizing: border-box; 40 | } 41 | 42 | @media print { 43 | @page { 44 | margin: 0; 45 | size: A4; 46 | } 47 | } 48 | 49 | ::selection { 50 | color: $color-light; 51 | background-color: darken(rgba($color-primary, 0.6), 10%); 52 | } -------------------------------------------------------------------------------- /layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ $data := or (index .Site.Data .Site.Language.Lang) .Site.Data }} 2 | {{ .Scratch.Set "data" $data }} 3 | 4 | 5 | {{ partial "head.html" . }} 6 | 7 |
8 |
9 |

{{ $data.profile.basicInfo.firstName }} {{ $data.profile.basicInfo.lastName }}

10 |

This Resume is maintained using my Resume Operator powered by K8s

11 |
Check it out at: https://github.com/JefeDavis/Resume-Operator
12 | {{ partial "_overview.html" $data.profile }} 13 | {{ partial "_experience.html" $data }} 14 | {{ partial "_projects.html" $data.profile }} 15 |
16 |
17 | {{ partial "_avatar.html" $data.profile }} 18 | {{ partial "_contacts.html" $data.profile }} 19 | {{ partial "_competencies.html" $data.profile }} 20 | {{ partial "_skills.html" $data.profile }} 21 | {{ partial "_certs.html" $data }} 22 |
23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /assets/scss/_layout.scss: -------------------------------------------------------------------------------- 1 | .content { 2 | position: absolute; 3 | overflow: hidden; 4 | 5 | &__left { 6 | float: left; 7 | width: $width-left-col; 8 | height: 100%; 9 | padding: 3rem 4rem; 10 | 11 | @media screen { 12 | &::after { 13 | content: '2022 © by Jeff Davis | github.com/JefeDavis'; 14 | height: 4rem; 15 | width: 100%; 16 | position: absolute; 17 | bottom: 0.5rem; 18 | color: darken($color-light, 10%); 19 | } 20 | } 21 | } 22 | 23 | &__right { 24 | position: absolute; 25 | float: right; 26 | width: $width-right-col; 27 | background-color: $color-right-col-background; 28 | color: $color-right-col-body-text; 29 | height: 100%; 30 | padding: 2rem 3rem; 31 | right: 1rem; 32 | border-left: 1px solid $color-primary; 33 | 34 | @include shadow(0.5); 35 | } 36 | } 37 | 38 | .pdf-button { 39 | opacity: 75%; 40 | position: fixed; 41 | bottom: 1rem; 42 | right: 1rem; 43 | 44 | & > i { 45 | background-color: $color-right-col-icon-background; 46 | color: $color-right-col-icon-primary; 47 | font-size: 3rem; 48 | text-align: center; 49 | border-radius: 50%; 50 | padding-top: 0.5rem; 51 | width: 4rem; 52 | height: 4rem; 53 | margin-right: 0.5rem; 54 | margin-bottom: 0.5rem; 55 | } 56 | 57 | @media print { 58 | display: none !important; 59 | } 60 | } -------------------------------------------------------------------------------- /assets/scss/components/_experience.scss: -------------------------------------------------------------------------------- 1 | .experience { 2 | &__item { 3 | display: block; 4 | @include avoid-break; 5 | &:not(:first-child) { 6 | padding-top: 1.5rem; 7 | } 8 | } 9 | 10 | &__header, 11 | &__subheader { 12 | display: block; 13 | width: 100%; 14 | height: 2.4rem; 15 | } 16 | 17 | &__job { 18 | position: relative; 19 | transition: transform 0.2s cubic-bezier($cubic); 20 | 21 | &:hover { 22 | transform: translateX(0.5rem); 23 | } 24 | } 25 | 26 | &__employer, 27 | &__position { 28 | text-align: left; 29 | min-width: 60%; 30 | max-width: 70%; 31 | float: left; 32 | } 33 | 34 | &__employer { 35 | color: $color-secondary; 36 | font-weight: 200; 37 | font-size: 1.5rem; 38 | } 39 | 40 | &__position { 41 | text-transform: uppercase; 42 | font-style: italic; 43 | font-size: 1.3rem; 44 | color: $color-dark; 45 | } 46 | 47 | &__date, 48 | &__place { 49 | float: right; 50 | text-align: right; 51 | min-width: 30%; 52 | max-width: 40%; 53 | color: $color-secondary; 54 | } 55 | 56 | &__date { 57 | font-weight: 400; 58 | font-style: italic; 59 | color: $color-dark 60 | } 61 | 62 | &__place { 63 | font-weight: 200; 64 | &::before { 65 | font-family: 'Material Icons'; 66 | color: $color-icon-background; 67 | font-size: 1.4rem; 68 | content: 'place'; 69 | display: inline-block; 70 | padding-right: 3px; 71 | vertical-align: middle; 72 | font-weight: 900; 73 | } 74 | } 75 | 76 | &__bullet { 77 | list-style-position: inside; 78 | } 79 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Resume - Jeff Davis - resume.jefedavis.dev 2 | 3 | This respository and it's companion [Resume-Operator](https://github.com/JefeDavis/Resume-Operator) serves two purposes: 4 | 5 | * Backup of my resume for rapid deployment and development 6 | * Showcasing some skills while I'm at it: 7 | - Golang 8 | - Docker 9 | - Kubernetes 10 | - Kubernetes Operators 11 | - CI/CD 12 | - GitHub Actions 13 | - MakeFile 14 | - Hugo Web Framework 15 | - HTML5, SCSS 16 | - Writing Great Documentation 17 | 18 | # Why 19 | I hate updating resumes, It's not so much writing the content that I dislike. Instead, it's messing with Word and other tools to adjust margins, dealing with columns, page breaks and just formatting in general. So, why not use a data structure language like `YAML` and let programming deal with all of the formating. Plus, the portability and rapid deployments are a big upshot as well. 20 | 21 | Now I can store all my expierence, certifications, skills, and projects in kubernetes manifests and let the code handle the rest. I work with Kubernetes and Kuberentes Operators quite a bit, why not practice what I preach? 22 | 23 | ## OK, but is a Kubernetes Operator really necessary? 24 | Absolutely not, but it was a fun exercise and a neat talking point. Additionally with the other tools I've built and worked on ([yot](github.com/vmware-tanzu-labs/yaml-overlay-tool) and [operator-builder](github.com/vmware-tanzu-labs/operator-builder)) I was able to create a fully functional operator in about 30 minutes. 25 | 26 | 27 | # K8s Architecture Overview 28 | ![](./resume-operator.png) 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /layouts/partials/head.html: -------------------------------------------------------------------------------- 1 | {{ $style := resources.Get "scss/main.scss" | resources.ExecuteAsTemplate "style.main.scss" . | toCSS | minify | fingerprint }} 2 | {{ $data := .Scratch.Get "data" }} 3 | 4 | 5 | 6 | {{ .Site.Title }} 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {{- if .Site.Params.enableMetaTags }} 17 | 18 | 19 | 20 | {{- with $data.BasicInfo.Photo }} 21 | 22 | {{- end }} 23 | {{- with $data.overview | htmlUnescape | emojify | truncate 200 }} 24 | 25 | 26 | {{- end }} 27 | {{- end }} 28 | 29 | {{- if .Site.GoogleAnalytics }} 30 | {{ template "_internal/google_analytics.html" . }} 31 | {{ template "_internal/google_analytics_async.html" . }} 32 | {{- end }} 33 | -------------------------------------------------------------------------------- /assets/scss/main.scss: -------------------------------------------------------------------------------- 1 | $color-light: {{ .Site.Params.colorLight | default "#ffffff" }} !default; 2 | $color-dark: {{ .Site.Params.colorDark | default "#666x"}} !default; 3 | $color-page-background: {{ .Site.Params.colorPageBackground | default "#ddd" }} !default; 4 | 5 | $color-primary: {{ .Site.Params.colorPrimary | default "#e3bfb8"}} !default; 6 | $color-secondary: {{ .Site.Params.colorSecondary | default "#aaa"}} !default; 7 | 8 | $color-icon-primary: {{ .Site.Params.colorIconPrimary | default "#fff"}} !default; 9 | $color-icon-background: {{ .Site.Params.colorIconBackground | default "#e3bfb8"}} !default; 10 | 11 | $color-right-col-background: {{ .Site.Params.colorRightColumnBackground | default "#f5f5f5" }} !default; 12 | $color-right-col-heading-text: {{ .Site.Params.colorRightColumnHeadingText | default "#666" }} !default; 13 | $color-right-col-body-text: {{ .Site.Params.colorRightColumnBodyText | default "#666" }} !default; 14 | $color-right-col-icon-primary: {{ .Site.Params.colorRightColumnIconPrimary | default "#fff" }} !default; 15 | $color-right-col-icon-background: {{ .Site.Params.colorRightColumnIconBackground | default "#e3bfb8" }} !default; 16 | 17 | $pages: {{ .Site.Params.pages | default 1}} !default; 18 | 19 | @import "abstract"; 20 | @import "functions"; 21 | @import "mixins"; 22 | @import "layout"; 23 | @import "typography"; 24 | @import "base"; 25 | 26 | @import "components/section"; 27 | @import "components/side_section"; 28 | @import "components/experience"; 29 | @import "components/repos"; 30 | @import "components/cards"; 31 | @import "components/contact"; 32 | @import "components/competencies"; 33 | @import "components/avatar"; 34 | @import "components/skills"; 35 | @import "components/certifications"; 36 | @import "components/404"; -------------------------------------------------------------------------------- /data/profile.yaml: -------------------------------------------------------------------------------- 1 | basicInfo: 2 | firstName: John 3 | lastName: Doe 4 | photo: img/avatar.jpg 5 | contacts: 6 | - icon: fa fa-linkedin 7 | info: https://linkedin.com/in/JohnDoe 8 | - icon: fa fa-github 9 | info: https://github.com/JohnDoe 10 | - icon: fa fa-map-marker 11 | info: Somewhere 12 | overview: 13 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut sem nec tellus facilisis aliquam. Curabitur lobortis, tortor eget laoreet interdum, nisi magna maximus risus, sed placerat urna sapien non sapien. Aliquam fermentum neque vitae nibh vulputate auctor. Vivamus ut ante posuere, pretium enim sit amet, porttitor elit. Pellentesque at purus risus. Sed consectetur justo vel sem consectetur, sit amet porttitor diam finibus. Ut dictum, justo eu tempus blandit, sem leo pharetra enim, in vulputate mauris leo nec enim. Sed nec pretium nisl, vitae ullamcorper tortor. Maecenas elementum nisi metus, eget porta urna suscipit id. Nullam mauris eros, scelerisque sed molestie et, eleifend sed sem. Maecenas vitae metus nec risus lacinia semper et at mauris. Praesent euismod nunc nec tellus consequat, maximus pellentesque nisi gravida. Ut ac ante vitae dolor blandit euismod. 14 | coreCompetencies: 15 | - Lorem ipsum dolor sit amet, consectetur adipiscing elit. 16 | - Proin sed nunc eu orci mattis pulvinar. 17 | - Vivamus fermentum odio non mollis sagittis. 18 | projects: 19 | - https://github.com/nukleros/operator-builder 20 | - https://github.com/JefeDavis/resume 21 | - https://github.com/JefeDavis/resume-operator 22 | skills: 23 | - family: Programming 24 | items: 25 | - Golang 26 | - family: Developer Tools 27 | items: 28 | - Git 29 | - family: Container Orchestration 30 | items: 31 | - Kubernetes 32 | -------------------------------------------------------------------------------- /layouts/partials/_projects.html: -------------------------------------------------------------------------------- 1 | {{- if .projects }} 2 |
3 |
4 |

5 | {{ i18n "projects" }} 6 |

7 |
8 |
45 | {{- end }} 46 | {{- end }} 47 |
48 | 49 | {{- end }} -------------------------------------------------------------------------------- /assets/scss/components/_cards.scss: -------------------------------------------------------------------------------- 1 | .cards { 2 | &::before, 3 | &::after{ 4 | box-sizing: border-box; 5 | } 6 | 7 | &__container{ 8 | width: 100%; 9 | padding-top: 1rem; 10 | margin-right: auto; 11 | } 12 | 13 | &__row{ 14 | display: flex; 15 | flex-wrap: wrap; 16 | margin-left: -1rem; 17 | margin-right: -1rem; 18 | padding-bottom: 1rem; 19 | } 20 | 21 | &__col{ 22 | flex: 0 0 33.3333%; 23 | max-width: 33.3333%; 24 | position: relative; 25 | padding-right: 0.5rem; 26 | padding-left: 0.5rem; 27 | } 28 | 29 | &__link{ 30 | text-decoration: none; 31 | } 32 | 33 | &__card{ 34 | margin-top: 0.5rem !important; 35 | margin-bottom: 0.5rem; 36 | height: 100%; 37 | position: relative; 38 | display: flex; 39 | flex-direction: column; 40 | min-width: 0; 41 | word-wrap: break-word; 42 | background-color: $color-light; 43 | background-clip: border-box; 44 | border: 1px solid $color-dark; 45 | border-radius: 0.50rem; 46 | transition: all 0.3s ease-out; 47 | 48 | @include shadow(0.4); 49 | 50 | &:hover { 51 | transform: translate3d(-0.5rem,-0.5rem,0); 52 | } 53 | } 54 | 55 | &__header{ 56 | background-color: transparent; 57 | height: fit-content; 58 | padding: 0.7rem; 59 | padding-bottom: 0rem; 60 | border-bottom: 0.0625rem solid $color-dark; 61 | object-fit: cover; 62 | overflow: hidden; 63 | display: flex !important; 64 | } 65 | 66 | &__title{ 67 | margin-bottom: 0.75rem; 68 | font-size: 1.15rem; 69 | color: $color-primary; 70 | font-weight: 1000; 71 | line-height: 1.5; 72 | margin-top: 0; 73 | } 74 | 75 | &__body{ 76 | padding-top: 0.2rem; 77 | padding-left: 0.7rem; 78 | padding: 1.25rem; 79 | text-align: left; 80 | flex: 1 1 auto; 81 | } 82 | 83 | &__text{ 84 | color: $color-dark; 85 | margin-top: 0; 86 | margin-bottom: 1rem; 87 | 88 | &:last-child { 89 | margin-bottom: 0; 90 | } 91 | } 92 | } -------------------------------------------------------------------------------- /layouts/partials/_experience.html: -------------------------------------------------------------------------------- 1 | {{- if .experience }} 2 |
3 |
4 |

5 | {{ i18n "experience" }} 6 |

7 |
8 |
9 |
10 | {{- range sort .experience "startDate" "desc" }} 11 | {{- if ne .employer nil }} 12 | {{- $experience := . }} 13 |
14 |
15 |

16 | {{ .employer | safeHTML }} 17 |

18 |

19 | {{ .location | safeHTML }} 20 |

21 |
22 | {{- range .positions }} 23 |
24 |
25 |

26 | {{ .title | safeHTML}} 27 |

28 |

29 | {{- $startDate := or .startDate $experience.startDate }} 30 | {{- $endDate := or .endDate $experience.endDate }} 31 | {{ time.Format "January 2006" $startDate | safeHTML }} - 32 | {{ if ne $endDate "Present" -}} 33 | {{- time.Format "January 2006" $endDate | safeHTML }} 34 | {{- else }} 35 | {{ $endDate }} 36 | {{- end }} 37 |

38 |
39 |
    40 | {{- range .highlights }} 41 |
  • {{ . | safeHTML }}
  • 42 | {{- end }} 43 |
44 |
45 | {{- end }} 46 |
47 | {{- end }} 48 | {{- end }} 49 |
50 |
51 |
52 | {{- end }} --------------------------------------------------------------------------------