Tumble Manager's Defining Features

The system should have the following characteristics:

  • Statically generate the site, so that no server-side dynamic content needs to be generated upon request.

  • Allow content to be queued for publication, possibly using cron and helper scripts. The software, not the editors, should manage as much of the content publication work flow.

  • Every piece of content should have a "type," (e.g. "quote," "transcript," "link," "image") and this type should be reflected both the way it's presented (i.e. templates) and in the logic that controls the sorting of the items in the publication queue.

  • Written in CommonLisp: the required tools exist, the language is quite fast particularly with the (likely) unique data types that this project will entail, a popular static site compiler that does something powerful might be good for CL, and I want to.

  • On build, only that content which has changed will need to be generated: the specific page for the new post, the archive of all past posts, and the displays of the most recent posts.

  • There are three publication flow directories:

    • drafts: all content that is not in the publication queue. Notes, unfinished posts of any kind, pending posts, etc. The system should ignore these posts.

    • queue: this directory contains all posts which are ready for publication but have not been published.

    Each post defines for itself (either by file naming convention) or by some sort of YAML-like header: its post type, some sort of "post slug" to be used in the URL, and in the file the content of the post.

    • published: the "build" directory, this contains all of the published content, and it's from this directory that the website is rebuilt (when required.) Files in this directory need some sort of sequence code. Either a time stamp of some sort of sequential numbering starting at 1, perhaps in hex.
  • There are three non-publication flow directories:

    • includes: files in this directory and within its hierarchy are copied directly to the production site. JavaScript (if needed,) images, CSS, and so forth.

    • templates: lisp files which provide templates with which the system generates the site.

    • static: pages here use templates and require some generation by the manager, but are not part of the content workflow. Pages located underneath this hierarchy are either generated and copied in place (which appropriate modification to the web server configuration to re-write URLs) or the hierarchy below this directory is merged into the root of the publication directory.