A really really simple static site generator focused on short posts (droplets) that feature an optional image and text-based content.
Process all .yaml or .yml files in <SOURCE_DIR>, using templates in a ./templates directory, writing the processed .html files to <OUT_DIR>:
./spindrift -s <SOURCE_DIR> -o <OUT_DIR>Process all .yaml or .yml files in <SOURCE_DIR>, using templates in a specific <TEMPLATE_DIR>, writing the processed .html files to <OUT_DIR>:
./spindrift -s <SOURCE_DIR> -t <TEMPLATE_DIR> -o <OUT_DIR>A droplet is spindrift's concept of a single "post". Droplets are YAML files with only four top-level properties
titlemetaimage(optional)content(optional)
The meta and image properties are objects themselves
The meta property contains metadata about the droplet, including the author, post date, and any user-provided tags for the post:
- the
authorproperty is required (in the future, this property should be configurable at the top-level spindrift configuration). - the
tagsproperty is optional, and represents a list of tags that apply to the droplet. These tags can be used within meta tags in the HTML, or displayed within the post itself. In the future, the spindrift index will contain sub-indices or post counts for each tag. - The
dateproperty is optional and corresponds to the date of the post. The droplet index page can be sorted by date if you prefer a chronological posting order. This property accepts a date inYYYY-MM-DDformat.
The image property represents a single image associated with the given post, and contains three subproperties:
- The
srcproperty is required and should be a relative or absolute path to the image. If a relative path is used, it should be relative to the location of the droplet's .yaml file. If theimageproperty is present at the top level of the yaml document, it must have asrcsubproperty. - The
altproperty is optional. This property accepts a string or yaml block text and is intended to be used for alt text or a caption for the image.
title: Example Drpolet
meta:
author: John Q Spindrift
tags:
- sample
- example
- spindrift
date: 2022-01-01 # YYYY-MM-DD format support only
image:
src: ./images/some-image.png # path relative to this file, not from where the `spindrift` command will be run
alt: >
This is some alt text!
copyright: John Q Rightsholder
content: >
Here is where the main content of your post can go. Spindrift supports **bolded** text, _italicised_ text, and [links](https://google.com) in markdown format.
Newlines in the content will be preserved in the rendered HTML, wrapped by a new <p /> tag.Sprindrift uses tera templating to place the parsed droplet files and spindrift configuration into the generated HTML. Tera is similar to Jinja2, and supports much of the same syntax. Eventually, some defalut templates will be available.
Currently, spindrift expects a single droplet.html template within the provided templates directory (this defaults to ./templates).
This template will be used to render each individual post/droplet to HTML.
These rendered droplets will be written to the directory provided via the -o/--out-dir argument.
In the future, an spindrift.html template will be used to render the post index.
- Default templates within the project source so that a run of the program without any templates still succeeds
- CSS support
- Project-level config so that properties like
authorcan be set for all droplets - Markdown support in text content
- S3 or other storage backends for images
- Basic themeing framework for custom css
This project is licensed under the GPL v3, the text of which can be found in the LICENSE file at the root of this repository. A plain-text version of this document can be found on the web here. A copy of this license must be distributed with this application, and source code must be made available for any derivative works.
This project relies on code licensed under the MIT License, which is GPL-compatible.