├── .forestry └── settings.yml ├── .gitmodules ├── README.md ├── config.toml ├── content ├── _index.md └── docs │ ├── _index.md │ ├── differentiation │ └── index.md │ ├── participate │ └── index.md │ ├── principles │ └── index.md │ └── tools │ └── index.md ├── resources └── _gen │ └── assets │ ├── js │ └── js │ │ ├── scripts.js_d11fe7b62c27961c87ecd0f2490357b9.content │ │ └── scripts.js_d11fe7b62c27961c87ecd0f2490357b9.json │ └── scss │ └── scss │ ├── style.scss_5ad6f408b0e3e473c748aac88af0ea18.content │ ├── style.scss_5ad6f408b0e3e473c748aac88af0ea18.json │ ├── style.scss_fbbbc62c786286473d9c728ad0108593.content │ └── style.scss_fbbbc62c786286473d9c728ad0108593.json ├── static └── images │ ├── logo-mobile.svg │ ├── logo.svg │ └── meta_og_image_docsops.jpg └── themes └── hugo-whisper-theme ├── .gitignore ├── LICENSE ├── README.md ├── archetypes └── default.md ├── assets ├── js │ ├── libs │ │ └── library.js │ ├── pages │ │ └── services.js │ └── scripts.js └── scss │ ├── _bootstrap-variables.scss │ ├── bootstrap │ ├── _alert.scss │ ├── _badge.scss │ ├── _breadcrumb.scss │ ├── _button-group.scss │ ├── _buttons.scss │ ├── _card.scss │ ├── _carousel.scss │ ├── _close.scss │ ├── _code.scss │ ├── _custom-forms.scss │ ├── _dropdown.scss │ ├── _forms.scss │ ├── _functions.scss │ ├── _grid.scss │ ├── _images.scss │ ├── _input-group.scss │ ├── _jumbotron.scss │ ├── _list-group.scss │ ├── _media.scss │ ├── _mixins.scss │ ├── _modal.scss │ ├── _nav.scss │ ├── _navbar.scss │ ├── _pagination.scss │ ├── _popover.scss │ ├── _print.scss │ ├── _progress.scss │ ├── _reboot.scss │ ├── _root.scss │ ├── _tables.scss │ ├── _tooltip.scss │ ├── _transitions.scss │ ├── _type.scss │ ├── _utilities.scss │ ├── _variables.scss │ ├── bootstrap-grid.scss │ ├── bootstrap-reboot.scss │ ├── bootstrap.scss │ ├── mixins │ │ ├── _alert.scss │ │ ├── _background-variant.scss │ │ ├── _badge.scss │ │ ├── _border-radius.scss │ │ ├── _box-shadow.scss │ │ ├── _breakpoints.scss │ │ ├── _buttons.scss │ │ ├── _caret.scss │ │ ├── _clearfix.scss │ │ ├── _float.scss │ │ ├── _forms.scss │ │ ├── _gradients.scss │ │ ├── _grid-framework.scss │ │ ├── _grid.scss │ │ ├── _hover.scss │ │ ├── _image.scss │ │ ├── _list-group.scss │ │ ├── _lists.scss │ │ ├── _nav-divider.scss │ │ ├── _navbar-align.scss │ │ ├── _pagination.scss │ │ ├── _reset-text.scss │ │ ├── _resize.scss │ │ ├── _screen-reader.scss │ │ ├── _size.scss │ │ ├── _table-row.scss │ │ ├── _text-emphasis.scss │ │ ├── _text-hide.scss │ │ ├── _text-truncate.scss │ │ ├── _transition.scss │ │ └── _visibility.scss │ └── utilities │ │ ├── _align.scss │ │ ├── _background.scss │ │ ├── _borders.scss │ │ ├── _clearfix.scss │ │ ├── _display.scss │ │ ├── _embed.scss │ │ ├── _flex.scss │ │ ├── _float.scss │ │ ├── _position.scss │ │ ├── _screenreaders.scss │ │ ├── _sizing.scss │ │ ├── _spacing.scss │ │ ├── _text.scss │ │ └── _visibility.scss │ ├── components │ ├── _buttons.scss │ ├── _content.scss │ ├── _docs-menu.scss │ ├── _footer.scss │ ├── _hamburger.scss │ ├── _header.scss │ ├── _logo.scss │ ├── _main-menu-mobile.scss │ ├── _main-menu.scss │ ├── _overview.scss │ ├── _page.scss │ ├── _reset.scss │ ├── _strip.scss │ ├── _sub-footer.scss │ ├── _title.scss │ ├── _type.scss │ └── _whitebox.scss │ ├── libraries │ ├── hamburgers │ │ ├── _base.scss │ │ ├── hamburgers.scss │ │ └── types │ │ │ ├── _3dx-r.scss │ │ │ ├── _3dx.scss │ │ │ ├── _3dxy-r.scss │ │ │ ├── _3dxy.scss │ │ │ ├── _3dy-r.scss │ │ │ ├── _3dy.scss │ │ │ ├── _arrow-r.scss │ │ │ ├── _arrow.scss │ │ │ ├── _arrowalt-r.scss │ │ │ ├── _arrowalt.scss │ │ │ ├── _arrowturn-r.scss │ │ │ ├── _arrowturn.scss │ │ │ ├── _boring.scss │ │ │ ├── _collapse-r.scss │ │ │ ├── _collapse.scss │ │ │ ├── _elastic-r.scss │ │ │ ├── _elastic.scss │ │ │ ├── _emphatic-r.scss │ │ │ ├── _emphatic.scss │ │ │ ├── _minus.scss │ │ │ ├── _slider-r.scss │ │ │ ├── _slider.scss │ │ │ ├── _spin-r.scss │ │ │ ├── _spin.scss │ │ │ ├── _spring-r.scss │ │ │ ├── _spring.scss │ │ │ ├── _squeeze.scss │ │ │ ├── _stand-r.scss │ │ │ ├── _stand.scss │ │ │ ├── _vortex-r.scss │ │ │ └── _vortex.scss │ └── pygments │ │ └── github.scss │ ├── pages │ └── _home.scss │ └── style.scss ├── exampleSite ├── archetypes │ ├── default.md │ └── docs.md ├── config.toml ├── content │ ├── _index.md │ └── docs │ │ ├── _index.md │ │ ├── configure │ │ └── index.md │ │ ├── example │ │ └── index.md │ │ ├── install-hugo │ │ └── index.md │ │ ├── install-theme │ │ └── index.md │ │ └── specimen │ │ └── index.md ├── resources │ └── _gen │ │ └── assets │ │ ├── js │ │ └── js │ │ │ ├── scripts.js_d11fe7b62c27961c87ecd0f2490357b9.content │ │ │ └── scripts.js_d11fe7b62c27961c87ecd0f2490357b9.json │ │ └── scss │ │ └── scss │ │ ├── style.scss_5ad6f408b0e3e473c748aac88af0ea18.content │ │ ├── style.scss_5ad6f408b0e3e473c748aac88af0ea18.json │ │ ├── style.scss_fbbbc62c786286473d9c728ad0108593.content │ │ └── style.scss_fbbbc62c786286473d9c728ad0108593.json └── static │ └── favicon.png ├── images ├── gallery-1.png ├── gallery-2.png ├── screenshot-full.png ├── screenshot-with-border.png ├── screenshot.png └── tn.png ├── layouts ├── 404.html ├── _default │ ├── baseof.html │ ├── list.html │ ├── single.html │ └── summary.html ├── index.html └── partials │ ├── google-analytics.html │ ├── hamburger.html │ ├── header.html │ ├── main-menu-mobile.html │ ├── main-menu.html │ ├── sidebar.html │ └── sub-footer.html ├── netlify.toml ├── static └── images │ ├── logo-mobile.svg │ ├── logo.svg │ └── terminal.gif └── theme.toml /.forestry/settings.yml: -------------------------------------------------------------------------------- 1 | --- 2 | new_page_extension: md 3 | auto_deploy: false 4 | admin_path: 5 | webhook_url: 6 | sections: 7 | - type: directory 8 | path: content 9 | label: Pages 10 | create: all 11 | match: "*" 12 | - type: directory 13 | path: content/docs 14 | label: Docs 15 | create: all 16 | match: "**/*" 17 | upload_dir: static/uploads 18 | public_path: "/uploads" 19 | front_matter_path: '' 20 | use_front_matter_path: false 21 | file_template: ":filename:" 22 | build: 23 | preview_command: hugo -E -F -D -b $DEPLOY_URL -d public 24 | publish_command: hugo -d public 25 | preview_env: 26 | - HUGO_ENV=staging 27 | - HUGO_VERSION=0.55.2 28 | publish_env: 29 | - HUGO_ENV=production 30 | - HUGO_VERSION=0.55.2 31 | preview_output_directory: public 32 | output_directory: public 33 | instant_preview_command: hugo server -D -E -F --port 8080 --bind 0.0.0.0 --renderToDisk 34 | -d public 35 | version: 0.55.2 36 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "public"] 2 | path = public 3 | url = git@github.com:DocOps-Method/docops-method.github.io.git 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [DocOps](https://docops.info)🔗 2 | 3 | DocOps describes the method of using human readable and editable plain text documentation as source for applying changes in another system. By keeping both parts in sync, the documentation becomes the single source of truth for both humans and computers 4 | 5 | ## Foundation 6 | 7 | In the spirit of the DevOps movement the DocOps method combines human written documentation with it’s execution on the system it documents. Making human written documents executable just like an applications. 8 | 9 | The majority of documentation artifacts and system state consist of content that rarely changes. Only small but important parts are changed regularly. This is the sweet spot where the DocOps concept provide a benefit by making sure that the regularly changed content is always up-to-date. 10 | DocOps is in general the concept of having an executable documentation, or enrichment of documentation based on execution results. 11 | 12 | ## Principles 13 | 14 | When applying the DocOps Method this principles will serve as guardrails. 15 | 16 | - Documentation has a dual purpose. 17 | - Documentation part for humans also make sense even without execution part in place. 18 | - Documentation is single source of truth. 19 | - DocOps Systems are idempotent multiple executions will produce the same result. 20 | - DocOps System can be implemented one-way or round-trip. 21 | - A system that only generates documentation from code isn’t following the DocOps concept. 22 | - A system that modifies or enriches the documentation is within DocOps. 23 | 24 | ## Differentiation from other Methods 25 | 26 | DocOps as described on the internet prior 2018, 2019 as Documentation with Dev Tools and Mindset. 27 | 28 | ### GitOps, ChatOps and DocOps 29 | 30 | What is the differentiation to other potential similar concepts. 31 | 32 | [TODO] 33 | 34 | ## Tools 35 | 36 | As with all xyzOps concepts tools are the mortar that make bricks stick together. 37 | As of now there aren’t any tools that are specifically designed 38 | 39 | ## Examples 40 | 41 | [TODO] 42 | 43 | ## Best Practice 44 | 45 | Example of good and bad DocOps practice: 46 | 47 | **Scenario:** 48 | Generate Reverse Proxy Config for HAProxy/Nginx from documentation. Provide markdown example. 49 | 50 | **Good Practice:** 51 | Do ... [TODO] 52 | 53 | **Bad Practice:** 54 | Enriched documents should be up to date or the enriched content should be valid for a long period of time at least double the mean time between average document generation. 55 | 56 | ## Alternatives Concepts 57 | 58 | **Code too Docs** 59 | An existing common practice is to enrich the existing documentation with code execution results. In this case the user is editing the config files and scripts and as an output of this the documentation is updated with predefined injection points. 60 | 61 | ## Contribution 62 | 63 | Be part of the DocOps movement, as the concept and practice are still evolving there are many opportunities and possibilities to contribute and influence the direction. You don’t have to be a developer or alike to contribute. Everyone with a brain is welcome. 64 | 65 | ### Ideas 66 | 67 | This is a short list of topic that are alway welcome and simple to accomplish. 68 | 69 | - Promote the DocOps concept to your co-worker, friends, Blog posts and Social Media. Explain what it is and how it should work. 70 | - Review the overall documentation, correct typos and wording to describe better the concept. Make the text more understandable to a wider audience. 71 | - Translate the concept into you own language. 72 | - Search for tools and examples that follow the DocOps principles and post about them. Let the creators know they are following the DocOps principles if don’t know it yet. 73 | 74 | More to come in the future on https://DocOps.info 75 | -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "https://docops.info/" 2 | languageCode = "en-us" 3 | title = "DocOps" 4 | theme = "hugo-whisper-theme" 5 | 6 | # [[menu.main]] 7 | # name = "Home" 8 | # url = "/" 9 | # weight = 1 10 | 11 | # [[menu.main]] 12 | # name = "Docs" 13 | # url = "/docs/" 14 | # weight = 2 15 | 16 | [params] 17 | google_analytics_id="" 18 | mainSections = ["docs"] 19 | homepage_intro = "DocOps is about turning documents written for people into executable actions. The documentation of the underlying system becomes the single source of truth." 20 | homepage_button_text = "Explore DocOps" 21 | homepage_button_link = 'https://github.com/DocOps-Method/DocOps' 22 | [params.homepage_meta_tags] 23 | meta_description = "Hugo Whisper is a documentation theme built with Hugo." 24 | meta_og_title = "DocOps" 25 | meta_og_type = "website" 26 | meta_og_url = "https://docops.info/" 27 | meta_og_image = "/images/meta_og_image_docsops.jpg" 28 | meta_og_description = "DocOps transforms documents written for humans into executable actions." 29 | meta_twitter_card = "summary" 30 | meta_twitter_site = "@vad1mo" 31 | meta_twitter_creator = "@vad1mo" 32 | [author] 33 | name = "DocOps Community" 34 | homepage = "https://docops.info" -------------------------------------------------------------------------------- /content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'DocOps' 3 | date: 2019-03-11T15:14:39+10:00 4 | --- 5 | -------------------------------------------------------------------------------- /content/docs/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'DocOps Method' 3 | date: 2018-03-21 4 | weight: 1 5 | --- 6 | 7 | In the spirit of the DevOps movement the DocOps method combines human written documentation with it's execution on the system it documents. Making human written documents executable just like an applications. 8 | 9 | The majority of documentation artifacts and system state consist of content that rarely changes. Only small but important parts are changed regularly. This is the sweet spot where the DocOps concept provide a benefit by making sure that the regularly changed content is always up-to-date. 10 | DocOps is in general the concept of having an executable documentation, or enrichment of documentation based on execution results. 11 | 12 | ## Contribution 13 | 14 | More on the GitHub Page 15 | 16 | ## Alternatives Concepts 17 | 18 | Enrich the existing Documentation with the results from pipeline execution. So part of the documentation is injected from code. In this case the user is editing the various config files and scripts and as an output of this the documentation is updated with predefined injection points. 19 | 20 | ## Examples 21 | 22 | Example of good and bad DocOps practice: 23 | 24 | Generate Reverse Proxy Config for HAProxy/Nginx from documentation. Provide markdown example. 25 | 26 | Good Practice 27 | Do 28 | 29 | Bad Practice 30 | Enriched documents should be up to date or the enriched content should be valid for a long period of time at least double the mean time between average document generation. -------------------------------------------------------------------------------- /content/docs/differentiation/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Differentiation from other Concepts' 3 | date: 2019-03-20 4 | weight: 3 5 | --- 6 | 7 | DocOps as described on the internet prior 2018, 2019 as Documentation with Dev Tools and Mindset. 8 | 9 | ## GitOps, ChatOps and DocOps 10 | 11 | What is the differentiation to other potential similar concepts. -------------------------------------------------------------------------------- /content/docs/participate/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Participate' 3 | date: 2019-03-21 4 | weight: 5 5 | --- 6 | 7 | Be part of the DocOps movement, as the concept and practice are still evolving there are many opportunities and possibilities to contribute and influence the direction. You don’t have to be a developer or alike to contribute. Everyone with a brain is welcome. 8 | 9 | ## Contribution Ideas 10 | 11 | This is a short list of topic that are alway welcome and simple to accomplish. 12 | 13 | * Promote the DocOps concept to your co-worker, friends, Blog posts and Social Media. Explain what it is and how it should work. 14 | * Review the overall documentation, correct typos and wording to describe better the concept. Make the text more understandable to a wider audience. 15 | * Translate the concept into you own language. 16 | * Search for tools and examples that follow the DocOps principles and post about them. Let the creators know they are following the DocOps principles if don’t know it yet. -------------------------------------------------------------------------------- /content/docs/principles/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Principles' 3 | date: 2019-03-20 4 | weight: 2 5 | --- 6 | 7 | When applying the DocOps Method this principles will serve as guardrails. 8 | 9 | - Documentation has a dual purpose. 10 | - Documentation part for humans also make sense even without execution part in place. 11 | - Documentation is single source of truth. 12 | - DocOps Systems are idempotent multiple executions will produce the same result. 13 | - DocOps System can be implemented one-way or round-trip. 14 | - A system that only generates documentation from code isn’t following the DocOps concept. 15 | - A system that modifies or enriches the documentation is within DocOps. -------------------------------------------------------------------------------- /content/docs/tools/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Tools' 3 | date: 2019-03-20 4 | weight: 3 5 | --- 6 | 7 | As with all xyzOps concepts tools are the mortar that make the bricks stick together. 8 | As of now there aren’t any tools that are specifically designed 9 | -------------------------------------------------------------------------------- /resources/_gen/assets/js/js/scripts.js_d11fe7b62c27961c87ecd0f2490357b9.content: -------------------------------------------------------------------------------- 1 | var body=document.querySelector('body') 2 | var menuTrigger=document.querySelector('#toggle-main-menu-mobile');var menuContainer=document.querySelector('#main-menu-mobile');menuTrigger.onclick=function(){menuContainer.classList.toggle('open');menuTrigger.classList.toggle('is-active') 3 | body.classList.toggle('lock-scroll')} -------------------------------------------------------------------------------- /resources/_gen/assets/js/js/scripts.js_d11fe7b62c27961c87ecd0f2490357b9.json: -------------------------------------------------------------------------------- 1 | {"Target":"js/scripts.min.bf1e1f7ae8e03db5f012356e825843facdff51c0a559cb0d27fe2bbe1db405c2.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-vx4feujgPbXwEjVuglhD+s3/UcClWcsNJ/4rvh20BcI="}} -------------------------------------------------------------------------------- /resources/_gen/assets/scss/scss/style.scss_5ad6f408b0e3e473c748aac88af0ea18.json: -------------------------------------------------------------------------------- 1 | {"Target":"css/style.css","MediaType":"text/css","Data":{}} -------------------------------------------------------------------------------- /resources/_gen/assets/scss/scss/style.scss_fbbbc62c786286473d9c728ad0108593.json: -------------------------------------------------------------------------------- 1 | {"Target":"css/style.min.020d604e977275cf093999068602ba80e6eb2f78df409ccca5a76f02778bea56.css","MediaType":"text/css","Data":{"Integrity":"sha256-Ag1gTpdydc8JOZkGhgK6gObrL3jfQJzMpadvAneL6lY="}} -------------------------------------------------------------------------------- /static/images/meta_og_image_docsops.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocOps-Method/DocOps/3f816a3e7a050f8a42897ee9bffa7da5cfb745a3/static/images/meta_og_image_docsops.jpg -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | .idea 4 | public 5 | terminal -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Robert Austin 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 | -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/README.md: -------------------------------------------------------------------------------- 1 | # Hugo Whisper Theme 2 | 3 | Whisper is a minimal documentation theme built for Hugo. The design and functionality is intentionally minimal. 4 | 5 | [Live Demo](https://hugo-whisper.netlify.com/) | 6 | [Zerostatic Themes](https://www.zerostatic.io/theme/hugo-whisper/) 7 | 8 |  9 | 10 | ## Theme features 11 | 12 | ### Content Types 13 | 14 | - Docs (Markdown) 15 | - Homepage 16 | 17 | ### Content Management 18 | 19 | - This theme generates documentation from markdown files located in `content/docs` 20 | - The "Home" page is not documentation, it can be used to introduce your project etc. 21 | 22 | ### Features 23 | 24 | - Beautiful and clean typography for all semantic HTML elements 25 | 26 | ### SCSS 27 | 28 | - SCSS (Hugo Pipelines) 29 | - Responsive design 30 | - Bootstrap 4 grid and media queries only 31 | 32 | ### Speed 33 | 34 | - 100/100 Google Lighthouse speed score 35 | - 21KB without images ⚡ 36 | - Vanilla JS only 37 | 38 | ### Menu 39 | 40 | - Responsive mobile menu managed in `config.toml` 41 | 42 | ### Content 43 | 44 | - Documentation examples included, using all markdown syntax 45 | 46 | # Installation 47 | 48 | To use this theme you will need to have Hugo installed. If you don't already have Hugo installed please follow the official [installation guide](https://gohugo.io/getting-started/installing/) 49 | 50 | ### Check Hugo Version 51 | 52 | This theme uses [Hugo Pipes](https://gohugo.io/hugo-pipes/scss-sass/) to compile SCSS and minify assets. Please make sure you have the `Hugo Extended` version installed. If you are not using the extended version this theme will not not compile. 53 | 54 | ``` 55 | hugo version 56 | ``` 57 | 58 | ### Create a new Hugo site 59 | 60 | ``` 61 | hugo new site mynewsite 62 | ``` 63 | 64 | This will create a fresh Hugo site in the folder `mynewsite`. 65 | 66 | ### Install theme 67 | 68 | Copy or git clone this theme into the sites themes folder `mynewsite/themes` 69 | 70 | #### Install with Git 71 | 72 | ``` 73 | cd mynewsite 74 | git clone https://github.com/jugglerx/hugo-whisper-theme.git themes/hugo-whisper-theme 75 | ``` 76 | 77 | #### Install from .zip file 78 | 79 | You can download the .zip file located here https://github.com/JugglerX/hugo-whisper-theme/archive/master.zip. 80 | 81 | Extract the downloaded .zip inside the `themes` folder. Rename the extracted folder from `hugo-whisper-theme-master` -> `hugo-whisper-theme`. You should end up with the following folder structure `mynewsite/themes/hugo-whisper-theme` 82 | 83 | ### Add example content 84 | 85 | Copy the entire contents of the `mynewsite/themes/hugo-whisper-theme/exampleSite/` folder to root folder of your Hugo site, ie `mynewsite/` 86 | 87 | To copy the files using terminal, make sure you are still in the projects root, ie the `mynewsite` folder. 88 | 89 | ``` 90 | cp -a themes/hugo-whisper-theme/exampleSite/. . 91 | ``` 92 | 93 | ### Update config.toml 94 | 95 | After you copy the `config.toml` into the root folder of your Hugo site you will need to update the `baseURL`, `themesDir` and `theme` values in `mynewsite/config.toml` 96 | 97 | ``` 98 | baseURL = "/" 99 | themesDir = "themes" 100 | theme = "hugo-whisper-theme" 101 | ``` 102 | 103 | ### Run Hugo 104 | 105 | After installing the theme for the first time, generate the Hugo site. 106 | 107 | You run this command from the root folder of your Hugo site ie `mynewsite/` 108 | 109 | ``` 110 | hugo 111 | ``` 112 | 113 | For local development run Hugo's built-in local server. 114 | 115 | ``` 116 | hugo server 117 | ``` 118 | 119 | Now enter [`localhost:1313`](http://localhost:1313) in the address bar of your browser. 120 | -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/archetypes/default.md: -------------------------------------------------------------------------------- 1 | +++ 2 | +++ 3 | -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/assets/js/libs/library.js: -------------------------------------------------------------------------------- 1 | console.log('Library') 2 | -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/assets/js/pages/services.js: -------------------------------------------------------------------------------- 1 | console.log('Services') 2 | -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/assets/js/scripts.js: -------------------------------------------------------------------------------- 1 | var body = document.querySelector('body') 2 | var menuTrigger = document.querySelector('#toggle-main-menu-mobile'); 3 | var menuContainer = document.querySelector('#main-menu-mobile'); 4 | 5 | menuTrigger.onclick = function() { 6 | menuContainer.classList.toggle('open'); 7 | menuTrigger.classList.toggle('is-active') 8 | body.classList.toggle('lock-scroll') 9 | } 10 | -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/assets/scss/_bootstrap-variables.scss: -------------------------------------------------------------------------------- 1 | $grid-breakpoints: ( 2 | xs: 0, 3 | sm: 576px, 4 | md: 768px, 5 | lg: 992px, 6 | xl: 1300px, 7 | ); 8 | 9 | $container-max-widths: ( 10 | sm: 540px, 11 | md: 720px, 12 | lg: 960px, 13 | xl: 1140px, 14 | ); 15 | 16 | $grid-gutter-width: 20px; 17 | 18 | $primary: #1de9b6; 19 | $secondary: #ffca28; 20 | $black: #212529; 21 | 22 | // Links 23 | $link-color: $primary; 24 | $link-decoration: none; 25 | $link-hover-color: lighten($primary, 20%); 26 | $link-hover-decoration: underline; 27 | 28 | // Fonts 29 | $font-size-base: 1rem; // Assumes the browser default, typically `16px` 30 | $font-family-base: 'Roboto', Arial, sans-serif, -apple-system; 31 | $font-family-serif: 'Lora', Arial, sans-serif, -apple-system; 32 | $font-family-mono: 'Roboto Mono', monospace; 33 | $line-height-base: 1.4; 34 | 35 | // Headings & Paragraph 36 | $paragraph-color: #333; 37 | 38 | $spacer: 1rem; 39 | $spacers: (); 40 | $spacers: map-merge( 41 | ( 42 | 0: 0, 43 | 1: 10px, 44 | 2: 20px, 45 | 3: 30px, 46 | 4: 40px, 47 | 5: 50px, 48 | 6: 60px, 49 | 7: 70px, 50 | 8: 80px, 51 | 9: 90px, 52 | 10: 100px, 53 | 11: 110px, 54 | 12: 120px, 55 | 13: 130px, 56 | 14: 140px, 57 | 15: 150px, 58 | 16: 160px, 59 | 17: 170px, 60 | 18: 180px, 61 | 19: 190px, 62 | 20: 200px, 63 | ), 64 | $spacers 65 | ); 66 | -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/assets/scss/bootstrap/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: ($close-font-size + $alert-padding-x * 2); 31 | 32 | // Adjust close link position 33 | .close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | padding: $alert-padding-y $alert-padding-x; 38 | color: inherit; 39 | } 40 | } 41 | 42 | 43 | // Alternate styles 44 | // 45 | // Generate contextual modifier classes for colorizing the alert. 46 | 47 | @each $color, $value in $theme-colors { 48 | .alert-#{$color} { 49 | @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/assets/scss/bootstrap/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | font-size: $badge-font-size; 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | @include border-radius($badge-border-radius); 16 | 17 | // Empty badges collapse automatically 18 | &:empty { 19 | display: none; 20 | } 21 | } 22 | 23 | // Quick fix for badges in buttons 24 | .btn .badge { 25 | position: relative; 26 | top: -1px; 27 | } 28 | 29 | // Pill badges 30 | // 31 | // Make them extra rounded with a modifier to replace v3's badges. 32 | 33 | .badge-pill { 34 | padding-right: $badge-pill-padding-x; 35 | padding-left: $badge-pill-padding-x; 36 | @include border-radius($badge-pill-border-radius); 37 | } 38 | 39 | // Colors 40 | // 41 | // Contextual variations (linked badges get darker on :hover). 42 | 43 | @each $color, $value in $theme-colors { 44 | .badge-#{$color} { 45 | @include badge-variant($value); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /themes/hugo-whisper-theme/assets/scss/bootstrap/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | list-style: none; 7 | background-color: $breadcrumb-bg; 8 | @include border-radius($border-radius); 9 | } 10 | 11 | .breadcrumb-item { 12 | // The separator between breadcrumbs (by default, a forward-slash: "/") 13 | + .breadcrumb-item::before { 14 | display: inline-block; // Suppress underlining of the separator in modern browsers 15 | padding-right: $breadcrumb-item-padding; 16 | padding-left: $breadcrumb-item-padding; 17 | color: $breadcrumb-divider-color; 18 | content: "#{$breadcrumb-divider}"; 19 | } 20 | 21 | // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built 22 | // without `