Zen-like blogging interface for Jekyll (login: admin/admin)
Switch branches/tags
Nothing to show
Clone or download


Pagoda Build Status Code Climate



Zen like blog editor for your Jekyll blog, heavily inspired by Svbtle and Obtvse.


Dashboard http://cl.ly/image/2u0L362v1L1N/Home.png

Editor http://cl.ly/image/1u2w2l2F0w1e/Pale%20Blue%20Dot.png

Fullscreen editing http://cl.ly/image/0b3Y101Y3g0A/Screen%20Shot%202013-05-14%20at%2011.57.45%20PM.png

Edit YAML Data


Mobile Dashboard and Editing



Installing locally

Two commands, one for installing, another for running.

  gem install pagoda-jekyll
  pagoda .


Running it on Heroku


  1. Heroku
  2. Git
  3. Your Jekyll Repo
git clone https://github.com/alagu/pagoda
cd pagoda
heroku create
bundle exec rake heroku

Default YAML

Each post created with pagoda will have a default yaml data. To modify it, create a _default.yml in your jekyll repository and commit it.

Deploying on your own server

I use basic http authentication in real world use. I've deployed through nginx + unicorn. There could be easier deployment than this.

This is still not well organized, but the setup works.

Create sock and pid folders

mkdir -p tmp/pids
mkdir tmp/sock

Your unicorn configuration (unicorn.rb):

pid "./tmp/pids/blog-admin.pid"
listen "unix:./tmp/sock/blog-admin.sock"
ENV['blog'] = '/path/to/your/jekyll/blog'

Script to start Unicorn (start.sh):

cd /path/to/pagoda
rvm use 1.9.3
unicorn -c unicorn.rb  -D

Note: This should be run as bash --login start.sh

Create htpasswd file for authentication

htpasswd -c /path/to/httpasswd/file alagu
New password: <enterpasswd>
Re-type new password: <re-enterpasswd>
Adding password for user alagu

Nginx configuration

myblog.com shows the generated blog and myblog.com/admin pops up a http authentication for your admin.

upstream unicorn_server {
   server unix:/path/to/tmp/sock/blog-admin.sock;

server {
        server_name myblog.com;

        listen 80;

        location / {
           root  /path/to/your/jekyll/blog/_site/;

        location /admin {
                auth_basic "Restricted";
                auth_basic_user_file /path/to/htpasswd/file;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://unicorn_server;


I get ArgumentError - invalid byte sequence in US-ASCII

Set localte to UTF-8

export LC_ALL=en_US.UTF-8