Package: bloggo
BloggoBloggo is yet another blog-oriented static site generator.RequirementsPython 3.9+pipInstallationRunpython -m pip install bloggoto install BloggoGetBloggo's Boilerplatefor your site's template and contentWhen ready, generate site by runningbloggoin your shell where the directoryresourcesisThat's it, your static site should be available in thepublicfolder that was just created.
Every time you make changes, runbloggoagain to generate
new files. You can upload yourpublicfolder's contents to any hosting provided you'd like.UpdatingTo update Bloggo tothe latest versionsimply run:python-mpipinstallbloggo--upgradeTo find out what version of Bloggo you are currently running, open your shell and run:bloggo--versionContentContent files are very simple, YAML-esque (but one-level only!) structures. A complete example of a content file looks like this:---title:Hello, Worlddecription:A post about welcoming oneself to the worlddate:2021-02-12---Markdown content follows here.Dates have to be in a year-month-day format (you can format it later to whatever you want using theformat_datehelper)Files have to be in a.mdextension, such ashello-world.mdand placed inside theresources/contentdirectory. What's MD you say? It'sMarkdown. Beautiful, glorious, best friend of an efficient writer.URLsIf you have a file calledhello.mdin the root of theresources/contentdirectory, then that content
will be available via yoursite.com/hello. Likewise, if you put your stuff in a directory itself, like in a case of a blog post you would
have a file inresources/content/blog/hello.md, then that  content will be available via yoursite.com/blog/hello.Note:the way Bloggo is written is that it always expects blog posts to live in the blog directory. I may
at one point make it configurable (or you can make a pull request), but for now it is what it is.Watch files for changesIn order to ease development of static sites with Bloggo, you can run it with a watcher via the--watchflag, which will then monitor theresourcesdirectory for any changes and
upon detecting a change, generates a new static site.Specify directoriesBy default, Bloggo expects resources to live in theresourcesfolder, and the
generated files will end up in apublicfolder. If you don't like this however, you can
change it by passing a--resources-dirand/or--out-dirflags when calling Bloggo to change this.Example:bloggo--resources-dir~/site/resources--out-dir~/home/public_htmlThis would take the resources from the~/site/resourcesdirectory and it
would generate the static files into the~/home/public_htmldirectory.TemplatingBloggo uses Handlebars to put together your static site. It runs in a single templating file, calledtemplate.hbs, inresourcesdirectory.
I encourage you to make it your own, change things around and go crazy. But if you won't, that's okay, too.VariablesGlobal variables:is_homereturns true when being on the home page of the siteis_postreturns true when any content item is being viewedAdditionally, any configuration that you have added to  theresources/config.jsonfile will be available as it's own
variable as well. For example a config such as:{"site_title":"Doggo's Bloggo"}would be usable in the template as{{site_title}}.Remember however thatsite_title,site_urlandsite_descriptionare all
required items so you must have them defined in config.json.Contextual variablesEach of the posts yaml-esque key: value configuration is also available to you, in the post's context.
Post context is available in two places:When you are inside ais_postcontext, you can simply access all the post's variables as-is. An example use-case would be:{{#ifis_post}}<h2><a href="{{url}}">{{title}}</a></h2><div class="date">{{format_datedate"%b %d, %Y"}}</div><div class="entry">{{entry}}</div>{{/if}}However, when you are inside ais_homecontext, you c an access all the post's
variables from within a loop. An example use-case would be:<ul>{{#posts}}<li><h2><a href="{{url}}">{{title}}</a></h2><div class="date">{{format_datedate"%b %d, %Y"}}</div><div class="entry">{{entry}}</div></li>{{/posts}}</ul>You see all the post's yaml-esque key: value things are available as{{key}}, and the content of the post is available as{{{entry}}}. Note
the three curly brackets, which Handlebars will render HTML with.Helpersformat_datehelperAllows you to format a givendateinto any format you'd like, like this:{{format_datedate"%b %d, %Y"}}Which would output something like February 14, 2021. For a full list of things
you can pass it to format your date,refer to this documentation.AssetsYou should add your images, stylesheets, fonts and so on in theresources/assetsdirectory. This will get copied over
to thepublicdirectory when generating, so your assets will be available via yoursite.com/assets/{...}