絶賛開発中

今こんなのを作っています。

exports.setup = function(site, done){
  site.all('/posts/admin/*',
           oauth.requiredWith('twitter'));

  site.install('posts', function(app){
    var posts = app.model;
    site.get('/',
             $.title('Home'),
             posts.byTag('news'),
             $.render('index.ejs'));

    done();
  });
}

node.js とCouchDB で動く、アプリケーションコンテナ的な何か。

フロントエンドからサーバーサイド、果てはデータベースまですべてJavaScriptでやってやろーじゃん、的な勢いで。

普通にアプリを作るだけならCouchDBだけでもいいんですが、認証情報を持ちたくないので、認証プロセスが Erlang で OAuth 拡張を書くか、アプリサーバーを用意するかの2択になるので、後者を選びました。

site はコンテナそのもので、基本的なレイアウトなどの情報をもつExpress Serverです。あ、Express Server は node.js のWebアプリフレームワーク

で、そこに install コマンドを使って CouchApp 込みの Express Server を追加していくとURIが作られて、アプリケーションが使える。俗に言うContent Management System のプラグインみたいなヤツ。 app.model というのが CouchDB で扱うモデルデータへのラッパーみたいなヤツ。byTag は実際には

 byTag : function(params, options){
    if( typeof(params) == 'string' ){
      params = {
        tag: params
      };
    }
   ...
   return this.bind('view', 'posts/by_tag', params, options);
 }

な感じになっているJSなんです。で、サーバーサイドでは cradle っていう node.js 用のCouchDBクライアントにバインドしているんですが、クライアントサイドでは jquery.couch.js 辺りにバインドするようにすれば node.js なくなっても動き続けるよね? 的なことを視野に入れつつどこまでやれるか。

    site.get('/',
             $.title('Home'),
             posts.byTag('news'),
             $.render('index.ejs'));

の部分をクライアントで動かす方法を考えればいいだけのような気がするんですが。

node.js で使うJavaScript部分も当然CouchDBの中に放り込んでいます。

もうちょっとしたら、ソースを公開というか、これで CouchDB JP ホストできるんじゃないかと、と画策中。