├── .github ├── FUNDING.yml └── workflows │ ├── build.yml │ ├── deploy-gh-pages.yml │ ├── eslint.yml │ └── slack-notify.yml ├── .gitignore ├── .prettierrc.json ├── .stylelintrc.json ├── LICENSE ├── README.md ├── archetypes └── default.md ├── eslint.config.mjs ├── exampleSite ├── .gitignore ├── content │ ├── blog │ │ ├── categories-post.md │ │ ├── creating-a-new-theme.md │ │ ├── go-is-for-lovers.md │ │ ├── hugo-is-for-lovers.md │ │ ├── linked-post.md │ │ └── migrate-from-jekyll.md │ ├── contact.md │ └── faq.md ├── data │ ├── carousel │ │ ├── customizable.yaml │ │ ├── design.yaml │ │ ├── features.yaml │ │ └── multipurpose.yaml │ ├── clients │ │ ├── 1.yaml │ │ ├── 2.yaml │ │ ├── 3.yaml │ │ ├── 4.yaml │ │ ├── 5.yaml │ │ └── 6.yaml │ ├── features │ │ ├── consulting.yaml │ │ ├── email.yaml │ │ ├── print.yaml │ │ ├── seo.yaml │ │ ├── uiux.yaml │ │ └── webdesign.yaml │ └── testimonials │ │ ├── 1.yaml │ │ ├── 2.yaml │ │ ├── 3.yaml │ │ ├── 4.yaml │ │ └── 5.yaml ├── hugo.toml └── static │ ├── css │ └── custom.css │ └── img │ ├── apple-touch-icon.png │ ├── banners │ ├── banner-1.jpg │ ├── banner-2.jpg │ ├── banner-3.jpg │ ├── banner-4.jpg │ └── banner-5.jpg │ ├── carousel │ ├── template-easy-code.png │ ├── template-easy-customize-less.png │ ├── template-easy-customize.png │ ├── template-homepage.png │ ├── template-mac.png │ ├── template-tablets-2.png │ └── template-tablets.png │ ├── clients │ ├── customer-1.png │ ├── customer-2.png │ ├── customer-3.png │ ├── customer-4.png │ ├── customer-5.png │ └── customer-6.png │ ├── favicon.ico │ ├── logo-small.png │ ├── logo.png │ ├── sharing-default.png │ ├── template-easy-customize.png │ ├── template-homepage.png │ └── testimonials │ ├── person-1.jpg │ ├── person-2.jpg │ ├── person-3.png │ └── person-4.jpg ├── i18n ├── bg.yaml ├── ca.yaml ├── cs.yaml ├── cz.yaml ├── da.yaml ├── de.yaml ├── en.yaml ├── es.yaml ├── fr.yaml ├── id.yaml ├── it.yaml ├── ja.yaml ├── nl.yaml ├── pl.yaml ├── pt-br.yaml ├── pt-pt.yaml ├── ro.yaml ├── ru.yaml ├── sv.yaml ├── tr.yaml ├── zh-tw.yaml └── zh.yaml ├── images ├── screenshot.png └── tn.png ├── layouts ├── 404.html ├── _default │ ├── list.html │ └── single.html ├── archetypes │ └── default.md ├── index.html ├── page │ └── single.html └── partials │ ├── breadcrumbs.html │ ├── carousel.html │ ├── clients.html │ ├── contact.html │ ├── custom_headers.html │ ├── features.html │ ├── footer.html │ ├── headers.html │ ├── map.html │ ├── nav.html │ ├── page.html │ ├── recent_posts.html │ ├── scripts.html │ ├── see_more.html │ ├── sidebar.html │ ├── testimonials.html │ ├── top.html │ └── widgets │ ├── categories.html │ ├── search.html │ └── tags.html ├── package-lock.json ├── package.json ├── static ├── css │ ├── animate.css │ ├── custom.css │ ├── owl.carousel.css │ ├── owl.theme.css │ ├── style.blue.css │ ├── style.default.css │ ├── style.green.css │ ├── style.marsala.css │ ├── style.pink.css │ ├── style.red.css │ ├── style.turquoise.css │ └── style.violet.css ├── img │ ├── apple-touch-icon.png │ ├── banner.jpg │ ├── banner2.jpg │ ├── basketsquare.jpg │ ├── blog-avatar.jpg │ ├── blog-avatar2.jpg │ ├── blog-medium.jpg │ ├── blog-recent-2.jpg │ ├── blog-recent-3.jpg │ ├── blog-recent.jpg │ ├── blog.jpg │ ├── blog2.jpg │ ├── detailbig1.jpg │ ├── detailbig2.jpg │ ├── detailbig3.jpg │ ├── detailsquare.jpg │ ├── detailsquare2.jpg │ ├── detailsquare3.jpg │ ├── favicon.ico │ ├── fixed-background-1.jpg │ ├── fixed-background-2.jpg │ ├── grabbing.png │ ├── home-try.jpg │ ├── home.jpg │ ├── homepage-slider.jpg │ ├── logo-small.png │ ├── logo.png │ ├── main-slider1.jpg │ ├── main-slider2.jpg │ ├── main-slider3.jpg │ ├── main-slider4.jpg │ ├── marker.png │ ├── men.jpg │ ├── page-1.jpg │ ├── page-2.jpg │ ├── page-3.jpg │ ├── payment.png │ ├── photogrid.jpg │ ├── placeholder.png │ ├── portfolio-1.jpg │ ├── portfolio-2.jpg │ ├── portfolio-3.jpg │ ├── portfolio-4.jpg │ ├── portfolio-5.jpg │ ├── portfolio-6.jpg │ ├── portfolio-7.jpg │ ├── portfolio-8.jpg │ ├── portfolio-9.jpg │ ├── product1.jpg │ ├── product2.jpg │ ├── product3.jpg │ ├── product4.jpg │ ├── slide1.jpg │ ├── slide2.jpg │ ├── slide3.jpg │ ├── slide4.jpg │ ├── slide5.jpg │ ├── slide6.jpg │ ├── texture-bw.png │ ├── texture-green.png │ ├── texture-turquoise.png │ ├── texture-violet.png │ └── women.jpg └── js │ ├── front.js │ ├── gmaps.init.js │ ├── hpneo.gmaps.js │ ├── owl.carousel.min.js │ └── respond.min.js └── theme.toml /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: ryanfox1985 2 | patreon: ryanfox1985 3 | custom: https://paypal.me/ryanfox1985 4 | bitcoin: 1My6zRZA4YKdX78aiZKZhWUWfFmCSDafZ6 5 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build project with Hugo 2 | on: [push, pull_request] 3 | jobs: 4 | build: 5 | runs-on: ubuntu-latest 6 | defaults: 7 | run: 8 | working-directory: ./exampleSite 9 | steps: 10 | - uses: actions/checkout@v4 11 | with: 12 | submodules: true # Fetch Hugo themes (true OR recursive) 13 | fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod 14 | 15 | - name: Setup Hugo 16 | uses: peaceiris/actions-hugo@v2 17 | with: 18 | hugo-version: 'latest' 19 | extended: true 20 | 21 | - name: Build 22 | run: | 23 | hugo --minify 24 | -------------------------------------------------------------------------------- /.github/workflows/deploy-gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Github pages 2 | on: 3 | push: 4 | branches: 5 | - master # Set a branch to deploy 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | defaults: 10 | run: 11 | working-directory: ./exampleSite 12 | steps: 13 | - uses: actions/checkout@v4 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: | 26 | hugo --minify 27 | 28 | - name: Deploy 29 | uses: peaceiris/actions-gh-pages@v3 30 | with: 31 | github_token: ${{ secrets.GITHUB_TOKEN }} 32 | publish_dir: ./exampleSite/public # if not specified it defaults to ./public. source directory of the built files to make the deploy (must match the build to directory in config.toml), eg ./docs, ./public, ./exampleSite/public 33 | 34 | -------------------------------------------------------------------------------- /.github/workflows/eslint.yml: -------------------------------------------------------------------------------- 1 | name: Eslint 2 | on: [push, pull_request] 3 | jobs: 4 | linters: 5 | name: Run Eslint 6 | runs-on: ubuntu-latest 7 | 8 | steps: 9 | - name: Check out Git repository 10 | uses: actions/checkout@v4 11 | 12 | - name: Set up Node.js 13 | uses: actions/setup-node@v4 14 | with: 15 | node-version: 22 16 | 17 | # ESLint and Prettier must be in `package.json` 18 | - name: Install Node.js dependencies 19 | run: npm ci 20 | 21 | - name: Run eslint 22 | run: npm run eslint 23 | -------------------------------------------------------------------------------- /.github/workflows/slack-notify.yml: -------------------------------------------------------------------------------- 1 | name: Slack Notification 2 | on: push 3 | jobs: 4 | slackNotification: 5 | name: Slack Notification 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v4 9 | - name: Slack Notification 10 | uses: rtCamp/action-slack-notify@v2 11 | env: 12 | SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | public/ 3 | npm-debug.log 4 | /node_modules/* 5 | exampleSite/.hugo_build.lock 6 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard" 3 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 DevCows 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | +++ 2 | tags = [] 3 | categories = [] 4 | +++ -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import standard from 'eslint-plugin-standard' 2 | import promise from 'eslint-plugin-promise' 3 | import globals from 'globals' 4 | import path from 'node:path' 5 | import { fileURLToPath } from 'node:url' 6 | import js from '@eslint/js' 7 | import { FlatCompat } from '@eslint/eslintrc' 8 | 9 | const __filename = fileURLToPath(import.meta.url) 10 | const __dirname = path.dirname(__filename) 11 | const compat = new FlatCompat({ 12 | baseDirectory: __dirname, 13 | recommendedConfig: js.configs.recommended, 14 | allConfig: js.configs.all 15 | }) 16 | 17 | export default [{ 18 | ignores: ['**/js/gmaps.init.js', '**/*.min.js', '**/owl.*.js', '**/jquery.*.js', '**/hpneo.*.js'] 19 | }, ...compat.extends('standard'), { 20 | plugins: { 21 | standard, 22 | promise 23 | }, 24 | languageOptions: { 25 | globals: { 26 | ...globals.jquery 27 | } 28 | } 29 | }] 30 | -------------------------------------------------------------------------------- /exampleSite/.gitignore: -------------------------------------------------------------------------------- 1 | themes/ 2 | .hugo_build.lock 3 | -------------------------------------------------------------------------------- /exampleSite/content/blog/categories-post.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Categories Post" 3 | date = "2021-08-01T21:29:20+02:00" 4 | tags = ["golang", "programming", "theme", "hugo"] 5 | categories = ["programming","lorem","pseudo"] 6 | banner = "img/banners/banner-4.jpg" 7 | authors = ["John Doe"] 8 | +++ 9 | 10 | I'm a post with multiple categories in the frontmatter: 11 | 12 | categories = ["programming","lorem","pseudo"] 13 | 14 | 15 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. In mauris nulla, vestibulum vel auctor sed, posuere eu lorem. Aliquam consequat augue ut accumsan mollis. Suspendisse malesuada sodales tincidunt. Vivamus sed erat ac augue bibendum porta sed id ipsum. Ut mollis mauris eget ligula sagittis cursus. Aliquam id pharetra tellus. Pellentesque sed tempus risus. Proin id hendrerit ante. Vestibulum vitae urna ut mauris ultricies dignissim. Ut ante turpis, tristique vitae sagittis quis, sagittis nec diam. Fusce pulvinar cursus porta. Vivamus maximus leo dolor, ut pellentesque lorem fringilla nec. Mauris faucibus turpis posuere sapien euismod, a ullamcorper mi maximus. 16 | 17 | Morbi varius ex vel justo dictum placerat. Sed ac arcu pretium, varius elit eget, gravida purus. Fusce sit amet massa mollis eros tincidunt sollicitudin. Suspendisse iaculis cursus mauris ut sagittis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Maecenas elit ligula, molestie quis magna eu, semper posuere lorem. Mauris a justo pharetra, congue ex eget, tincidunt massa. Maecenas sit amet neque lorem. 18 | 19 | Curabitur at elementum quam. Curabitur tristique elit non sapien aliquam vulputate. Vivamus in odio tincidunt, tempor sem quis, tincidunt lacus. Mauris pulvinar nunc sed tempus dictum. Nam vel arcu quis mi fermentum ullamcorper non ac lacus. Donec aliquet vitae ante at imperdiet. Aenean scelerisque venenatis urna, eget elementum risus convallis ac. Nullam gravida arcu lacus, non consectetur augue pretium non. Duis dignissim eros id urna pretium congue. Nullam eu magna in sem sollicitudin tempor. Pellentesque vel convallis ligula. Quisque semper, turpis a rhoncus efficitur, magna nibh iaculis elit, eget tempor dolor eros ut mi. Maecenas eu placerat lacus. Praesent congue pretium nulla, sed suscipit metus rutrum vel. 20 | -------------------------------------------------------------------------------- /exampleSite/content/blog/go-is-for-lovers.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Go is for lovers" 3 | date = "2015-09-17T13:47:08+02:00" 4 | tags = ["go"] 5 | categories = ["programming"] 6 | banner = "img/banners/banner-2.jpg" 7 | facebook_author = "GolangSociety" 8 | +++ 9 | 10 | Hugo uses the excellent [go][] [html/template][gohtmltemplate] library for 11 | its template engine. It is an extremely lightweight engine that provides a very 12 | small amount of logic. In our experience that it is just the right amount of 13 | logic to be able to create a good static website. If you have used other 14 | template systems from different languages or frameworks you will find a lot of 15 | similarities in go templates. 16 | 17 | This document is a brief primer on using go templates. The [go docs][gohtmltemplate] 18 | provide more details. 19 | 20 | ## Introduction to Go Templates 21 | 22 | Go templates provide an extremely simple template language. It adheres to the 23 | belief that only the most basic of logic belongs in the template or view layer. 24 | One consequence of this simplicity is that go templates parse very quickly. 25 | 26 | A unique characteristic of go templates is they are content aware. Variables and 27 | content will be sanitized depending on the context of where they are used. More 28 | details can be found in the [go docs][gohtmltemplate]. 29 | 30 | ## Basic Syntax 31 | 32 | Go lang templates are html files with the addition of variables and 33 | functions. 34 | 35 | **Go variables and functions are accessible within {{ }}** 36 | 37 | Accessing a predefined variable "foo": 38 | 39 | {{ foo }} 40 | 41 | **Parameters are separated using spaces** 42 | 43 | Calling the add function with input of 1, 2: 44 | 45 | {{ add 1 2 }} 46 | 47 | **Methods and fields are accessed via dot notation** 48 | 49 | Accessing the Page Parameter "bar" 50 | 51 | {{ .Params.bar }} 52 | 53 | **Parentheses can be used to group items together** 54 | 55 | {{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }} 56 | 57 | 58 | ## Variables 59 | 60 | Each go template has a struct (object) made available to it. In hugo each 61 | template is passed either a page or a node struct depending on which type of 62 | page you are rendering. More details are available on the 63 | [variables](/layout/variables) page. 64 | 65 | A variable is accessed by referencing the variable name. 66 | 67 |