# 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). ### 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)