bamboo: A simple blog middleware on hack

[ library, web ] [ Propose Tags ]
Versions 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 Tue May 19 01:55:43 UTC 2009
Distributions NixOS:2010.2.25
Downloads 9317 total (60 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2017-01-01 [all 8 reports]
Hackage Matrix CI

A simple blog middleware on hack

[Skip to Readme]


  • Bamboo


Maintainer's Corner

For package maintainers and hackage trustees

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.