What it is
 OneFlow is a Jekyll Theme designed to create 
stunning, clear and practical modern One-Pager Websites. It offers lots of
            features and customization options, so you can easily create a Site that matches your own or your client's
            wishes for design and structure. 
 It offers 
various customization
                options, like a sticky or non-sticky navigation bar and several diverse color skins. Furthermore,
            OneFlow comes with lots of build-in utilities like buttons, boxes, notices, galleries, round-images and
            image-text-rows. You can apply sections with alternating background color and can fuss-freely use a
            background image. 
 It is 
straightforward and easy to use. You just need
            to clone the 
 GitHub Repository and can get started straightaway.
            
            
            
            
            Getting started & development
            Fork and clone the repository
 The 
vision of this theme is 
simplicity and accessibility, to easily create stunning websites from scratch.
            Therefore, it's not available as a classic gem-based Jekyll theme, but as a ready-to-use GitHub repository
            that you just need to fork and clone. So, get ahead and make a fork of this repository, rename it if you
            like to suit the name of the site you want to create, locally clone it, and directly start editing! 
How
                to start a development docker container
 To test your website and see all of your changes in
            real-time without deploying it online, you can easily build your site locally. OneFlow comes with build-in
            docker configuration using 
BretFisher's jekyll serve. 
                - Make sure you have Bundler and Docker installed
- Open up a terminal, navigate to your local repository, and run docker compose up.
 Your site will then be visible at 
http://0.0.0.0:4000/ in any browser.
            
            Markdown and HTML
 Use raw and flexible HTML or clear markdown to write your
            content. Markdown is rendered with 
kramdown, which supports applying css classes to
            the Markdown. That means, you can add notices, boxes and other utilities even to your Markdown content, as
            simple as 
"Text you want to add the classes to {: .class1 .class2}". This documentation will
            show everything in HTML, but as shown in the lines above, applying css classes is also easily possible with
            Markdown.
            
            Responsive Design
 All of OneFlows features are 100% responsive and adapt to
            different screen sizes, so your site looks good on all devices!
            
            License & Credits
            License
 OneFlow is Open-Source and licensed under the 
 MIT License. That means, you can freely copy,
            use and customize it - whatever you like! You do not need to give credits to me (the creator), but of course
            I'm happy if you do. But don't feel obliged to do so. 
Credits
 OneFlow is based on the 
Minimal Mistakes Theme. Minimal Mistakes has been used as a starting point for
            OneFlow. Credits to it's creator, Michael Rose, for the awesome and versatile theme he created!
            
            Start editing your Site
 The main parts you want to edit are: 
                - README.mdfor the readme of your repository,
- /_data/navigation.ymlfor the navigation links,
- /_pages/index.htmlfor your main content,
- /_pages/imprint.htmlfor the imprint & privacy note,
- _config.ymlfor the basic setup of your site,
- /assets/imagesfor all images and graphics you use on your site,
- /assets/css/custom-styles.cssif you want to add custom css styles,
- /assets/fontsif you want to add custom fonts and
- /_includes/editablesif you create a website for a client who regularly wants to change
                    parts of the site him/herself.
Color skins
 OneFlow comes with 10 diverse color skins you can easily apply. These are:
            
default, 
air, 
aqua, 
contrast, 
dark, 
dirt, 
neon,
            
mint, 
plum and 
sunrise. Check the 
Minimal Mistakes documentation about color skins
            for example images. Define your preferred skin by changing the value of 
oneflow-skin in
            
_config.yml.. 
 The Masthead, including the navigation bar,
            offers a few customization options. All of this configuration can be done in
            
config.yml.
 First, you can decide whether you like it to be 
sticky, meaning it will stay visible on top of the page even when you scroll
            down, or not. To make the masthead sticky, set 
sticky-masthead: true. 
 You can
            furthermore easily set the 
opacity of the masthead with 
masthead-opacity:
                xxx, where xxx is a number between 0 and 1. A good starting point that works good for most sites
            is 0.8 to 0.9. 
 The masthead can either contain a 
logo (or any other
                image), or your site title and optionally a sub-title. If you want to display your logo / image
            there, set 
