panda-2008.9.28: readme.markdown
Panda - simple blogging engine
==============================
Sample file db structure
-------------------------
db
|---- blog
| |---- 08-09-01 first post
| |---- 09-09-02 learn javascript.html
|
|---- tag
| |---- programming
| |---- funny
|
|---- static
|---- About
Why
----
* Blogs are stored locally
* Write in Markdown, HTML, reStructuredText or even LaTeX format ( Math equations won't render yet )
* 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 )
* Easy to use, just create a file and the engine takes care of the rest
* Extensible through embedding any HTML snippets
* Use `custom.css` for theming
Quick Demo
-----------
It powers [my blog](http://jinjing.blog.easymic.com) ;)
Note: the demo might run on an experimental branch, so differences from the cabal version could occur.
Install
--------
### install [lighttpd](http://www.lighttpd.net/ )
### install panda
cabal install panda
### bootstrap
# panda is a kibro project
kibro new myblog
cd myblog
# get a template to start
rm -r db; rm -r public
git clone git://github.com/nfjinjing/panda-template.git db
sh db/extra/scripts/bootstrap.sh
### run
kibro start
It should be running on `http://127.0.0.1:3000` now.
Since Panda is based on Kibro, it helps to read how [Kibro](http://chrisdone.com/blog/2008/08/06/kibro-haskell-lighttpd-and-fastcgi/) works.
Goodies
--------
Install `Ruby` / `Rake`, then `rake -T` to see a list of helper commands.
Config
-------
Edit `db/config/site.txt`
blog_title = My shiny blog
host_name = yourhost.com
author_email = your_mail@yourhost.com
Restart required. (hint: `rake r`)
Future
------
There are many things could be done. Whatever there will be, the key idea is simplest data / folder structure.
Hacking
--------
Another way to get Panda running with source is:
# clone the source
git clone git://github.com/nfjinjing/panda.git myblog
cd myblog
# get a template to start
git clone git://github.com/nfjinjing/panda-template.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](http://github.com/nfjinjing/mps/tree/master ) package which introduces things like
reject, join, belongs_to, match, gsub
and so on.
If the latest git version doesn't build, try `cabal install cgi`; if still no good, try `cabal update; cabal upgrade` to upgrade haskell packages.