bamboo: A simple blog middleware on hack

[ library, web ] [ Propose Tags ]

A simple blog middleware on hack

[Skip to Readme]


  • Bamboo


Maintainer's Corner

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 2009.4.22, 2009.4.23, 2009.4.25, 2009.4.26, 2009.4.27, 2009.4.30, 2009.4.50, 2009.4.52, 2009.5.13, 2009.5.18, 2009.5.18.1, 2009.5.18.2, 2009.5.19, 2009.5.22, 2009.5.23, 2009.5.27, 2009.6.6, 2009.6.8, 2009.6.9, 2009.6.25, 2009.8.16, 2009.11.1, 2010.1.1, 2010.1.26, 2010.2.25
Change log
Dependencies base, base64-string, bytestring, cgi, containers, data-default (>=0.2), directory, filepath, gravatar (>=0.3), hack (>=2009.5.19), hack-contrib (>=2009.5.19), haskell98, hcheat (>=2009.5.13), mps (>=2009.5.13), network, old-locale, old-time, pandoc, parsec (>=2), parsedate (>=3000.0.0), process, rss (>=3000.0.1), time, tokyocabinet-haskell (>=0.0.5), unix, utf8-string (>=0.3.3), xhtml, zlib [details]
License LicenseRef-GPL
Author Wang, Jinjing
Maintainer Wang, Jinjing <>
Category Web
Home page
Uploaded by JinjingWang at 2009-05-19T01:55:43Z
Distributions NixOS:2010.2.25
Downloads 20874 total (10 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2017-01-01 [all 8 reports]

Readme for bamboo-2009.5.19

[back to package description]

Bamboo: a simple blog middleware on hack

Bamboo is a port of Panda, but runs on top of Hack. It's an experimental project but quite portable.


plain text as data source

|---- blog
|     |---- 08-09-01 first post
|     |---- 09-09-02 learn javascript.html
|---- tag
|     |---- programming
|     |---- funny
|---- static
      |---- About

simple config

blog_title    = C大调
blog_subtitle = 野猫不吃薯片
host_name     =
author_email  =

navigation    = About
per_page      = 7
sidebar       =
favicon       = bamboo_icon.png

hacker friendly

  • posts are in plain text
  • SCM for publishing / data managing ( not really a feature, but a design goal from the beginning )
  • blindly follows the KISS principle from code to UI: be a simple blog, no more no less



My blog source is available as a git repo:

git clone git://

Or browser online

Note: This blog is using the Kibro handler. It's running under lighttpd and in fcgi. Definitely more robust, but require some set up work.


jinjing's blog config file

Install in 3 steps

1. tokyo-cabinet (used for caching)


port install tokyocabinet


yaourt -S tokyocabinet

other distro

Just find this tokyo-cabinet package and install it :)

2. Bamboo Middleware

update cabal

cabal update

install bamboo

cabal install happy
cabal install rss --reinstall
cabal install bamboo

3. Pick any hack handler


cabal install hack-handler-happstack
get a starter kit ( template )
mkdir myblog
cd myblog

# get a template to start
git clone git:// db
create an entry point

put this into Main.hs

module Main where

import Bamboo
import Hack.Handler.Happstack

import Hack.Contrib.Utils
import Hack.Contrib.Middleware.ContentType
import Hack.Contrib.Middleware.ContentLength
import Hack.Contrib.Middleware.ShowExceptions
import Hack.Contrib.Middleware.Static

import qualified Hack.Contrib.Middleware.Head as H

default_content_type = "text/plain; charset=UTF-8"

middleware_stack = 
  [  dummy_middleware

  -- completeness
  ,  content_length
  ,  content_type default_content_type

  -- debuging
  ,  show_exceptions Nothing

  -- optimization
  ,  H.head

  -- static serve
  ,  static (Just "db/public") ["/theme", "/images", "/plugin", "/favicon.ico"]

  -- real app
  ,  bamboo

app = use middleware_stack dummy_app

main = run app
ghc --make -O2 Main.hs

It should be running on now.


Install Kibro
cabal install kibro
cabal install hack-handler-kibro
Install lighttpd 1.4.19 (used by kibro)
tar zxfv lighttpd-1.4.19.tar.gz
cd lighttpd-1.4.19
./configure --prefix=$HOME
make install

make sure ~/sbin is in your $PATH.

You also need spawn-fcgi in your path. I don't remember how I got mine, but it should come with lighttpd somewhere ...

# bamboo is a kibro project
kibro new myblog
cd myblog

# get a template to start
git clone git:// db
sh db/extra/scripts/
kibro start

It should be running on now.