logo: /assets/images/logo.webp or the respective path to the image and filetype you
            want to use. If you don't want your logo / image there, remove the logo path or out-comment it by setting
            
# behind the 
: like so: 
 logo: #/assets/.... By default, the site
            title, which is also shown in the browser tab, is then displayed instead of the logo. You can set the title
            by setting 
title: "your-website-title". Set the subtitle with 
subtitle:
                "your-subtitle" or set this to 
"" to have no subtitle. If you want to display a
            different title than your default site title in the masthead, you can set this with 
masthead_title:
                "your-masthead-title". Set this to 
"" to display no title. 
Navigation
            
 To edit the links in the navigation bar, head over to 
/_data/navigation.yml. Unter the
            main-variable, you can set the title and url each nav link should point to. For linking to a section on the
            main page, include a "#" before the id, and set the id-attribute within the section-tag or the header-tag of
            that section. For external links, you can set blank to true, so the page opens in a new tab, and as URL
            include the full url with https:// at the beginning. 
Background
 As the background
            for your site, you can either stick with the background colors that come with your chosen color skin, or you
            can apply a 
background image instead. Background image settings are all done in
            
config.yml. Set 
background-image: "/path/to/your/background-image.webp". To have
            no background-image, remove or out-comment this line. When working with a background image, it is strongly
            recommended to use a horizontal background image for the desktop version of your site and an upright image
            for the mobile version. You can easily do this, by using a horizontal image for
            
background-image, and setting a different image (or different version of the same image) for
            
background-image-mobile. Furthermore, it is also strongly recommended to apply a slightly
            transparent overlay to the background image, for better readability of all texts on your site. You can set
            this by setting 
background-image-overlay : rgba(255, 255, 255, 0.5) or any other rgba color
            value you like.  As some countries, like Germany, require 
information and consent about cookie-usage and the usage of a CDN for example
            for deploying sites on GitHub pages, OneFlow comes with a build-in Popup for that purpose. You can enable or
            disable the Popup in 
config.yml with true/false for 
show-popup. Do not use
            quotation marks for setting true/false values in the configuration file. 
 The existing version of
            the popup is a suggestion and should (no legal advice given) fulfill german laws regarding cookie and
            cdn-usage consent. 
 To edit the content of the popup, navigate to 
/_includes/popup.html
            and edit its HTML. This file also contains a script-tag with the javascript for the popup. This script sets
            a cookie for one day, when the user clicks on the "Agree"-button, so the popup is not displayed on every
            page reload, but only after one day. Edit the line 
expiresDate.setDate(expiresDate.getDate() +
                1); to set this to a different time interval. 
Content & Basic home page
                setup
 To start adding content to your main page, navigate to 
/_pages/index.html.
            Remove the example content, and start adding your own! 
 First, you need to set some basics in the
            YAML front matter. So, start with:
            
 ---
 layout: page
 title: "The Title That Should Display In Your Page Hero"
 excerpt: "The
                Sub-Title Below Your Main Title"
 permalink: /
 ---  You can furthermore customize
            the 
Page Hero, which is the first thing catching the visitors eyes! The Page Hero
            can include: 
                - A title
- A subtitle
- An image
- An image overlay
- A caption
- Action buttons
 Set and customize them like so:
            
   header:
 overlay_image: /assets/images/header.webp
                overlay_filter: rgba(0, 0, 0, 0.6)
 caption: "Photo
                by **[Text](Link)**"
 actions:
   -
                label: "Get Started"
 url:
                "https://url-to-link-to.com"
 blank: true
             Captions and labels support Markdown. You can add as many 
action
                buttons as you like. The have a label, a URL and a "blank"-characteristic. Blank is either true or
            false and determines, whether the link opens up in a new tab or not. If this is true, the HTML a-tag
            contains 
target="_blank" as well as 
rel="noopener noreferrer nofollow", which is
            important so that opening link in a new tab doesn't come with security and SEO impairments. 
            Remember that indentation is important for the YAML front matter. 
Sections
 OneFlow
            offers 
