hotchocolate
============

Hot Chocolate is a static site generator that uses Markdown files as input,
and is designed for building very lightweight sites.

.. image:: https://github.com/alexwlchan/hot-chocolate/raw/master/hotchocolate.jpg

Disclaimer
**********

You should consider this as alpha-quality software at best.  Although I run
several sites with it, it's still **user-unfriendly, undocumented and rough
around the edges**.  If you want a static site generator, look at something
like `Jekyll <http://jekyllrb.com/>`_ or
`Pelican <https://blog.getpelican.com/>`_.

I'd like to document it properly and make it user-friendly, but for now it's
more like a melting pot for my ideas about static site generators.

Installation
************

Install with pip:

.. code-block:: console

   $ pip install hotchocolate

Hot Chocolate requires Python 3.5 or later.

Commands
********

1. Create a site::

      cocoa init

2. Build articles::

      cocoa build

3. Run a preview server (requires Docker)::

      cocoa serve

Site structure
**************

Each Markdown file starts with YAML-like front matter, followed by content:

.. code-block:: markdown

   title:   The cacao bean
   slug:    /cacao-beans/

   The *cacao bean* is the seed of the cacao tree, and is used to make
   cocoa solids and cocoa butter.  This is the basis of chocolate, among
   other foods.

   You can read more about cacao [on Wikipedia][wiki].

   [wiki]: https://en.wikipedia.org/wiki/Cocoa_bean

For posts, the slug will be prepended with a ``/YYYY/MM`` slug when built.
For pages, the slug is relative to the root of the web server.

The following directory structure is used (and generated by ``cocoa init``)::

   (source folder)/
      pages/
         (you can organise this folder however you like)
         about.md
         contact.md
         ...
      posts/
         (likewise, you can organise this however you like)
         (Hot Chocolate will find any Markdown files in the tree)
         an-interesting-story.md
         another-interesting-story.md
         the-final-part-of-the-story.md
         ...
      static/
         (this directory structure is copied directly into the build root)
         aztec-sculpture.jpg
         cacao-beans.png
         personal/
            contact-photo.tiff
         ...
      style/
         (a custom.scss file in this directory will override the base styles)
         custom.scss
      templates/
         (templates in this directory replace the base templates)
         base.html
         ...
