Skip to content

Crashdown is a simple, file-based web publishing engine. Posts are written in Markdown and URLs are based on your directory structure.

License

Notifications You must be signed in to change notification settings

benrhughes/crashdown

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

10 Second Setup

$> git clone git@github.com:benrhughes/crashdown.git /home/ben/mysite
$> cd /home/ben/mysite && npm install 
$> node /home/ben/mysite/server.js	

Go to http://localhost:3000 in your browser

About

Crashdown is a simple, file-based web publishing engine. Posts are written in Markdown and URLs are based on your directory structure.

For example, the file /home/ben/mysite/pages/2012/04/my-new-post.mkd will have a URL of http://localhost/2012/04/my-new-post.

There is no database involved, which means that you can easily use your version control system of choice to manage and deploy your site.

Motivation

I like writing in markdown, and I like being about to track and move my files around using git. I also have a few sites on self-hosted Wordpress that I wanted to run on something more lightweight. There's plenty of options out there, but none that I found did quite what I wanted. So, I wrote my own. What's the point of being a dev if you don't make tools you like? :)

Demo

This Coding Life is running the latest version of crashdown.

Getting set up

On your server:

$> git clone git@github.com:benrhughes/crashdown.git /home/ben/mysite
$> cd /home/ben/mysite $$ npm install

Optionally:

$> npm install -g forever 

There are some configuration options set in config.json, such as the port that the server listens on.

$> forever /home/ben/mysite/server.js # starts the server and keeps it running

Using forever is completely optional, but it's a nice way to run crashdown in the background while ensuring that it gets restarted should it ever crash. If you'd prefer to not use it, simply

$> node /home/ben/mysite/server.js

Creating a new post

In the root directory there is a node script called newPage, which is a simple helper to create your .json metadata file and a blank markdown file. Run it with

$> node newPage

Setting up git deployment

Follow the instructions in this excellent article.

Testing before deployment

The entire site is contained in the git repository, which means that it can be tested locally before pushing by running node server.js on your local machine, then going to http://localhost:3000 in your browser.

If you want to regularly share your test site with others, you can set up a second instance of crashdown (running on a seperate server, or on a different port on your prod server) and push to it before you push to prod.

Multiple authors

If you're using git, multiple authors are dealt with the same way as git manages source code (ie you can have multiple concurrent editors, but you'll need to merge changes etc).

You can either give everyone direct SSH access to your server to allow them to push to the live site, or set up a vetting process. For example, you might keep a shared 'master' on github or bitbucket that anyone can access, but only certain people have access to push to your prod server.

Load balancing

It is trivial to set up load balancing between servers with, for example, nginx. Just push to each balanced server whenever you make a change - because the site is essentially stateless you don't have to worry about replication etc.

About

Crashdown is a simple, file-based web publishing engine. Posts are written in Markdown and URLs are based on your directory structure.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published