alternating colored sections.
 If you do not want alternating
            colors, there is no need to apply any section tags, just write all of your content outside of any section
            tags. To separate different parts of your page, you can drop in a nicely styled big 
separation line easily with 
            
. You can use this both with and without alternating colored
            sections. 
 To apply alternating colored sections, do the following: 
 Wrap every section that
            should be normally colored in 
            
 
 // Content within the section
                  For every alternatively colored section, add the class
            
alternative-color to the section. 
            
Some notes about that:
 Alternatively colored sections don't look too good before the footer. So, it
            is recommended to always let the last section of your site be a normally colored one.
 Furthermore, if
            you want the first section of your site to be an alternatively colored one, also add the class
            
first-section to it. This makes sure the color starts directly below the Page Hero, and there
            is no small space in a different color in between Page Hero and first section. 
Utilities
            
 Of course, OneFlow comes with build-in styles for normal Markdown/HTML tags like headers, paragraphs,
            anchor-tags (links) and so on. There are furthermore some utilities that you can use to organize and style
            your content in a good-looking and structured way. Check out the 
theme
                website to see example of all of these utilities! 
Notices
 Notices highlight a
            paragraph or a div. Just add the 
notice class to any element, easy as that.
 Apart from the
            standard-notice, there are some others with different colors, which are: 
                - notice--primary
- notice--success
- notice--warning
- notice--danger
- notice--info
 Apply these classes, instead of the notice-class, to use the different colors. 
Boxes
            
 Boxes also highlight your content, but with a different styling. Just apply the 
box class
            to any div-element to put it into a box with a nice little rounded border and very subtle background. Just
            as notices, boxes offer the same color variations. Keep the box-class with your divs and add one of the
            following: 
                - box--primary
- box--success
- box--warning
- box--danger
- box--info
 Boxes furthermore can be put into a div with the class 
box-container. Within that
            container, you can apply the 
box-half class to make a box fill half of the width and therefore
            be able to fit 2 boxes next to each other, or the 
box-third class to make a box fill a third of
            the width and therefore be able to fit 3 boxes next to each other. On small screens, boxes stack below each
            other responsively. 
 Add the 
btn class plus any of the following
            classes to any a-tag to style the link as a button: 
                - btn--primary
- btn--success
- btn--warning
- btn--danger
- btn--info
- btn--inverse
 You can furthermore edit the size of the button with the following classes: 
                - btn--x-large
- btn--large
- btn--small
Responsive video-embed
 Embed a video from YouTube, Vimeo, Google Drive, or bilibili
            that responsively sizes to fit the width of its parent. This feature is taken un-edit from Minimal Mistakes,
            
 see the Minimal Mistakes Docu about responsive video
                embed here . 
Galleries
 The gallery is as well taken from Minimal Mistakes,
            slightly edited in style to better fit OnePager Websites. 
 Check the Minimal Mistakes Docu about galleries here
            . 
Rounded images
 Rounded images are a cool helper that displays a circular
            image in the top of a box, so that you can add header and a caption below the image. They add a cool visual
            element and can provide good structure as well. They can be included easily via YAMl front matter. Set the
            front matter like so: 
            
 round-images:
    - image-path: "/assets/images/image.webp"
 
                size: "full"
  header: "text for the header"
 
                caption: "text for the caption"
             You can include further rounded image boxes by adding a next "- image-path" and all other
            necessary variables. Size can be either "full", "half" or "third" and determines, how much of the page width
            the box with the rounded image is going to take. With half, two boxes fit next to each other, with third,
            it's three.
 Include the rounded images anywhere with 
{% include rounded-images
                %}.
 You can use any other name than "round-images" for the rounded images. Then, you
            need to include an id in the include, like so: 
{% include rounded-images id="id-you-chose"
                %}. 
 Half or third boxes stack below each other responsively on smaller screens. 
