Return-Path: X-Original-To: apmail-couchdb-user-archive@www.apache.org Delivered-To: apmail-couchdb-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0564B2DD0 for ; Thu, 5 May 2011 19:45:20 +0000 (UTC) Received: (qmail 29708 invoked by uid 500); 5 May 2011 19:45:18 -0000 Delivered-To: apmail-couchdb-user-archive@couchdb.apache.org Received: (qmail 29649 invoked by uid 500); 5 May 2011 19:45:18 -0000 Mailing-List: contact user-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@couchdb.apache.org Delivered-To: mailing list user@couchdb.apache.org Received: (qmail 29637 invoked by uid 99); 5 May 2011 19:45:18 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 05 May 2011 19:45:18 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of johnsson.axel@gmail.com designates 209.85.214.52 as permitted sender) Received: from [209.85.214.52] (HELO mail-bw0-f52.google.com) (209.85.214.52) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 05 May 2011 19:45:12 +0000 Received: by bwj24 with SMTP id 24so3385601bwj.11 for ; Thu, 05 May 2011 12:44:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=s0wiR78U84fv8qNwJaZb19n3jeHuf1486QxcXsh6iVk=; b=PMG+qs9VB8hL/54Oew4ZWET44DZnsS8DamFec/FyCzfIb8un4A4cUw14YeR+NdRh0v KH7md86sNxa6ehiv+crViODabIg/yMk0c1LAhKKWFtsq9jZ12oFlnwl0si02rwjN2jLy Vab2QzxQNoNFj3l+NQdMrpe1315ftsBGx5raE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=IH1dAno7ZoRJ0gSrf9Yjuz3r4nYFR/rWZk47JQCnd1AST0RKflpPVmIFfX4hYI7Wkg VVi5QrEqH4NIh4L+P2QJWYJJyLCsI6zkVTzgeDci3eHLgZZdeJhbwMXMPyx15QBH5tm6 Z5WlilWCWTsJ83NBrweFmFhASJ1c9kJmhl1vk= MIME-Version: 1.0 Received: by 10.204.135.211 with SMTP id o19mr1975193bkt.63.1304624690728; Thu, 05 May 2011 12:44:50 -0700 (PDT) Received: by 10.204.6.20 with HTTP; Thu, 5 May 2011 12:44:50 -0700 (PDT) Date: Thu, 5 May 2011 21:44:50 +0200 Message-ID: Subject: Armrest - Another way of doing CouchApps From: Axel Johnsson To: user@couchdb.apache.org Content-Type: multipart/alternative; boundary=0015174c0f8241920704a28c9ba1 X-Virus-Checked: Checked by ClamAV on apache.org --0015174c0f8241920704a28c9ba1 Content-Type: text/plain; charset=UTF-8 Hi everyone on the CouchDB mailing list! I'm working on a project that I call Armrest. The goal is to make it even simpler to create and develop CouchApps. I borrow many ideas from Sinatra the Ruby web framework. Just like Sinatra uses an app file, Armrest also does, in this file all CouchDB views are defined, routes, and other preferences. For templating it's Mustache, with separate view and template files. An example route: get("/", function(req, res) { res.render("index", { view: "by_title" // CouchDB view }); }); An example project directory: app.js public/ // Attachments templates/ views/ Take a look at Github: https://github.com/axeljohnsson/armrest --0015174c0f8241920704a28c9ba1--