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 (version 1.4.19)](http://www.lighttpd.net/ ) Note: 1.4.20 is bugged for reason still unknown yet. ### 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`) Theme -------- Example blueprint theme in `db/config/theme/blueprint.txt` container = container header = column span-12 first navigation = column span-12 first large main = column span-9 first sidebar = column span-3 last footer = footer css = screen, blueprint-wp, custom js = jquery-1.2.6.min, jquery.getUrlParam, jquery.highlight-2, custom note: `css` and `js` are required to be placed under `db/public/theme/your_theme_name/css` and `db/public/theme/your_theme_name/js`, leave out the file extensions too, since the engine will fill it for you. You can create new themes by adding theme files in `db/config/theme`, and place theme = your_new_theme inside `site.txt`. 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 `ghc-pkg unregister cgi-3001.1.7.0 --user`.