diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..24a93de
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,11 @@
+# Editor configuration, see https://editorconfig.org
+
+# Top-most EditorConfig file
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
\ No newline at end of file
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..f37220e
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,7 @@
+version: 2
+updates:
+ - package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: monthly
+
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..c5f3ca5
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,22 @@
+name: Continuous integration
+
+on:
+ push:
+
+jobs:
+ build:
+ name: Build site
+ runs-on: ubuntu-latest
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v4
+
+ - name: Setup Hugo
+ uses: peaceiris/actions-hugo@v3.0.0
+ with:
+ hugo-version: latest
+
+ - name: Build
+ working-directory: src
+ run: hugo --minify --logLevel info
+
diff --git a/.gitignore b/.gitignore
index d70ebaa..b854ddf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
-public
\ No newline at end of file
+# Generated files by hugo
+/public/
+/.hugo_build.lock
diff --git a/README.md b/README.md
index e4e2c5e..4e25d12 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,3 @@
-This is the personal web site https://andreinicholson.com/
+This is the personal website https://andreinicholson.com/
Generated with [Hugo](https://gohugo.io/).
-
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644
index 0000000..c6f3fce
--- /dev/null
+++ b/archetypes/default.md
@@ -0,0 +1,5 @@
++++
+title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+date = {{ .Date }}
+draft = true
++++
diff --git a/assets/images/flickr-logo.svg b/assets/images/flickr-logo.svg
new file mode 100644
index 0000000..ad8ae77
--- /dev/null
+++ b/assets/images/flickr-logo.svg
@@ -0,0 +1,21 @@
+
+
+
+ Flickr-color
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/images/github-logo.svg b/assets/images/github-logo.svg
new file mode 100644
index 0000000..37fa923
--- /dev/null
+++ b/assets/images/github-logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/images/linkedin-logo.svg b/assets/images/linkedin-logo.svg
new file mode 100644
index 0000000..b45c117
--- /dev/null
+++ b/assets/images/linkedin-logo.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/config.toml b/config.toml
deleted file mode 100644
index 1df9656..0000000
--- a/config.toml
+++ /dev/null
@@ -1,12 +0,0 @@
-baseURL = "https://andreinicholson.com/"
-disableRSS = true
-enableRobotsTXT = true
-
-[params]
- description = "Software developer and UI designer."
- author = "Andrei Nicholson"
- email = "contact@andreinicholson.com"
- github_username = "tetsuo13"
- flickr_link = "https://www.flickr.com/photos/90329256@N00/"
- linkedin_link = "andrei-nicholson/6/697/2a4"
-
diff --git a/content/.gitinclude b/content/.gitinclude
deleted file mode 100644
index d70ebaa..0000000
--- a/content/.gitinclude
+++ /dev/null
@@ -1 +0,0 @@
-public
\ No newline at end of file
diff --git a/hugo.toml b/hugo.toml
new file mode 100644
index 0000000..f8e4002
--- /dev/null
+++ b/hugo.toml
@@ -0,0 +1,18 @@
+baseURL = 'https://andreinicholson.com/'
+languageCode = 'en-us'
+title = 'Andrei Nicholson'
+enableRobotsTXT = true
+
+# Disable the tag.
+disableHugoGeneratorInject = true
+
+# Disable category and tag pages.
+disableKinds = ["taxonomy"]
+
+[params]
+ description = 'Software developer and UI designer.'
+ author = 'Andrei Nicholson'
+ email = 'contact@andreinicholson.com'
+ gitHubUsername = 'tetsuo13'
+ flickrPhotostream = '90329256@N00'
+ linkedInProfile = 'andrei-nicholson-2a46976'
diff --git a/layouts/404.html b/layouts/404.html
new file mode 100644
index 0000000..c9ef894
--- /dev/null
+++ b/layouts/404.html
@@ -0,0 +1,13 @@
+{{ define "main"}}
+
+
+
+
Uh-oh
+
+ The page you're looking for doesn't exist.
+ Try going home .
+
+
+
+
+{{ end }}
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
new file mode 100644
index 0000000..5aa8661
--- /dev/null
+++ b/layouts/_default/baseof.html
@@ -0,0 +1,12 @@
+
+
+
+
+ {{ block "title" . }}{{ .Site.Title }}{{ end }}
+ {{ partial "head" . }}
+
+
+ {{ block "main" . }}{{ end }}
+ {{ partial "analytics" . }}
+
+
\ No newline at end of file
diff --git a/layouts/index.html b/layouts/index.html
index d66840f..8ba8149 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -1,75 +1,3 @@
-
-
-
-
- {{ .Site.Params.Author }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- I'm a passionate web developer
- and UI designer . I create
- solutions that inspire confidence.
-
-
-
-
-
-
-
- I'm fanatical about user experiences and design.
- When there's time I use
- GitHub ,
- upload photos to
- Flickr
- and neglect Facebook. Send me an
- email .
-
-
-
-
-
-
-
- {{ partial "footer.html" . }}
-
-
-
-
+{{ define "main" }}
+ {{ partial "home.html" . }}
+{{ end }}
diff --git a/layouts/partials/analytics.html b/layouts/partials/analytics.html
index 1f9f511..57de672 100644
--- a/layouts/partials/analytics.html
+++ b/layouts/partials/analytics.html
@@ -1,13 +1,15 @@
-
-
+
+
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html
deleted file mode 100644
index 06a750f..0000000
--- a/layouts/partials/footer.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-{{ partial "analytics.html" . }}
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
new file mode 100644
index 0000000..ab3fc9a
--- /dev/null
+++ b/layouts/partials/head.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/layouts/partials/home.html b/layouts/partials/home.html
new file mode 100644
index 0000000..ff24440
--- /dev/null
+++ b/layouts/partials/home.html
@@ -0,0 +1,29 @@
+
+ Hi, I'm Andrei .
+
+
+ I'm a passionate developer and UI designer.
+ I create solutions that inspire confidence.
+
+
+
+
+ {{ $image := resources.Get "/images/github-logo.svg" | fingerprint }}
+
+
+
+
+ {{ $image := resources.Get "/images/flickr-logo.svg" | fingerprint }}
+
+
+
+
+ {{ $image := resources.Get "/images/linkedin-logo.svg" | fingerprint }}
+
+
+
+
+
diff --git a/layouts/robots.txt b/layouts/robots.txt
new file mode 100644
index 0000000..ff58620
--- /dev/null
+++ b/layouts/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Sitemap: {{ .Site.BaseURL }}sitemap.xml
\ No newline at end of file
diff --git a/static/css/base.css b/static/css/base.css
deleted file mode 100644
index f3fec5a..0000000
--- a/static/css/base.css
+++ /dev/null
@@ -1,158 +0,0 @@
-html,
-body {
- height: 100%;
-}
-html {
- overflow-y: scroll;
- -webkit-overflow-scrolling: touch;
- -webkit-tap-highlight-color: rgba(0,0,0,0);
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
-}
-body {
- font-family: Helvetica, sans-serif;
- background-color: #fff;
- color: #333345;
-}
-div#holder {
- min-height: 100%;
- position: relative;
-}
-div#content {
- padding-bottom: 7em;
-}
-header,
-footer {
- width: 100%;
- float: left;
- /*padding: 15px 0;*/
- background-color: #273a3e;
- color: #fff;
-}
-header {
- height: 5em;
- -webkit-box-shadow: 0px 0px 100px 0px rgba(0, 0, 0, 1);
- box-shadow: 0px 0px 100px 0px rgba(0, 0, 0, 1);
- margin-bottom: 2.5em;
-}
- header hgroup {
- float: left;
- }
- header nav {
- float: right;
- text-align: right;
- max-width: 15em;
- margin: 0;
- }
- header nav ul {
- list-style: none;
- }
- header nav ul li {
- display: inline;
- padding-left: 1em;
- }
- header nav a {
- color: #fff;
- text-decoration: none;
- text-transform: lowercase;
- padding: 0.1em 0.5em 0.1em 0.5em;
- }
- header nav a .h:hover {
- background-color: #ff573b;
- }
- header nav a .b:hover {
- background-color: #6690fe;
- }
-
-footer {
- bottom: 0;
- height: 3.5em;
- position: absolute;
-}
- footer h4 {
- margin-top: 1em;
- }
- footer nav {
- float: right;
- }
- footer nav ul {
- list-style-type: none;
- }
- footer nav ul li {
- padding-left: 1em;
- float: left;
- }
- footer nav ul li a {
- display: block;
- width: 25px;
- height: 25px;
- background-image: url(/img/badges.png);
- }
- footer nav ul li a.gh {
- background-position: 0px -50px;
- }
- footer nav ul li a.li {
- background-position: 0px -25px;
- }
- footer nav ul li a.fl {
- background-position: 0px -75px;
- }
-
-div.limit {
- clear: both;
- max-width: 43.5em;
- position: relative;
- margin: 0 auto;
- padding-left: 1em;
- padding-right: 1em;
-}
-
-/** Red */
-.style1 {
- color: #FF573B;
-}
-/** Green */
-.style2 {
- color: #56D862;
-}
-/** Blue */
-.style3 {
- color: #6690FE;
-}
-/** Purple */
-.style4 {
- color: #a67dc6;
-}
-/** Beige */
-.style5 {
- color: #cac780;
-}
-
-div.l {
- float: left;
-}
-div.r {
- float: right;
-}
-div.c {
- clear: both;
-}
-
-/** Home page */
-#intro {
- font-size: 210%;
- font-weight: bold;
-}
-
-hr {
- height: 0.15em;
- background-color: #444;
-}
-
-#outro {
- color: #444;
-}
-
-aside {
- color: #444;
-}
diff --git a/static/css/normalize.css b/static/css/normalize.css
deleted file mode 100644
index f164473..0000000
--- a/static/css/normalize.css
+++ /dev/null
@@ -1,461 +0,0 @@
-/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
-
-/* Document
- ========================================================================== */
-
-/**
- * 1. Change the default font family in all browsers (opinionated).
- * 2. Correct the line height in all browsers.
- * 3. Prevent adjustments of font size after orientation changes in
- * IE on Windows Phone and in iOS.
- */
-
-html {
- font-family: sans-serif; /* 1 */
- line-height: 1.15; /* 2 */
- -ms-text-size-adjust: 100%; /* 3 */
- -webkit-text-size-adjust: 100%; /* 3 */
-}
-
-/* Sections
- ========================================================================== */
-
-/**
- * Remove the margin in all browsers (opinionated).
- */
-
-body {
- margin: 0;
-}
-
-/**
- * Add the correct display in IE 9-.
- */
-
-article,
-aside,
-footer,
-header,
-nav,
-section {
- display: block;
-}
-
-/**
- * Correct the font size and margin on `h1` elements within `section` and
- * `article` contexts in Chrome, Firefox, and Safari.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-/* Grouping content
- ========================================================================== */
-
-/**
- * Add the correct display in IE 9-.
- * 1. Add the correct display in IE.
- */
-
-figcaption,
-figure,
-main { /* 1 */
- display: block;
-}
-
-/**
- * Add the correct margin in IE 8.
- */
-
-figure {
- margin: 1em 40px;
-}
-
-/**
- * 1. Add the correct box sizing in Firefox.
- * 2. Show the overflow in Edge and IE.
- */
-
-hr {
- box-sizing: content-box; /* 1 */
- height: 0; /* 1 */
- overflow: visible; /* 2 */
-}
-
-/**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
-pre {
- font-family: monospace, monospace; /* 1 */
- font-size: 1em; /* 2 */
-}
-
-/* Text-level semantics
- ========================================================================== */
-
-/**
- * 1. Remove the gray background on active links in IE 10.
- * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
- */
-
-a {
- background-color: transparent; /* 1 */
- -webkit-text-decoration-skip: objects; /* 2 */
-}
-
-/**
- * Remove the outline on focused links when they are also active or hovered
- * in all browsers (opinionated).
- */
-
-a:active,
-a:hover {
- outline-width: 0;
-}
-
-/**
- * 1. Remove the bottom border in Firefox 39-.
- * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
- */
-
-abbr[title] {
- border-bottom: none; /* 1 */
- text-decoration: underline; /* 2 */
- text-decoration: underline dotted; /* 2 */
-}
-
-/**
- * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
- */
-
-b,
-strong {
- font-weight: inherit;
-}
-
-/**
- * Add the correct font weight in Chrome, Edge, and Safari.
- */
-
-b,
-strong {
- font-weight: bolder;
-}
-
-/**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
-code,
-kbd,
-samp {
- font-family: monospace, monospace; /* 1 */
- font-size: 1em; /* 2 */
-}
-
-/**
- * Add the correct font style in Android 4.3-.
- */
-
-dfn {
- font-style: italic;
-}
-
-/**
- * Add the correct background and color in IE 9-.
- */
-
-mark {
- background-color: #ff0;
- color: #000;
-}
-
-/**
- * Add the correct font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` elements from affecting the line height in
- * all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-sup {
- top: -0.5em;
-}
-
-/* Embedded content
- ========================================================================== */
-
-/**
- * Add the correct display in IE 9-.
- */
-
-audio,
-video {
- display: inline-block;
-}
-
-/**
- * Add the correct display in iOS 4-7.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/**
- * Remove the border on images inside links in IE 10-.
- */
-
-img {
- border-style: none;
-}
-
-/**
- * Hide the overflow in IE.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* Forms
- ========================================================================== */
-
-/**
- * 1. Change the font styles in all browsers (opinionated).
- * 2. Remove the margin in Firefox and Safari.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
- font-family: sans-serif; /* 1 */
- font-size: 100%; /* 1 */
- line-height: 1.15; /* 1 */
- margin: 0; /* 2 */
-}
-
-/**
- * Show the overflow in IE.
- * 1. Show the overflow in Edge.
- */
-
-button,
-input { /* 1 */
- overflow: visible;
-}
-
-/**
- * Remove the inheritance of text transform in Edge, Firefox, and IE.
- * 1. Remove the inheritance of text transform in Firefox.
- */
-
-button,
-select { /* 1 */
- text-transform: none;
-}
-
-/**
- * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
- * controls in Android 4.
- * 2. Correct the inability to style clickable types in iOS and Safari.
- */
-
-button,
-html [type="button"], /* 1 */
-[type="reset"],
-[type="submit"] {
- -webkit-appearance: button; /* 2 */
-}
-
-/**
- * Remove the inner border and padding in Firefox.
- */
-
-button::-moz-focus-inner,
-[type="button"]::-moz-focus-inner,
-[type="reset"]::-moz-focus-inner,
-[type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0;
-}
-
-/**
- * Restore the focus styles unset by the previous rule.
- */
-
-button:-moz-focusring,
-[type="button"]:-moz-focusring,
-[type="reset"]:-moz-focusring,
-[type="submit"]:-moz-focusring {
- outline: 1px dotted ButtonText;
-}
-
-/**
- * Change the border, margin, and padding in all browsers (opinionated).
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct the text wrapping in Edge and IE.
- * 2. Correct the color inheritance from `fieldset` elements in IE.
- * 3. Remove the padding so developers are not caught out when they zero out
- * `fieldset` elements in all browsers.
- */
-
-legend {
- box-sizing: border-box; /* 1 */
- color: inherit; /* 2 */
- display: table; /* 1 */
- max-width: 100%; /* 1 */
- padding: 0; /* 3 */
- white-space: normal; /* 1 */
-}
-
-/**
- * 1. Add the correct display in IE 9-.
- * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
- */
-
-progress {
- display: inline-block; /* 1 */
- vertical-align: baseline; /* 2 */
-}
-
-/**
- * Remove the default vertical scrollbar in IE.
- */
-
-textarea {
- overflow: auto;
-}
-
-/**
- * 1. Add the correct box sizing in IE 10-.
- * 2. Remove the padding in IE 10-.
- */
-
-[type="checkbox"],
-[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Correct the cursor style of increment and decrement buttons in Chrome.
- */
-
-[type="number"]::-webkit-inner-spin-button,
-[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-/**
- * 1. Correct the odd appearance in Chrome and Safari.
- * 2. Correct the outline style in Safari.
- */
-
-[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- outline-offset: -2px; /* 2 */
-}
-
-/**
- * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
- */
-
-[type="search"]::-webkit-search-cancel-button,
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * 1. Correct the inability to style clickable types in iOS and Safari.
- * 2. Change font properties to `inherit` in Safari.
- */
-
-::-webkit-file-upload-button {
- -webkit-appearance: button; /* 1 */
- font: inherit; /* 2 */
-}
-
-/* Interactive
- ========================================================================== */
-
-/*
- * Add the correct display in IE 9-.
- * 1. Add the correct display in Edge, IE, and Firefox.
- */
-
-details, /* 1 */
-menu {
- display: block;
-}
-
-/*
- * Add the correct display in all browsers.
- */
-
-summary {
- display: list-item;
-}
-
-/* Scripting
- ========================================================================== */
-
-/**
- * Add the correct display in IE 9-.
- */
-
-canvas {
- display: inline-block;
-}
-
-/**
- * Add the correct display in IE.
- */
-
-template {
- display: none;
-}
-
-/* Hidden
- ========================================================================== */
-
-/**
- * Add the correct display in IE 10-.
- */
-
-[hidden] {
- display: none;
-}
diff --git a/static/img/badges.png b/static/img/badges.png
deleted file mode 100644
index af12123..0000000
Binary files a/static/img/badges.png and /dev/null differ