Image-text-rows
 Image-text-rows include an image either on the left or right side, and a
            header + caption on the other side. They optionally can include a button with a link. 
 They can be set
            via YAMl front matter, and offer huge customization options. Create them like so:
            
 image-text-row:
    - header: "text for the header"
 
                excerpt: "text for the caption/excerpt"
  btn-url: "https://your-url.com"
                 btn-class: "primary/success/..."
  btn-label: "label
                for the button"
  blank: false
  image-url:
                "/assets/images/image.webp"
  alt-text: "alternative text for the image"
                 image-width "400px"
  image-right: true 
            Leave out btn-url and the other btn-variables to not include a button. 
 "Blank" determines whether the
            link from the button is opened in a new tab or not. 
 "Image-right" sets whether the image is on the
            right side. With true, it is, with false, it is left. 
 Image and text responsively stack below each
            other on smaller screens, with the image always on top.  You can easily customize
            the footer in 
config.yml. Under 
footer links you can set the social links that you
            want to include in the footer. Just set the 
url attribute for every social link you want to
            include, and out-comment the url attribute for every social link that you do not want to include. 
            Furthermore, you can set 
copyright to anything you like, like your or your clients name, which
            will display in the footer as '© [year] [name]'", with 'year' and 'name' being replaced by the respective
            values.
 Also, you can include a 
creator name and url, if you like, which will then display
            in the footer as "Created by". If you remove or out-comment the creator attributes, no "Created by" will be
            shown. 
Custom styles
 If you want to add your own custom css, you can do that in
            the ready-to-use 
custom-styles.css file that is located with in 
/assets/css. Just
            add your css in there, nothing else you need to do as setup. 
Fonts
 Just like Minimal
            Mistakes, OneFlow uses system fonts for all font stacks, to provide a clean look and to improve performance.
            More information about that in the 
 Minimal Mistakes Docu about Fonts.
            Furthermore, you can easily apply custom fonts within OneFlow. 
Google Fonts offer high versatility and are free
            to use (you just might need to include a license, depending on the font). They can be hosted locally with
            ease. I recommend using 
Google Webfonts Helper for that. Select the font and font-styles you want there,
            download the files, and place them in 
/assets/fonts. Then open up
            
/_sass/oneflow/_fonts.scss and put the css you got from Google Webfonts Helper there. That's
            it, you now host the font locally and can apply it to any text you like. 
Icons
 OneFlow
            comes with build-in support for 
Font Awesome Icons. Font Awesome 6.5.1 is included and hosted locally within
            OneFlow. Nothing for you to do but apply the icons! Just add an i-tag with the respective classes, check out
            the Font Awesome Website to find all their icons. 
Editables
 As a Web Developer,
            especially for private customers or small companies, I've came across the following situation a few times:
            The 
client wants to edit parts of the website him/herself regularly, for example
            to add or delete upcoming events or dates. Large companies can pay web developers for that, but private
            customers or small companies often understandably can't afford long-term maintenance costs. 
 To make
            this as easy as possible, utilize the editables-feature from OneFlow! Put any HTML/Markdown part that the
            client needs to edit in a separate file and place this file in the 
/_includes/editables folder,
            then include it on the main page with 
{% include /editables/filename.html %}.
            The client then only needs to make changes within the given file, which makes it as as simple and as little
            error-prone as possible. 
Further customization
 OneFlow offers huge customization
            options without the need to touch any of the layouts, includes or sass files. If you need even further
            customization, these directories and files are included in the GitHub Repository, so you can go ahead and
            edit all files in every way you want for further customization and fine-granular styling. The layout
            structure can be edited within 
/_layouts/default.html or page.html. The scss stylesheets are
            located within the
/_sass directory, and includes like the page hero, footer, masthead and also
            utilities like the gallery, rounded images or image-text-rows are located within the 
/_includes
            folder and can be edited right there. 
Support / Contact
 If you have any questions or
            feedback, don't hesitate to contact me! You can reach me via Email: 
info@perstarke-webdev.de, 
Instagram or by writing a 
GitHub Issue in the OneFlow
                Repository. 
Contribution
 If you have any suggestions on how to improve
            OneFlow, I appreciate any Pull Requests or Issues on GitHub. Feel free to contribute in any way! 
Share your experience and results
 If you created a Website using OneFlow, I am
            very happy to see and share the results! Message me, or create a Pull Request where you link your Website in
            the ReadMe of the OneFlow Repository. 
Happy website crafting y'all!