README.md

webmachine
==========

This project began at [Basho](http://basho.com), the creators and
maintainers of Riak. Due to the importance of webmachine to the
broader Erlang community, a new organization was formed. Please
contact [@seancribbs](http://github.com/seancribbs) to get involved.

### Overview

[![Build Status](https://travis-ci.org/webmachine/webmachine.svg?branch=develop)](https://travis-ci.org/webmachine/webmachine)

Webmachine is an application layer that adds HTTP semantic awareness
on top of the excellent bit-pushing and HTTP syntax-management
provided by mochiweb, and provides a simple and clean way to connect
that to your application's behavior.

More information is available
[here](https://github.com/webmachine/webmachine/wiki). You can also
read past blog posts about Webmachine
[here](http://basho.com/tag/webmachine/).

### Development

Webmachine is a [rebar3](http://rebar3.org) project.

Running all tests and dialyzer is as easy as

```
make all
```

However, if you'd like to run them separately:

* EUnit: `rebar3 eunit`
* Dialyzer: `rebar3 dialyzer`


If you don't have `rebar3`, you should get it. If you don't want to,
it's downloaded as part of `make all`

### Quick Start

A [rebar3](http://rebar3.org) template is provided for users quickly
and easily create a new `webmachine` application.

```
$ mkdir -p ~/.config/rebar3/templates
$ git clone https://github.com/webmachine/webmachine-rebar3-template.git ~/.config/rebar3/templates
$ rebar3 new webmachine your_app_here
```

Once a new application has been created it can be built and started.

```
$ cd your_app_here
$ rebar3 release
$ _build/default/rel/your_app_here/bin/your_app_here console
```

The application will be available at [http://localhost:8080](http://localhost:8080).

To learn more continue reading [here](https://github.com/webmachine/webmachine/wiki).

### Contributing

   We encourage contributions to `webmachine` from the community.

   1) Fork the `webmachine` repository on [Github](https://github.com/webmachine/webmachine).
   
   2) Clone your fork or add the remote if you already have a clone of
   the repository.

```
git clone git@github.com:yourusername/webmachine.git
```

or

```
git remote add mine git@github.com:yourusername/webmachine.git
```

   3) Create a topic branch for your change.

```
git checkout -b some-topic-branch
```

   4) Make your change and commit. Use a clear and descriptive commit
      message, spanning multiple lines if detailed explanation is
      needed.
      
   5) Push to your fork of the repository and then send a pull-request
      through Github.

```
git push mine some-topic-branch
```

   6) A community maintainer will review your pull request and merge
      it into the main repository or send you feedback.