https://github.com/kingcons/coleslaw.git
git clone 'https://github.com/kingcons/coleslaw.git'
(ql:quickload :coleslaw)
Czeslaw Milosz was the writer-in-residence at UNC c. 1992. I used to see him all the time at the Hardback Cafe, always sitting at a two-top drinking coffee, reading, writing, eating chips and salsa. I remember a gentleness behind the enormous bushy eyebrows and that we called him Coleslaw. - anon
Coleslaw is Flexible Lisp Blogware similar to Frog, Jekyll, or Hakyll.
Have questions? Come talk to us on IRC in #coleslaw on Freenode!
Git for storage
RSS and Atom feeds
Markdown Support with Code Highlighting provided by colorize
Currently supports: Common Lisp, Emacs Lisp, Scheme, C, C++, Java, Python, Erlang, Haskell, Obj-C, Diff.
A Plugin API and plugins for…
Static Pages
Sitemap generation
Incremental builds
Analytics via Google
Comments via Disqus
Hosting via Github Pages or Amazon S3
Embedding gfycats
Tweeting about new posts
Using LaTeX via Mathjax
Writing posts in ReStructured Text
Importing posts from Wordpress
See the wiki for a list of coleslaw-powered blogs.
A core goal of coleslaw is to be both pleasant to read and easy to hack on and extend. If you want to understand the internals and bend coleslaw to do new and interesting things, I strongly encourage you to read the Hacker's Guide to Coleslaw. You'll find some current TODO items towards the bottom.
Coleslaw should run on any conforming Common Lisp implementation but testing is primarily done on SBCL and CCL.
Coleslaw can either be run manually on a local machine or triggered automatically on git push to a server. If you want a server install, run these commands on your server after setting up a git bare repo. Otherwise, run the commands on your local machine.
$HOME
directory. If you
want to run multiple blogs with coleslaw, you can keep each blog's
config file in that blog's repo. Feel free to copy and edit the
example config or consult the config docs
to create one from scratch.chmod +x
the
example post-receive hook to your blog's bare repo.
(ql:quickload :coleslaw)
(coleslaw:main "/path/to/my/blog/")
:deploy-dir
. Or “deploy-dir/.curr” if the versioned
plugin is enabled.Now just write posts, git commit and build by hand or by push.
Coleslaw expects content to have a file extension matching the class
of the content. (I.e. .post
for blog posts, .page
for static
pages, etc.)
There should also be a metadata header on all files
starting and ending with the config-specified :separator
, “;;;;;” by
default. Example:
;;;;;
title: foo
tags: bar, baz
date: yyyy-mm-dd hh:mm:ss
format: html (for raw html) or md (for markdown)
;;;;;
your post
Posts require the title:
and format:
fields.
Pages require the title:
and url:
fields.
To omit a field, simply do not have the line present, empty lines and fields (e.g. “tags:” followed by whitespace) will be ignored.
Two themes are provided: hyde, the default, and readable (based on bootswatch readable).
A guide to creating themes for coleslaw lives here.