The JavaScript blog.


mac node modules http native proxy

Node Roundup: Tint, Redbird

Posted on .



Desktop apps built with node-webkit or similar technologies are on the rise. The idea is seemingly simple: package the Node runtime along with a small program that runs your Node web app as if it's a native application.

Tint is an alternative. It uses a modified version of Node that bridges to native components, so you can actually write JavaScript that creates native Mac windows, buttons, web views, dialogs, and more.

It's created by a company called True Interactions, and is MIT licensed. If you're an Objective-C developer you might like to check out Main_mac.mm, because this is where the authors have successfully integrated Objective-C++ with Node's event loop.

I built it from source and created a quick test application this afternoon to see what the API feels like:


var Window = require('Window');  
var Button = require('Button');

var mainWindow = new Window();  
var button = new Button();

mainWindow.title = 'DailyJS';

button.title = 'Hello';  
button.addEventListener('mousedown', function() {  
  button.title = '^_^';

button.addEventListener('mouseup', function() {  
  button.title = 'Hello';


  priority: 'required',
  relationship: '=',
  firstItem: button,
  firstAttribute: 'top',
  secondItem: mainWindow,
  secondAttribute: 'bottom',
  multiplier: 0.0,
  constant: 0.0

setInterval(function() {  
  button.title = Math.random();
}, 1000);

I ran the script with ./build/Release/tint example.js and got a window with a button. I wrote this script by looking at the tests to see how the API works.

I think this is a cool project and I'd really like to make a real Mac application with it, but I'm not sure how to actually distribute an application bundle that people can easily install. I'll keep playing with it and write a longer tutorial if I discover anything.


Redbird (GitHub: OptimalBits / redbird, License: BSD, npm: redbird) by OptimalBits is a reverse proxy for dealing with dynamic virtual hosts, load balancing, proxying web sockets and SSL encryption.

var proxy = require('redbird')({port: 80});

// Route to any global ip
proxy.register('optimalbits.com', '');

// Route to any local ip, for example from docker containers.
proxy.register('example.com', '');  

The documentation includes a full SSL example, and the authors are planning support for load balancing and IP filtering.