Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/eddiewebb/hugo-resume.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEddie Webb <ollitech@gmail.com>2018-12-23 21:11:29 +0300
committerEddie Webb <ollitech@gmail.com>2020-01-07 20:25:30 +0300
commit3ce0eee12ba33ee7c52ce416772e4f0fed28e4a5 (patch)
tree45db3ad0c38df0fc17b93973f2aa7d62921d4920
parent8b1e6ad1adc8ccd71a3b3acffcd2b2eb73137c8b (diff)
fix issue with nav links not scrolling alwayscms-force
use hugo summary for blog fix navlink scrolling Fix indent of README.md Update README.md Fixed typos fixes issue #29 and fixes #33 by adding markdown update hugo versions update hugo versions update hugo versions update hugo versions Optional icon or link for Skills (#38) * Updated the Skills template to be more flexible so that one can optionally specify an icon or link for a skill. * Updated the sample skills to demonstrate new functionality of optionally specifying an icon or link for a skill. Fix blog post responsive width issue (#36) Adding a width to the child element of the blog post fix an issue with the page 'overflowing' from the parent container. Corrected the FavIcon path. (#37) replace deprecated .Hugo function with hugo. (#35) Adds rel-me to social links (#34) note contributors, add badge [skip ci] Many thanks to @awhitford @kaushalmodi @JulienRouse more explicit about blog folder (#46) cms:blog and settings working out kinks in config paths full config Update Settings “general” fix tests support creations Update Settings “general” Update Projects “_index” Update Projects “_index” Update Publications “_index” Update Contributions “_index” Create Contributions “cvxc” see if cms will render toml instead. Update deploy-triggers.md Delete cvxc.md added contributions and publications, corrected sample content. move CMS to exampleSite, not theme Upload “/exampleSite/static/img/schema-org.png” Update Contributions “schema-org” Update Contributions “shields-docker” update cnfig guide
-rw-r--r--.circleci/config.yml8
-rw-r--r--README.md16
-rw-r--r--exampleSite/config.toml75
-rw-r--r--exampleSite/content/blog/force-ssl.md59
-rw-r--r--exampleSite/content/projects/_index.md7
-rw-r--r--exampleSite/content/projects/contributions/_index.md21
-rw-r--r--exampleSite/content/projects/contributions/deploy-triggers.md23
-rw-r--r--exampleSite/content/projects/contributions/schema-org.md28
-rw-r--r--exampleSite/content/projects/contributions/shields-docker.md31
-rw-r--r--exampleSite/content/projects/creations/_index.md19
-rw-r--r--exampleSite/content/publications/_index.md16
-rw-r--r--exampleSite/data/education.json2
-rw-r--r--exampleSite/data/experience.json2
-rw-r--r--exampleSite/data/skills.json9
-rw-r--r--exampleSite/static/admin/README.md13
-rw-r--r--exampleSite/static/admin/cms.js8
-rw-r--r--exampleSite/static/admin/config.yml137
-rw-r--r--exampleSite/static/admin/index.html13
-rw-r--r--exampleSite/static/admin/templates/about.js97
-rw-r--r--exampleSite/static/img/schema-org.pngbin0 -> 56831 bytes
-rw-r--r--layouts/_default/baseof.html2
-rw-r--r--layouts/index.html8
-rw-r--r--layouts/partials/about.html2
-rw-r--r--layouts/partials/blogSummary.html2
-rw-r--r--layouts/partials/portfolio/education.html5
-rw-r--r--layouts/partials/portfolio/experience.html4
-rw-r--r--layouts/partials/portfolio/skills.html9
-rw-r--r--static/css/tweaks.css5
28 files changed, 525 insertions, 96 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index c9ae8c7..2d5d9eb 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -8,13 +8,15 @@ workflows:
jobs:
test:
docker:
- - image: felicianotech/docker-hugo:0.47.1
- working_directory: hugo-resume
+ - image: cibuilds/hugo:0.62
+ working_directory: /hugo-resume
steps:
- checkout
- run:
name: HUGO build for Test domain
command: |
+ pwd
+ cd /hugo-resume
hugo -v -s exampleSite --destination /tmp/public -b http://localhost --themesDir ../..
ls /tmp/public
if [ ! -f /tmp/public/index.html ];then
@@ -25,6 +27,7 @@ jobs:
name: Start Local Server
background: true
command: |
+ pwd
hugo server -v -s exampleSite -b http://localhost --themesDir ../..
- run:
name: Check Server
@@ -41,7 +44,6 @@ jobs:
curl -s -o /tmp/index http://localhost:1313
#just some keywords that confirm content was read into template..
grep 'Rochester' /tmp/index
- grep 'fab fa-stack-overflow' /tmp/index
grep 'Eddie Webb' /tmp/index
grep 'BOSH (Bosh Outer SHell)' /tmp/index
diff --git a/README.md b/README.md
index 28bc0b3..db277c6 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
# hugo Resume
+[![CircleCI](https://circleci.com/gh/eddiewebb/hugo-resume/tree/master.svg?style=svg)](https://circleci.com/gh/eddiewebb/hugo-resume/tree/master)
Created from [Start Bootstrap - Resume](https://startbootstrap.com/template-overviews/resume/).
@@ -55,7 +56,11 @@ Initially projects were in their own JSON file too, but I decided I wanted to al
Projects are added to one of 2 subfolders of `creations` or `contributions`. The difference indicates your role as originator or colaborator. Use `hugo add projects/TYPE/name-of-project.md` to leverage the proper archetype.
### Publications
-Similar to projects, creste them under `publications`. INclude any papers, speaking engagemnents, articles, etc.
+Similar to projects, create them under `publications`. Include any papers, speaking engagements, articles, etc.
+
+### Blog / Posts
+Similar to posts, create them under `blog`. Include any thoughts, musiings, etc.
+**This template does not support a `posts` folder**
### Template params
@@ -80,8 +85,7 @@ All personal information outside the above details is captured by params in [`co
showPublications = true
showExperience = true
showEducation = true
-
- showQr = true
+ showQr = true
# do you want to show git hash on page footer and link to repo? Add commit URl for repo here.
gitCommitPrefix = "https://github.com/YOURNAME/REPONAME/commit/"
@@ -120,6 +124,12 @@ All personal information outside the above details is captured by params in [`co
This project ports the Start Bootstrap Resume theme by David Miller to support hugo.
+### Contributions
+The following users have made notable contributions:
+- [Anthony Whitford](https://github.com/awhitford)
+- [Kaushal Modi](https://github.com/kaushalmodi)
+- [Julien Rouse](https://github.com/JulienRouse)
+
### Start Bootstrap Resume
Start Bootstrap is an open source library of free Bootstrap templates and themes. All of the free templates and themes on Start Bootstrap are released under the MIT license, which means you can use them for any purpose, even for commercial projects.
diff --git a/exampleSite/config.toml b/exampleSite/config.toml
index 9760ef6..a4e98b2 100644
--- a/exampleSite/config.toml
+++ b/exampleSite/config.toml
@@ -1,50 +1,55 @@
-baseURL = "https://example.com/"
-languageCode = "en-us"
title = "Eddie Webb"
+baseURL = "https://example.com/"
theme = "hugo-resume"
+languageCode = "en-us"
+PygmentsCodeFences = true
+PygmentsCodeFencesGuessSyntax = true
+PygmentsStyle = "monokai"
+enableGitInfo = false
[params]
- firstName = "Eddie"
- lastName = "Webb"
- address = "Rollinsford, NH"
- phone = "1-555-555-1234"
- contactNote = "Dev Tools Engineer"
- profileImage = "img/TechChat.png"
- email = "email@domain.com"
- description = "Software Platform Engineer with experience leveraging agile, DevOps, and CI/CD to manage large scale distributed platforms both on prem and in public cloud."
- favicon = "images/favicon.ico"
- # what sections
- showSkills = true
- showProjects = true
- showOpenSource = true
- showPublications = true
- showExperience = true
- showEducation = true
-
- showQr = true
+address = "Rollinsford, NH"
+email = "email@domain.com"
+favicon = "/favicon.ico"
+firstName = "Eddie"
+lastName = "Webb"
+phone = "1-555-555-1234"
+profileImage = "img/TechChat.png"
+showEducation = true
+showExperience = true
+showOpenSource = true
+showProjects = true
+showPublications = true
+showQr = true
+showSkills = true
+
+[params.google]
-[[params.handles]]
- name = "LinkedIn"
- link = "https://www.linkedin.com/in/edwardwebb/"
+[params.google.analytics]
+trackerID = "XX-123446-01"
+[[params.handles]]
+link = "https://www.linkedin.com/in/edwardwebb/"
+name = "LinkedIn"
[[params.handles]]
- name = "GitHub"
- link = "https://github.com/eddiewebb/"
+link = "https://github.com/eddiewebb/"
+name = "GitHub"
[[params.handles]]
- name = "Bitbucket"
- link = "https://bitbucket.org/eddiewebb/"
+link = "https://bitbucket.org/eddiewebb/"
+name = "Bitbucket"
[[params.handles]]
- name = "Stack Overflow"
- link = "https://stackoverflow.com/users/story/82880"
- icon = "stack-overflow"
+link = "https://stackoverflow.com/users/story/82880"
+name = "Stack Overflow"
[[params.handles]]
- name = "Keybase"
- link = "https://keybase.io/edwardawebb"
- icon = "keybase"
+link = "https://keybase.io/edwardawebb"
+name = "Keybase"
-[params.google.analytics]
- trackerID = "XX-123446-01"
+[outputs]
+home = ["HTML", "JSON"]
+
+[taxonomies]
+tag = "tags" \ No newline at end of file
diff --git a/exampleSite/content/blog/force-ssl.md b/exampleSite/content/blog/force-ssl.md
new file mode 100644
index 0000000..4697003
--- /dev/null
+++ b/exampleSite/content/blog/force-ssl.md
@@ -0,0 +1,59 @@
+---
+title: 'Forcing Visits to use SSL'
+date: Thu, 01 Jan 2009 14:09:10 +0000
+draft: false
+tags: [apache, apache, redirect, rewrite, ssl, web development]
+---
+
+Intro
+-----
+
+Doesn't matter whether it's a CakePHP app for a client, your own personal CMS, or any other web based application. **If your passing around passwords or other sensitive info you should really implement SSL.** SSL provides 2 main perks to your visitors.
+
+* First it encrypts all communication that flies across the web. This prevents curious or devious billies from getting your secrets.
+* Secondly it ensures to the user that your server is in fact who it claims, and not a nasty 'man in the middle" attack.
+* Finally it gives your site that touch of class.... which of course a classy person like yourself relies on.
+
+Once you implement SSL certificates on your server you'll want to **require secure connections** using Apache's rewrite module. Now I won't dwell on the creation and signing of certificates, its already well documented.  If your just starting out though,heres a few links I recommend;
+
+* [Creating self-signed certificates](http://www.tc.umn.edu/~brams006/selfsign.html "Creating and Signing your own SSL Certificate") (free, but should only be used internally or for testing, users will; see an 'Untrusted" warning)
+* [Requesting a CA Signed certificate](http://www.google.com/url?sa=t&source=web&ct=res&cd=10&url=http%3A%2F%2Fwww.lsu.edu%2Fpki%2FSSL_Certificate_Apache.pdf&ei=Z8FcSbDRGaCY8gTdk7GHDQ&usg=AFQjCNELddGd6jW1_Dv1X-CaocEVa4rV2A&sig2=FQMNaM_RlhngJW3MSYiQzw "Generating a Certificate Signing Request") (not free, but the final certificate is trusted and seamless for users)
+
+The second link uses the schools internal CA, you will need to pay a public CA like Entrust or Verisign. **All of this information is aimed at 'nix or solaris servers running apache**. Why? cause a production windows server is laughable :-p
+
+Now that you have a certificate, whats next?
+--------------------------------------------
+
+So there you are you have a shiny new Certificate and Server key, how do you force visitors to your apache driven site to use the SSL? You copied the certificates into the appropite locations right? And you have made the needed changes in httpd.conf right? So now when you view https://example.com you see a 'trusted' warning or your site right? If No to any of these than [this article](http://www.sitepoint.com/article/securing-apache-2-server-ssl/ "Securing Apcche Server with SSL") does a pretty good job of outlining those steps.
+
+The SSL Works, How do I force connections to use it?
+----------------------------------------------------
+
+First you need to decide if you want to force every page on your site to use SSL, or only a particular sub-domain, or maybe just your admin directory.  Since the overhead is minimal there is no harm is forcing the entire domain to leverage SSL, but if it is a self-signed certificate for your personal use than you'll most certainly want to restrict its use to your own areas. This prevents users from seeing that nasty warning "This server is not trusted" You'll know if your using SSL because the url prefix changes from http to https (s for secure).
+
+### Forcing entire domain to use SSL
+
+**You want any visit, any where to use ssl**. This probably the simplest solution. Create or append to your htaccess file in the top directory of your server. Some people use a port check (80 is typically http, while 443 is https) but if you have alernate configs or the user just adds :8080 to the end of the url this method is useless. Instead check whether the https environmental variable is set, if not then redirect.
+
+```
+RewriteCond %{HTTPS} !=on
+RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 \[R,L\]
+```
+
+### Forcing sub-domains to use SSL
+
+Maybe **you only want mysecretarea.example.com to use SSL**, that's easy enough. Its the same premise as above, but you move the htaccess file into the directory that corresponds to the subdomain. Also change the second line like below;
+
+```
+RewriteCond %{HTTPS} !=on
+RewriteRule ^(.*)$ https://mysecretarea.%{SERVER_NAME}$1 \[R,L\]
+```
+
+### Forcing a directory to use SSL
+
+This method cn get a little hairier if your using aliases or redirects on top of this one. You'll need to consider what order the commands are read. The basic principle is like so.  **You want all visits to example.com/admin to use ssl.** Create a htaccess file in the parent directory.  Again will check for the https variable, but this time we also check for the sub-directory to be in the path.
+
+```
+RewriteCond %{HTTPS} !=on
+RewriteRule ^/admin/(.*)$ https://%{SERVER_NAME}/admin/$1 \[R,L\]
+```
diff --git a/exampleSite/content/projects/_index.md b/exampleSite/content/projects/_index.md
index 9f18b31..c240a82 100644
--- a/exampleSite/content/projects/_index.md
+++ b/exampleSite/content/projects/_index.md
@@ -3,4 +3,11 @@ title: "Projects"
sitemap:
priority : 0.9
---
+<!--
+
+This page represents the landing page for "projects" section. It is also shown under the homepage header for "projects". It should be therefore relatively short and sweet.
+
+IN the dfault theme, "projects" is divided among "Creations" you authored and "contributions" made to others projects.
+
+-->
<p>This section contains projects <a href="/projects/creations">created</a> and <a href="/projects/contributions">contributed</a> to by Eddie. Everything listed is an open source effort, the distinction is only my role as owner or contributor.</p>
diff --git a/exampleSite/content/projects/contributions/_index.md b/exampleSite/content/projects/contributions/_index.md
index b1fbbc1..c319b5d 100644
--- a/exampleSite/content/projects/contributions/_index.md
+++ b/exampleSite/content/projects/contributions/_index.md
@@ -1,7 +1,22 @@
---
-title: "Open Source Contributions"
-sitemap:
- priority : 0.5
+title: Open Source Contributions
+date: 2020-01-07T16:49:15.046Z
+link: NA
+image: /img/marketplace-summary.png
+description: NA
+tags:
+ - ''
weight: 20
+sitemap:
+ priority: 0.5
+ weight: 0.5
---
+<!--
+
+This page represents the landing page for "contributions" section. It is also shown under the homepage header for "contributions". It should be therefore relatively short and sweet.
+
+-->
+
+
+
<p>A collection of efforts to which I contributed, but did not create. Contributing back to Open Source projects is a strong passion of mine, and requires a considerate approach to learn norms, standards and approach for each community for a successful merge!</p>
diff --git a/exampleSite/content/projects/contributions/deploy-triggers.md b/exampleSite/content/projects/contributions/deploy-triggers.md
index 4b5d4f9..65fd8c6 100644
--- a/exampleSite/content/projects/contributions/deploy-triggers.md
+++ b/exampleSite/content/projects/contributions/deploy-triggers.md
@@ -1,13 +1,14 @@
-{
- "title":"Atlassian Deployment Triggers",
- "link":"https://bitbucket.org/atlassianlabs/bamboo-after-deployment-trigger/pull-requests/2/fixes-issue-2-eliminate/diff",
- "image":"/img/deploysonly.gif",
- "description":"Uses Async call to lucene index for super fast autocompletion to address performance issue loading config.",
- "featured":true,
- "tags":["Java","jQuery","REST APIs","Bamboo","JSON"],
- "fact":"Reduce page load time from minutes to instantaneous.",
- "weight":"100",
- "sitemap": {"priority" : "0.8"}
-}
+---
+title: "Atlassian Deployment Triggers"
+link: "https://bitbucket.org/atlassianlabs/bamboo-after-deployment-trigger/pull-requests/2/fixes-issue-2-eliminate/diff"
+image: "/img/deploysonly.gif"
+description: "Uses Async call to lucene index for super fast autocompletion to address performance issue loading config."
+featured: true
+tags: ["Java","jQuery","REST APIs","Bamboo","JSON"]
+fact: "Reduce page load time from minutes to instantaneous."
+weight: 100
+sitemap:
+ priority : 0.8
+---
Addressed pretty significant page load performance issue founde in larger deployments. Eliminates uses of intensive backend query, replacing it with an asynchronous API call against a lucene index. This change reduces page load from from 2+ minutes to nearly instant, with an incredibly responsive UI.
diff --git a/exampleSite/content/projects/contributions/schema-org.md b/exampleSite/content/projects/contributions/schema-org.md
index adc16a7..62a6e32 100644
--- a/exampleSite/content/projects/contributions/schema-org.md
+++ b/exampleSite/content/projects/contributions/schema-org.md
@@ -1,12 +1,20 @@
-{
- "title":"Schema.org Structured Data documentation fixes",
- "link":"https://github.com/schemaorg/schemaorg/pull/1120",
- "image":"",
- "description":"Not all pull requests are glorious code, documentation is really important too! This commit fixed some invalid JSON found in some example specs.",
- "tags":["JSON"],
- "fact":"Schema.org provides a common specification for Structured Data on the internet.",
- "weight":"999",
- "sitemap": {"priority" : "0.8"}
-}
+---
+title: Schema.org Structured Data documentation fixes
+date: 2020-01-07T17:08:21.433Z
+link: 'https://github.com/schemaorg/schemaorg/pull/1120'
+image: /img/schema-org.png
+description: >-
+ Not all pull requests are glorious code, documentation is really important
+ too! This commit fixed some invalid JSON found in some example specs.
+tags:
+ - JSON
+fact: >-
+ Schema.org provides a common specification for Structured Data on the
+ internet.
+weight: 999
+sitemap:
+ priority: 0.8
+ weight: 0.1
+---
While adding *Structured Data* to a client's website I found some example JSON that was invalid. Simple contribution to cleanup the user documentation providing syntactically valid JSON documents.
diff --git a/exampleSite/content/projects/contributions/shields-docker.md b/exampleSite/content/projects/contributions/shields-docker.md
index 3481e56..b3c5287 100644
--- a/exampleSite/content/projects/contributions/shields-docker.md
+++ b/exampleSite/content/projects/contributions/shields-docker.md
@@ -1,13 +1,22 @@
-{
- "title":"Added Docker Build Status Badge to shields.io",
- "link":"https://github.com/badges/shields/pull/856",
- "image":"https://img.shields.io/docker/build/eddiewebb/bitbucket-pipelines-marketplace.svg?style=plastic",
- "description":"Added a shield for Docker Hub builds indicating state of last build",
- "tags":["Docker","Rest APIs","JavaScript","node.js","JSON"],
- "fact":"",
- "featured":true,
- "weight":"500",
- "sitemap": {"priority" : "0.8"}
-}
+---
+title: Added Docker Build Status Badge to shields.io
+date: 2020-01-07T17:09:26.037Z
+featured: true
+link: 'https://github.com/badges/shields/pull/856'
+image: >-
+ https://img.shields.io/docker/build/eddiewebb/bitbucket-pipelines-marketplace.svg?style=plastic
+description: Added a shield for Docker Hub builds indicating state of last build
+tags:
+ - Docker
+ - Rest APIs
+ - JavaScript
+ - node.js
+ - JSON
+fact: ''
+weight: 500
+sitemap:
+ priority: 0.8
+ weight: 0.4
+---
Shields.io is a massive library of badges that can be inserted into project README's or websites displaying various statuses (code coverage, health, version, etc).  Support for docker was missing the current build health, and was a pretty trivial addition.
diff --git a/exampleSite/content/projects/creations/_index.md b/exampleSite/content/projects/creations/_index.md
index 839c5d9..9eedfbc 100644
--- a/exampleSite/content/projects/creations/_index.md
+++ b/exampleSite/content/projects/creations/_index.md
@@ -1,7 +1,20 @@
---
-title: "Creations"
-sitemap:
- priority : 0.5
+title: Creations
+date: 2020-01-07T15:00:28.528Z
+link: Not applicable
+image: /img/marketplace-summary.png
+description: Not applicable
weight: 10
+sitemap:
+ priority: 0.5
+ weight: 0.8
---
+<!--
+
+This page represents the landing page for "creations" section. It is also shown under the homepage header for "creations". It should be therefore relatively short and sweet.
+
+\-->
+
+
+
<p>A collection of projects authored by Eddie, and likely shared out with the community as an open source project.</p>
diff --git a/exampleSite/content/publications/_index.md b/exampleSite/content/publications/_index.md
index 515c26a..1869d96 100644
--- a/exampleSite/content/publications/_index.md
+++ b/exampleSite/content/publications/_index.md
@@ -1,6 +1,18 @@
---
-title: "Publications"
+title: Publications
+date: 2020-01-07T16:47:30.077Z
+link: NA
+image: /img/organicdevops.png
+description: NA
+weight: 10
sitemap:
- priority : 0.6
+ priority: 0.6
+ weight: 0.5
---
+<!--
+
+This page represents the landing page for "publications" section. It is also shown under the homepage header for "publications". It should be therefore relatively short and sweet.
+
+\-->
+
A collection of articles, presentations or talks, most likely on Culture and DevOps, because let's admit it, they are one in the same ;)
diff --git a/exampleSite/data/education.json b/exampleSite/data/education.json
index 175deb2..5e9cc59 100644
--- a/exampleSite/data/education.json
+++ b/exampleSite/data/education.json
@@ -1,6 +1,6 @@
[
{
- "school":"Rochester Institute of Technology",
+ "school":"[Rochester Institute of Technology](https://rit.edu)",
"degree":"Bachelor of Science",
"major":"Management Information Systems",
"notes":"Beta Gamma Signma, High Honors",
diff --git a/exampleSite/data/experience.json b/exampleSite/data/experience.json
index 7b1cfc6..1ccc96e 100644
--- a/exampleSite/data/experience.json
+++ b/exampleSite/data/experience.json
@@ -2,7 +2,7 @@
{
"role":"Boss man",
"company":"Current Company LTD",
- "summary":"Led in development of fast paced software teams.",
+ "summary":"Led in development of fast paced software teams.\n- list\n- of\n- things",
"range":"February 2016 - Present"
},
{
diff --git a/exampleSite/data/skills.json b/exampleSite/data/skills.json
index e1efa3b..94bff8a 100644
--- a/exampleSite/data/skills.json
+++ b/exampleSite/data/skills.json
@@ -11,6 +11,15 @@
"skills":[ "Atlassian","Bamboo","Bitbucket","NGINX","MySQL","Wordpress"]
},
{
+ "grouping":"Data Management",
+ "skills":[
+ {"name":"Microsoft SQL Server","icon":"msql_server"},
+ {"name":"Oracle","icon":"database"},
+ "MongoDB",
+ {"name":"Apache Spark"}
+ ]
+ },
+ {
"grouping":"Containers & Cloud",
"skills":[
{"name":"BOSH","link":"https://bosh.io"},
diff --git a/exampleSite/static/admin/README.md b/exampleSite/static/admin/README.md
new file mode 100644
index 0000000..b0097dc
--- /dev/null
+++ b/exampleSite/static/admin/README.md
@@ -0,0 +1,13 @@
+# Netlify CMS Support
+
+This folder exposes an `/admin` page in your website that allows a CMS editor experience.
+
+All changes are pushed to the GitHub repository (right to master, or via PR is configurable)
+
+## Using on your site
+
+1) Copy the full admin folder (this folder) from exampleSite within theme to the 'static' folder of you hugo site.
+`cp -a PROJECT_DIRECTORY/themes/hugo-resume/admin PROJECT_DIRECTORY/static`
+2) Edit `config.yml` (which includes hints) to reflect any changes you made to content structure, and also
+ - Github Repository Path
+ - Paths to images and content folders \ No newline at end of file
diff --git a/exampleSite/static/admin/cms.js b/exampleSite/static/admin/cms.js
new file mode 100644
index 0000000..d125425
--- /dev/null
+++ b/exampleSite/static/admin/cms.js
@@ -0,0 +1,8 @@
+
+import AboutPreview from "./templates/about.js";
+
+CMS.registerPreviewStyle("/css/resume.css");
+CMS.registerPreviewStyle("/css/tweaks.css");
+
+CMS.registerPreviewTemplate("about", AboutPreview);
+CMS.init();
diff --git a/exampleSite/static/admin/config.yml b/exampleSite/static/admin/config.yml
new file mode 100644
index 0000000..2ce56c7
--- /dev/null
+++ b/exampleSite/static/admin/config.yml
@@ -0,0 +1,137 @@
+#
+#. This config file adds support for Netlify CMS, exposed at /admin on the running site.
+# In order to use this on your site,
+#. 1) replace instances of "exampleSite/......" with the appropriate paths, relative from repository root.
+#. 2) replace repo path in `backend` settings, and set branch to master.
+# 3) Optionally enable the [editor workflow](https://www.netlifycms.org/docs/configuration-options/#publish-mode) which uses PRs for content changes
+# 4) Optionally enable [open authoring](https://www.netlifycms.org/docs/open-authoring/) for community sites, which requires #3
+#
+#
+
+
+
+backend:
+ name: github
+ repo: eddiewebb/hugo-resume
+ branch: cms
+
+
+media_folder: "exampleSite/static/img" # Folder where user uploaded files should go
+public_folder: "img"
+
+collections: # A list of collections the CMS should be able to edit
+ - name: "Blog" # Used in routes, ie.: /admin/collections/:slug/edit
+ label: "Blog" # Used in the UI, ie.: "New Post"
+ folder: "exampleSite/content/blog" # The path to the folder where the documents are stored
+ create: true # Allow users to create new documents in this collection
+ fields: # The fields each document in this collection have
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Publish Date", name: "date", widget: "datetime"}
+ - {label: "Tags", name: "tags", widget: "list", required: false}
+ - {label: "Body", name: "body", widget: "markdown"}
+
+ - name: "Projects" # Used in routes, ie.: /admin/collections/:slug/edit
+ label: "Projects" # Used in the UI, ie.: "New Post"
+ folder: "exampleSite/content/projects/creations" # The path to the folder where the documents are stored
+ create: true # Allow users to create new documents in this collection
+ fields: # The fields each document in this collection have
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Publish Date", name: "date", widget: "datetime"}
+ - {label: "featured", name: "featured", widget: "boolean", required: false}
+ - {label: "link to project repo or site", name: "link", widget: "string"}
+ - {label: "Project Image", name: image, widget: 'image' }
+ - {label: "Brief description", name: "description", widget: "string"}
+ - {label: "Tags", name: "tags", widget: "list", required: false}
+ - {label: "Fun Fact or Stat", name: "fact", widget: "string", default: "used by 20% of Fortune 500 companies!", required: false}
+ - {label: "weight (lower get more visibility)", name: "weight", widget: "number", valueType: float, step: 10, min: 0, max: 1000}
+ - {label: "Sitemap", name: "sitemap", widget: "object", field: {label: weight, name: weight, widget: "number", valueType: float, step: 0.1, min: 0.0, max: 1.0}}
+ - {label: "Body", name: "body", widget: "markdown"}
+
+ - name: "Contributions" # Used in routes, ie.: /admin/collections/:slug/edit
+ label: "Contributions" # Used in the UI, ie.: "New Post"
+ folder: "exampleSite/content/projects/contributions" # The path to the folder where the documents are stored
+ create: true # Allow users to create new documents in this collection
+ fields: # The fields each document in this collection have
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Publish Date", name: "date", widget: "datetime"}
+ - {label: "featured", name: "featured", widget: "boolean", required: false}
+ - {label: "link to project repo or site", name: "link", widget: "string"}
+ - {label: "Project Image", name: image, widget: 'image' }
+ - {label: "Brief description", name: "description", widget: "string"}
+ - {label: "Tags", name: "tags", widget: "list", required: false}
+ - {label: "Fun Fact or Stat", name: "fact", widget: "string", default: "used by 20% of Fortune 500 companies!", required: false}
+ - {label: "weight (lower get more visibility)", name: "weight", widget: "number", valueType: float, step: 10, min: 0, max: 1000}
+ - {label: "Sitemap", name: "sitemap", widget: "object", field: {label: weight, name: weight, widget: "number", valueType: float, step: 0.1, min: 0.0, max: 1.0}}
+ - {label: "Body", name: "body", widget: "markdown"}
+
+ - name: "Publications" # Used in routes, ie.: /admin/collections/:slug/edit
+ label: "Publications" # Used in the UI, ie.: "New Post"
+ folder: "exampleSite/content/publications" # The path to the folder where the documents are stored
+ create: true # Allow users to create new documents in this collection
+ fields: # The fields each document in this collection have
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Publish Date", name: "date", widget: "datetime"}
+ - {label: "featured", name: "featured", widget: "boolean", required: false}
+ - {label: "link to project repo or site", name: "link", widget: "string"}
+ - {label: "Project Image", name: image, widget: 'image' }
+ - {label: "Brief description", name: "description", widget: "string"}
+ - {label: "Tags", name: "tags", widget: "list", required: false}
+ - {label: "Fun Fact or Stat", name: "fact", widget: "string", default: "used by 20% of Fortune 500 companies!", required: false}
+ - {label: "weight (lower get more visibility)", name: "weight", widget: "number", valueType: float, step: 10, min: 0, max: 1000}
+ - {label: "Sitemap", name: "sitemap", widget: "object", field: {label: weight, name: weight, widget: "number", valueType: float, step: 0.1, min: 0.0, max: 1.0}}
+ - {label: "Body", name: "body", widget: "markdown"}
+
+ - name: 'settings'
+ label: 'Settings'
+ delete: false # Prevent users from deleting documents in this collection
+ editor:
+ preview: false
+ files:
+ - name: 'general'
+ label: 'Site Settings'
+ file: 'exampleSite/config.toml'
+ extension: toml
+ description: 'General Site Settings'
+ fields:
+ - { label: 'Global title', name: 'title', widget: 'string' }
+ - { label: 'Site Url', name: 'baseURL', widget: 'string' }
+ - { label: 'Theme', name: 'theme', widget: 'hidden', default: "hugo-resume" }
+ - { label: 'Language Code', name: 'languageCode', widget: 'hidden', default: "en-us" }
+ - { label: 'PygmentCodeFences', name: 'PygmentsCodeFences', widget: 'boolean', required: false }
+ - { label: 'PygmentCodeFencesGuessSyntax', name: 'PygmentsCodeFencesGuessSyntax', widget: 'boolean', required: false }
+ - { label: 'PygmentCodeFencesGuessSyntax', name: 'PygmentsStyle', widget: 'string' }
+ - label: 'Params'
+ name: 'params'
+ widget: 'object'
+ fields:
+ - { label: 'First Name', name: 'firstName', widget: 'string' }
+ - { label: 'Last Name', name: 'lastName', widget: 'string' }
+ - { label: address, name: address, widget: 'string' }
+ - { label: profileImage, name: profileImage, widget: 'image' }
+ - { label: 'phone', name: 'phone', widget: 'string' }
+ - { label: 'email', name: 'email', widget: 'string' }
+ - label: 'Social Handles'
+ name: 'handles'
+ widget: 'list'
+ fields:
+ - { label: 'Name', name: 'name', widget: 'string' }
+ - { label: 'Link', name: 'link', widget: 'string' }
+
+ - { label: 'showSkills', name: 'showSkills', widget: 'boolean', required: false }
+ - { label: 'showProjects', name: 'showProjects', widget: 'boolean', required: false }
+ - { label: 'showOpenSource', name: 'showOpenSource', widget: 'boolean', required: false }
+ - { label: 'showPublications', name: 'showPublications', widget: 'boolean', required: false }
+ - { label: 'showExperience', name: 'showExperience', widget: 'boolean', required: false }
+ - { label: 'showEducation', name: 'showEducation', widget: 'boolean', required: false }
+ - { label: 'showQr', name: 'showQr', widget: 'boolean', required: false }
+ - { label: 'favicon', name: 'favicon', widget: 'image' }
+ - label: 'Google'
+ name: 'google'
+ widget: 'object'
+ fields:
+ - { label: 'analytics', name: 'analytics', widget: 'object',fields: [{ label: 'Tracker ID', name: 'trackerID', widget: 'string' }] }
+
+ - { label: 'Show Git Commit INfo', name: 'enableGitInfo', widget: 'boolean', required: false }
+ - { label: 'outputs', name: 'outputs', widget: 'object', field:{name: 'home', label: 'home' , widget: list, default: ['HTML','JSON'] }}
+ - { label: 'taxonomies', name: 'taxonomies', widget: 'hidden', default:{name: 'home', label: 'home' , widget: string, default: ['tags'] }}
+ \ No newline at end of file
diff --git a/exampleSite/static/admin/index.html b/exampleSite/static/admin/index.html
new file mode 100644
index 0000000..06c02c9
--- /dev/null
+++ b/exampleSite/static/admin/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Content Manager</title>
+</head>
+<body>
+ <!-- Include the script that builds the page and powers Netlify CMS -->
+ <script src="https://unpkg.com/netlify-cms@^2.0.0/dist/netlify-cms.js"></script>
+ <script type="module" src="/admin/cms.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/exampleSite/static/admin/templates/about.js b/exampleSite/static/admin/templates/about.js
new file mode 100644
index 0000000..2177b44
--- /dev/null
+++ b/exampleSite/static/admin/templates/about.js
@@ -0,0 +1,97 @@
+
+
+var AboutPreview = createClass({
+ // Object fields are simpler than lists - instead of `widgetsFor` returning
+ // an array of objects, it returns a single object. Accessing the shape of
+ // that object is the same as the shape of objects returned for list fields:
+ //
+ // {
+ // data: { front_limit: 0, author: 'Chris' },
+ // widgets: { front_limit: (<WidgetComponent>), author: (WidgetComponent>)}
+ // }
+ render: function() {
+ var entry = this.props.entry;
+ var intro = entry.getIn(['data', 'intro']);
+ var about = entry.getIn(['data', 'about']);
+ var classes = entry.getIn(['data', 'classes']);
+ var contact = entry.getIn(['data', 'contact']);
+ var bg = this.props.widgetsFor('intro').getIn(['widgets', 'background']).props.value;
+
+ return h('div',{},
+ // Intro Section
+ h('header', { "class":"masthead",
+ "style":{
+ backgroundImage: "url(" + bg + ")",
+ backgroundPosition: 'center',
+ backgroundSize: 'cover',
+ backgroundRepeat: 'no-repeat'
+ }
+ },
+ h('div',{'class':'intro-body'},
+ h('div',{'class':'container'},
+ h('div',{'class':'row'},
+ h('div',{'class':'col-lg-8 mx-auto'},
+ h('div',{'class':'improve-contrast-box'},
+ h('h1',{'class':'brand-heading'},
+ this.props.widgetsFor('intro').getIn(['widgets', 'header'])
+ ),
+ h('p',{'class':'intro-text'},
+ this.props.widgetsFor('intro').getIn(['widgets', 'text'])
+ )
+ )
+ )
+ )
+ )
+ )
+
+
+ ) ,
+ // About Section
+ h('section',{"id":"about","class":"content-section text-center"},
+ h('div',{"class":"container"},
+ h('div',{"class":"row"},
+ h('div',{"class":"col-lg-8 mx-auto"},
+ h('h2',{},
+ this.props.widgetsFor('about').getIn(['widgets', 'header'])
+ ),
+ h('p',{},
+ this.props.widgetsFor('about').getIn(['widgets', 'text'])
+ )
+ )
+ )
+ )
+ ),
+ // Contact Section
+ h('section',{"id":"contact","class":"content-section text-center"},
+ h('div',{"class":"container"},
+ h('div',{"class":"row"},
+ h('div',{"class":"col-lg-8 mx-auto"},
+ h('h2',{},
+ this.props.widgetsFor('contact').getIn(['widgets', 'header'])
+ ),
+ h('p',{},
+ this.props.widgetsFor('contact').getIn(['widgets', 'text'])
+ )
+ )
+ )
+ )
+ )
+
+ )
+
+
+
+ return h('div', {},
+ h('h1', {}, title),
+ h('dl', {},
+ h('dt', {}, 'Posts on Frontpage'),
+ h('dd', {}, this.props.widgetsFor('posts').getIn(['widgets', 'front_limit']) || 0),
+
+ h('dt', {}, 'Default Author'),
+ h('dd', {}, this.props.widgetsFor('posts').getIn(['data', 'author']) || 'None'),
+ )
+ );
+ }
+});
+
+export default AboutPreview; \ No newline at end of file
diff --git a/exampleSite/static/img/schema-org.png b/exampleSite/static/img/schema-org.png
new file mode 100644
index 0000000..3868dde
--- /dev/null
+++ b/exampleSite/static/img/schema-org.png
Binary files differ
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index df1287c..78f88b8 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -20,7 +20,7 @@
<!-- Custom styles for this template -->
<link href="{{ "css/resume.css" | absURL }}" rel="stylesheet">
<link href="{{ "css/tweaks.css" | absURL }}" rel="stylesheet">
- {{ .Hugo.Generator }}
+ {{ hugo.Generator }}
{{ block "headfiles" . }}
<!-- pl;aceholder -->
{{ end }}
diff --git a/layouts/index.html b/layouts/index.html
index 487f05f..c53cc70 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -5,19 +5,19 @@
{{ end }}
{{ if .Site.Params.showProjects }}
{{ with .Site.GetPage "section" "projects/creations" }}
- {{ .Scratch.Add "sectionId" "projects" }}
+ {{ .Scratch.Set "sectionId" "projects" }}
{{ partial "sectionSummary" . }}
{{ end }}
{{ end }}
{{ if .Site.Params.showOpenSource }}
{{ with .Site.GetPage "section" "projects/contributions" }}
- {{ .Scratch.Add "sectionId" "open" }}
+ {{ .Scratch.Set "sectionId" "open" }}
{{ partial "sectionSummary" . }}
{{ end }}
{{ end }}
{{ if .Site.Params.showPublications }}
{{ with .Site.GetPage "section" "publications" }}
- {{ .Scratch.Add "sectionId" "publications" }}
+ {{ .Scratch.Set "sectionId" "publications" }}
{{ partial "sectionSummary" . }}
{{ end }}
{{ end }}
@@ -29,7 +29,7 @@
{{ end }}
{{ if .Site.Params.showBlog }}
{{ with .Site.GetPage "section" "blog" }}
- {{ .Scratch.Add "sectionId" "blog" }}
+ {{ .Scratch.Set "sectionId" "blog" }}
{{ partial "sectionSummary" . }}
{{ end }}
{{ end }}
diff --git a/layouts/partials/about.html b/layouts/partials/about.html
index c10877f..8f6a13e 100644
--- a/layouts/partials/about.html
+++ b/layouts/partials/about.html
@@ -23,7 +23,7 @@
<ul class="list-inline list-social-icons mb-0">
{{ range .Site.Params.handles }}
<li class="list-inline-item">
- <a href="{{ .link }}" data-toggle="tooltip" title="{{ .name }}" data-offset="0 10">
+ <a href="{{ .link }}" data-toggle="tooltip" title="{{ .name }}" data-offset="0 10" rel="me">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fab {{ if .icon}}fa-{{ .icon }}{{ else }}fa-{{ lower .name }}{{ end }} fa-stack-1x fa-inverse"></i>
diff --git a/layouts/partials/blogSummary.html b/layouts/partials/blogSummary.html
index 3e1661b..55599ca 100644
--- a/layouts/partials/blogSummary.html
+++ b/layouts/partials/blogSummary.html
@@ -2,7 +2,7 @@
<div class="resume-item d-flex flex-column flex-md-row mb-5">
<div class="publication-content mr-auto">
<h3 class="mb-0"><a href="{{ .Permalink }}">{{ .Params.title }}</a></h3>
- <div>{{ .Params.description | safeHTML }}</div>
+ <div>{{ .Summary | safeHTML }}</div>
<p>{{ partial "techtags" . }}</p>
</div>
<div class="resume-date text-md-right">
diff --git a/layouts/partials/portfolio/education.html b/layouts/partials/portfolio/education.html
index 63a2434..abea676 100644
--- a/layouts/partials/portfolio/education.html
+++ b/layouts/partials/portfolio/education.html
@@ -4,9 +4,10 @@
{{ range .Site.Data.education }}
<div class="resume-item d-flex flex-column flex-md-row mb-5">
<div class="resume-content mr-auto">
- <h3 class="mb-0">{{ .school }}</h3>
+ <h3 class="mb-0">{{ .school | markdownify }}</h3>
<div class="subheading mb-3">{{ .degree }}</div>
- <div>{{ .major }}</div>
+ <div>{{ .major | markdownify }}</div>
+ <p>{{ .notes | markdownify }}
</div>
<div class="resume-date text-md-right">
<span class="text-primary">{{ .range }}</span>
diff --git a/layouts/partials/portfolio/experience.html b/layouts/partials/portfolio/experience.html
index 87e6c5a..4f46e00 100644
--- a/layouts/partials/portfolio/experience.html
+++ b/layouts/partials/portfolio/experience.html
@@ -5,8 +5,8 @@
<div class="resume-item d-flex flex-column flex-md-row mb-5">
<div class="resume-content mr-auto">
<h3 class="mb-0">{{ .role }}</h3>
- <div class="subheading mb-3">{{ .company }}</div>
- <p>{{ .summary }}</p>
+ <div class="subheading mb-3">{{ .company | markdownify }}</div>
+ <p>{{ .summary | markdownify }}</p>
</div>
<div class="resume-date text-md-right">
<span class="text-primary">{{ .range }}</span>
diff --git a/layouts/partials/portfolio/skills.html b/layouts/partials/portfolio/skills.html
index 3883c61..d406fb2 100644
--- a/layouts/partials/portfolio/skills.html
+++ b/layouts/partials/portfolio/skills.html
@@ -6,9 +6,14 @@
<ul>
{{ range .skills }}
{{ if isset . "name" }}
+ {{ $devicon := cond (in $.Site.Data.devicons (lower .icon)) (lower .icon) (cond (in $.Site.Data.devicons (lower .name)) (lower .name) "terminal_badge") }}
<li class="list-inline-item">
- <i class="devicons devicons-{{ cond (in $.Site.Data.devicons (lower .name)) (lower .name) "terminal_badge" }}"></i>
- <a href="{{.link}}">{{ .name }}</a>
+ <i class="devicons devicons-{{ $devicon }}"></i>
+ {{if isset . "link"}}
+ <a href="{{.link}}">{{ .name }}</a>
+ {{ else }}
+ {{ .name }}
+ {{ end }}
</li>
{{ else }}
<li class="list-inline-item">
diff --git a/static/css/tweaks.css b/static/css/tweaks.css
index 76cf2c5..692566a 100644
--- a/static/css/tweaks.css
+++ b/static/css/tweaks.css
@@ -99,4 +99,9 @@ div.skills-heading{
.resume-section blockquote {
border-left: 4px solid #BD5D38;
padding-left: 1em;
+}
+
+/* Fix responsive width for blog posts */
+.my-auto {
+ width: 100%
} \ No newline at end of file