# Punch
## A Fun and Easy Way to Build Modern Websites

Punch is a simple, intuitive web publishing framework that will delight both designers and developers.

### With Punch you can...

* Use boilerplates to quickly setup a site. 
* Write minimal templates with Mustache.
* Create flexible site structures with inheritable layouts and partials.
* Define page contents in JSON.
* Use Markdown to write formatted content.
* Use CoffeeScript and LESS if that's your thing.
* Minify and bundle assets before serving.
* Preview changes on the fly, while you develop.
* Set cache headers and compress responses. (play nice with CDNs)
* Easily publish to Amazon S3 or to a custom server with SFTP.

### Wait, There's more...

* Use any data source for content (eg. Relational databases, Document stores or REST APIs).
* Don't like Mustache? Switch to a different template engine of your choice. 
* Write helpers to add run-time behaviour.
* Add custom content parsers, pre-compilers, minifiers and publishers.
* Add hooks to run after generating a page or site.
* Define your own publishing strategy.

### Getting Started

* Download and install Node.js. http://nodejs.org/#download 

* To install Punch, run `npm install -g punch`

* You can create your first site by running: `punch setup mysite`

* Then, go to the `mysite` directory and start the server: `cd mysite; punch s`

* Open your browser and visit: http://localhost:9009

* Follow the steps in hands-on tutorial.

**Note**: If you experience any issues in installing Punch on Windows, please [read this guide](https://github.com/laktek/punch/wiki/Installing-on-Windows).

Alternatively, you can use [Nitrous.IO](https://www.nitrous.io/hack_button?source=embed&runtime=nodejs&repo=laktek%2Fpunch&file_to_open=README) to setup a development enviroment to hack Punch.

[![Hack laktek/punch on Nitrous.IO](https://d3o0mnbgv6k92a.cloudfront.net/assets/hack-l-v1-3cc067e71372f6045e1949af9d96095b.png)](https://www.nitrous.io/hack_button?source=embed&runtime=nodejs&repo=laktek%2Fpunch&file_to_open=README)

### Documentation

For complete documentation on usage & customizations, check the [Punch Guide](https://github.com/laktek/punch/wiki)

### Licence

[MIT LICENSE](https://github.com/laktek/punch/blob/master/LICENSE)
