panda: Simple Static Blog Engine

[ deprecated, library, web ] [ Propose Tags ]
Deprecated. in favor of bamboo

Simple Static Blog Engine

[Skip to Readme]
Versions [RSS] [faq] 0.0,,,,,,,,, 2008.9.19, 2008.9.19.1, 2008.9.19.2, 2008.9.20, 2008.9.28, 2008.9.29, 2008.10.11, 2008.10.12, 2008.10.13, 2008.10.14, 2008.10.15, 2008.10.16, 2008.10.17, 2008.10.18, 2008.10.19, 2008.10.21, 2008.10.24, 2008.10.25, 2008.10.26, 2008.10.27, 2008.11.6, 2008.11.7, 2008.12.14, 2008.12.15, 2008.12.16, 2009.1.20, 2009.4.1
Change log changelog.markdown
Dependencies base, cgi, containers (>=, directory, filepath, haskell98, kibro (>=0.0), mps (>=, network, old-locale, old-time, parsedate (>=3000.0.0), rss (>=3000.0.1), utf8-string (>=0.3.1), xhtml (>=3000.2.0.0) [details]
License BSD-3-Clause
Author Wang, Jinjing
Maintainer Wang, Jinjing <>
Category Web
Home page
Uploaded by JinjingWang at 2008-09-15T11:44:46Z
Distributions NixOS:2009.4.1
Downloads 21404 total (80 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2017-01-03 [all 7 reports]


  • Panda
    • Config
      • Panda.Config.Global
    • Controller
      • Panda.Controller.Application
    • Helper
      • Panda.Helper.Env
      • Panda.Helper.Escape
      • Panda.Helper.Helper
    • Model
      • Panda.Model.Post
      • Panda.Model.Tag
    • Type
      • Panda.Type.Pager
      • Panda.Type.State
    • View
      • Panda.View.RSS
      • Theme
        • BluePrint
          • Panda.View.Theme.BluePrint.Helper
          • Panda.View.Theme.BluePrint.Post
          • Panda.View.Theme.BluePrint.Search
          • Panda.View.Theme.BluePrint.Static
          • Panda.View.Theme.BluePrint.Tag
          • Template
            • Panda.View.Theme.BluePrint.Template.Body
            • Panda.View.Theme.BluePrint.Template.Footer
            • Panda.View.Theme.BluePrint.Template.Header
            • Panda.View.Theme.BluePrint.Template.Sidebar
            • Panda.View.Theme.BluePrint.Template.Template


Maintainer's Corner

For package maintainers and hackage trustees


Readme for panda-

[back to package description]

Panda static blogging engine

Sample file db structure

|---- blog
|     |---- 08-09-01 first post
|     |---- 09-09-02 learn javascript
|---- tag
      |---- programming
      |---- funny


  • Blog entries are stored locally in markdown format ( can be changed easily with more hacking )
  • Remote server is a mirror of local repository
  • No server side API for publishing / editing, just use Darcs, Git or any SCM
  • No need to find external hosting of your videos, images or sound. Put them in public folder ( still managed by SCM if you wish )
  • Embed any HTML snippets
  • Statically typed HTML combinator = valid html
  • Based on Kibro
  • Freshman level MVC design

Quick Demo

It powers my blog ;)

Note: the demo might run on an experimental branch, so differences from the cabal version could occur.


Panda is in its early stage. I got tired of importing / exporting blogs when switching blogging platforms, I needed a way to not be bounded to any service API, and that's the main design goal for Panda. There's no theming yet (except that you wish to hack the source).

The main benefit is that if I ever wanted to stop using Panda, all my blogs and resources are in manageable states.


install lighttpd

install panda

cabal install panda


# panda is a kibro project
kibro new myblog
cd myblog

# get a template to start
rm -r db; rm -r public
git clone git:// db
sh db/scripts/


kibro start

It should be running on now.

Since Panda is based on Kibro, it helps to read how Kibro works.


Install Ruby / Rake, then rake -T to see a list of helper commands.


Edit db/config/site.txt

blog_title   = My shiny blog
host_name    =
author_email =

Restart required. (hint: rake r)


The template db is just a starting point for you to experiment on. However, I would encourage you to keep your own db in your own SCM, that way, you will never lose your data and never have to care about application logic again.

There are many things could be done. Whatever there will be, the key idea is simplest data / folder structure, absolutely no parsing, no xml, no code is data like and stuff :)


Another way to get Panda running with source is:

# clone the source
git clone git:// myblog
cd myblog

# get a template to start
git clone git:// db

# manually adjust path information for lighttpd
# edit first 6 lines of app/lighttpd/lighttpd.conf to match your path

# manual staging
ln -s db/public public

# run
kibro start

I'm heavily using the MPS package which introduces things like

reject, join, belongs_to, match, gsub

and so on.