diff options
author | Sebastian Pech <windows@spech.de> | 2019-07-22 12:28:27 +0300 |
---|---|---|
committer | Sebastian Pech <windows@spech.de> | 2019-07-22 12:28:27 +0300 |
commit | f88b26b3007323d00394ba7077d9f66ec3f5231f (patch) | |
tree | ed22afdf8f4373624e3a607ee731f8faf48d4e65 | |
parent | 4b0f5a2da422933c49c4f69b2c6903a328211b71 (diff) |
initial
-rw-r--r-- | .gitignore | 61 | ||||
-rw-r--r-- | LICENSE.md | 21 | ||||
-rw-r--r-- | README.md | 52 | ||||
-rw-r--r-- | static/.htaccess | 150 | ||||
-rw-r--r-- | theme.toml | 15 |
5 files changed, 298 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ad46b30 --- /dev/null +++ b/.gitignore @@ -0,0 +1,61 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..32a5eed --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Sebastian Pech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. @@ -1,2 +1,52 @@ -# bootstrap-bp-hugo-startpage +# Bootstrap-BP hugo startpage + Bootstrap based Hugo startpage theme which provides out of the box best practices. +This theme is a combination of my [Bootstrap-BP hugo theme](https://github.com/spech66/bootstrap-bp-hugo-theme) and my [startpage](https://github.com/spech66/startpage). +Instead of rendering the items on-the-fly as in the startpage theme the **Bootstrap-BP hugo startpage** will generate a complete single page site. + +## Install the theme + +With Git installed, run the following commands inside the Hugo site folder. If Hugo has not yet been installed, read the setup guide [here](https://gohugo.io/overview/installing/). + +```sh +mkdir themes +cd themes +git clone https://github.com/spech66/bootstrap-bp-hugo-startpage.git +``` + +You can get a zip of the latest version of the theme from the [home page](https://github.com/spech66/bootstrap-bp-hugo-theme) and extract it to the themes folder. + +## Theme settings + +Most settings should be done with hugo specific variables. There are only a few (optional) additional `[params]`. + +* `startPageColumns = true` will show the start page in a Masonry-like mode. + +## Google Analytics + +This theme uses the internal asynchronous template for Google Analytics tracking. You only have to provide your tracking id in your configuration file: + +```yaml +googleAnalytics = "UA-123-45" +``` + +## Schema.org support + +Provide one author to enable the Schema.org support. + +```yaml +[Author] + name = "Sebastian Pech" +``` + +## Images, Open Graph and Twitter Cards + +This theme uses Hugos `feature/cover` name method to set the optimized feature image. This will also be in the Twitter Cards and Open Graph block. + +```yaml +# Site Config toml +title = "My hugo site" + +[params] + description = "Text about the site" +``` diff --git a/static/.htaccess b/static/.htaccess new file mode 100644 index 0000000..132e09e --- /dev/null +++ b/static/.htaccess @@ -0,0 +1,150 @@ +RewriteEngine On + +# If you migrate from wordpress this will keep your tags and categories working +# RewriteRule ^tag/(.*)$ https://www.REPLACEME.xyz/tags/$1/ [R=301,L] +# RewriteRule ^category/(.*)$ https://www.REPLACEME.xyz/categories/$1/ [R=301,L] + +# Migrate old content +# RewriteRule ^my/old/(.*)$ https://www.REPLACEME.xyz/new/page/ [R=301,L] +# RewriteRule ^2018/10/old-blog-post/(.*)$ https://www.REPLACEME.xyz/2018/10/new-blog-post/ [R=301,L] + +# SSL and www +# RewriteCond %{HTTPS} !on [OR] +# RewriteCond %{HTTP_HOST} !^www\. +# RewriteRule (.*) https://www.REPLACEME.xyz%{REQUEST_URI} [L,R=301] + +# Create 404 error page in /layouts +ErrorDocument 404 /404.html + +# Redirect Wordpress RSS feed URL to Hugo RSS feed URL +# RedirectMatch 301 (?i)^/feed/?(index.xml)?$ https://www.REPLACEME.xyz/index.xml + +# HSTS +Header set Strict-Transport-Security "max-age=31536000" +# Block site from being framed with X-Frame-Options and CSP +#Header set Content-Security-Policy "frame-ancestors 'self';" +Header append X-Frame-Options: DENY +# Prevent browsers from incorrectly detecting non-scripts as scripts +Header append X-Content-Type-Options: nosniff +# Content Security Policy +# Don't implement the above policy yet; instead just report violations that would have occured +#Header set Content-Security-Policy-Report-Only: "default-src https: 'unsafe-eval' 'unsafe-inline' data:; img-src * data:; object-src 'none'; frame-src 'self' *.google.de google.de *.google.com google.com; font-src * https: data:; frame-ancestors 'self';" +Header set Content-Security-Policy: "default-src https: 'unsafe-eval' 'unsafe-inline' data:; img-src * data:; object-src 'none'; frame-src 'self' *.google.de google.de *.google.com google.com; font-src * data:; frame-ancestors 'self';" + +# Active GZIP compression +<IfModule mod_deflate.c> +SetOutputFilter DEFLATE +</IfModule> + +<IfModule mod_headers.c> + Header append Cache-Control "public" + Header append Vary Accept-Encoding + Header set Connection keep-alive + Header unset ETag + FileETag None + + # Because `mod_headers` cannot match based on the content-type, + # the following workaround needs to be used. + <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ic[os]|jpe?g|m?js|json(ld)?|m4[av]|manifest|map|markdown|md|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$"> + Header unset Content-Security-Policy + Header unset X-Content-Security-Policy + Header unset X-Frame-Options + Header unset X-UA-Compatible + Header unset X-WebKit-CSP + Header unset X-XSS-Protection + Header unset X-Content-Type-Options + </FilesMatch> +</IfModule> + +# Browser Caching +<IfModule mod_expires.c> + + ExpiresActive on + ExpiresDefault "access plus 1 month" + + # DATA + ExpiresByType text/xml "access plus 0 seconds" + ExpiresByType text/html "access plus 0 seconds" + ExpiresByType text/plain "access plus 0 seconds" + ExpiresByType application/xml "access plus 0 seconds" + ExpiresByType application/json "access plus 0 seconds" + ExpiresByType application/rss+xml "access plus 1 hour" + ExpiresByType application/atom+xml "access plus 1 hour" + ExpiresByType text/x-component "access plus 1 hour" + + # MANIFEST + ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" + ExpiresByType text/cache-manifest "access plus 0 seconds" + + # SCRIPTS + ExpiresByType text/css "access plus 1 month" + ExpiresByType text/javascript "access plus 1 month" + ExpiresByType application/javascript "access plus 1 month" + ExpiresByType application/x-javascript "access plus 1 month" + + # IMAGES + ExpiresByType image/gif "access plus 1 year" + ExpiresByType image/png "access plus 1 year" + ExpiresByType image/jpe "access plus 1 year" + ExpiresByType image/jpg "access plus 1 year" + ExpiresByType image/jpeg "access plus 1 year" + ExpiresByType image/jp2 "access plus 1 year" + ExpiresByType image/pipeg "access plus 1 year" + ExpiresByType image/bmp "access plus 1 year" + ExpiresByType image/tiff "access plus 1 year" + ExpiresByType image/svg+xml "access plus 1 year" + ExpiresByType image/vnd.microsoft.icon "access plus 1 year" + + # ICONS + ExpiresByType image/ico "access plus 1 year" + ExpiresByType image/icon "access plus 1 year" + ExpiresByType text/ico "access plus 1 year" + ExpiresByType image/x-ico "access plus 1 year" + ExpiresByType image/x-icon "access plus 1 year" + ExpiresByType application/ico "access plus 1 year" + + # AUDIO + ExpiresByType audio/ogg "access plus 1 year" + ExpiresByType audio/basic "access plus 1 year" + ExpiresByType audio/mid "access plus 1 year" + ExpiresByType audio/midi "access plus 1 year" + ExpiresByType audio/mpeg "access plus 1 year" + ExpiresByType audio/x-aiff "access plus 1 year" + ExpiresByType audio/x-mpegurl "access plus 1 year" + ExpiresByType audio/x-pn-realaudio "access plus 1 year" + ExpiresByType audio/x-wav "access plus 1 year" + + # VIDEO + ExpiresByType video/ogg "access plus 1 year" + ExpiresByType video/mp4 "access plus 1 year" + ExpiresByType video/webm "access plus 1 year" + ExpiresByType video/x-msvideo "access plus 1 year" + ExpiresByType video/mpeg "access plus 1 year" + ExpiresByType video/quicktime "access plus 1 year" + ExpiresByType video/x-la-asf "access plus 1 year" + ExpiresByType video/x-ms-asf "access plus 1 year" + ExpiresByType x-world/x-vrml "access plus 1 year" + + # FONTS + ExpiresByType font/truetype "access plus 1 year" + ExpiresByType font/opentype "access plus 1 year" + ExpiresByType application/x-font-ttf "access plus 1 year" + ExpiresByType application/x-font-woff "access plus 1 year" + ExpiresByType application/font-woff "access plus 1 year" + ExpiresByType application/vnd.ms-fontobject "access plus 1 year" + + # FLASH + ExpiresByType application/x-shockwave-flash "access plus 1 year" + ExpiresByType video/x-flv "access plus 1 year" + + # OTHERS + ExpiresByType application/pdf "access plus 1 year" + ExpiresByType image/vnd.wap.wbmp "access plus 1 year" + ExpiresByType application/vnd.wap.wbxml "access plus 1 year" + ExpiresByType application/smil "access plus 1 year" + + <IfModule mod_headers.c> + Header append Cache-Control "public" + </IfModule> + +</IfModule> diff --git a/theme.toml b/theme.toml new file mode 100644 index 0000000..f677449 --- /dev/null +++ b/theme.toml @@ -0,0 +1,15 @@ +# theme.toml template for a Hugo theme +# See https://github.com/gohugoio/hugoThemes#themetoml for an example + +name = "Bootstrap-BP-Startpage" +license = "MIT" +licenselink = "https://github.com/spech66/bootstrap-bp-hugo-startpage/blob/master/LICENSE" +description = "Bootstrap based Hugo startpage theme which provides out of the box best practices." +homepage = "https://github.com/spech66/bootstrap-bp-hugo-startpage/" +tags = ["minimalist", "single-page", "clean", "simple", "bootstrap", "responsive", "google analytics", "one-page", "light", "fast"] +features = ["responsive", "google analytics", "bootstrap v4.1.x", "open graph", "twitter cards"] +min_version = "0.48" + +[author] + name = "Sebastian Pech" + homepage = "https://www.spech.de/" |