title: Considering an Erlang web framework to learn and use in production
body: <p>I’ve started learning Erlang a few days ago and it’s definitely a very interesting language and very suitable for web development (back end at least). I am going to experiment and eventually settle with one Erlang web framework to use for my next project. Since Erlang is “<a href="https://www.erlang.org/course/history" rel="nofollow noreferrer">new</a>” is kind of hard to decide which framework to use (i.e. lack of documentations and blog posts). So far my googleing has returned me 3 results and I am wondering anyone who has experience in Erlang (especially Erlang web development) please comment on the pros and cons on each framework and add any missing frameworks.</p>
  
  <p><strong>Project requirement:</strong></p>
  
  <ol>
  <li>Web application</li>
  <li>Database</li>
  <li>HTTPs</li>
  <li>Storing files (e.g. images)</li>
  <li>PDF manipulation</li>
  <li>Dynamic logic comparison (e.g. LHS == RHS etc)</li>
  </ol>
  
  <p><strong>Erlang web framework:</strong></p>
  
  <ol>
  <li><a href="http://nitrogenproject.com/" rel="nofollow noreferrer">Nitrogen</a> (preferred so far)</li>
  <li><a href="http://erlyweb.org/" rel="nofollow noreferrer">Erlyweb</a></li>
  <li><a href="http://github.com/davebryson/beepbeep/" rel="nofollow noreferrer">BeepBeep</a></li>
  <li><a href="http://www.chicagoboss.org/" rel="nofollow noreferrer">Chicago Boss</a></li>
  <li><a href="http://www.erlang-web.org/" rel="nofollow noreferrer">Erlang Web</a></li>
  <li><a href="http://bitbucket.org/justin/webmachine/wiki/Home" rel="nofollow noreferrer">webmachine</a></li>
  </ol>
  
  <p><strong>Erlang database:</strong></p>
  
  <ol>
  <li><a href="http://erlang.org/doc/man/mnesia.html" rel="nofollow noreferrer">Mnesia</a> (preferred so far)</li>
  <li><a href="http://couchdb.apache.org/" rel="nofollow noreferrer">CouchDb</a></li>
  <li><a href="http://www.mongodb.org/" rel="nofollow noreferrer">MongoDB</a></li>
  </ol>
  
  <p><strong>Concrns:</strong></p>
  
  <ol>
  <li><p>Nitrogen</p>
  
  <ul>
  <li><p>JavaScript generation</p>
  
  <p>Since Nitrogen generates and embeddes JavaScript code on to the page which increased the page size. I am not sure if it’s even possible to somehow “separte” the generated JavaScript code from raw html (somehow it can be cached by browser) in order to reduce data transferred down the wire. But I think in general event model and auto wire event is very suitable for application type but not so much for content/public facing type.</p></li>
  </ul></li>
  </ol>