Seattle Startup Weekend 2012
I used Node.JS, Express and MongoDB to create the back end for Seattle Startup Weekend group TableSurfing.org.
On Friday night, Sheikh Shuvo presented the idea of building a tool that allows people to meet local chefs in their area as well as show off their own cooking skills. The idea got a lot of support, and a ten person team formed out of it. We ended up with three developers, two graphic designers, four business/marketing people and Sheikh. We were warned of some of the issues with a big team having to do with the limited time of the event, but I didn't notice any of those issues arising in my work. We all had a pretty tight focus on what was important and got done everything we could.
Saturday was a beast. I got a development system going both on my own system and an EC2 Instance, then dove in. I set up MongoDB and made some models to manipulate via Mongoose. I set up Express and made the routes for all the actions that will be happening (user profiles creation/viewing, event creation/viewing/searching). My codevelopers Ash and Umesh made some Jade templates and CSS styles to match our designers' mockups on the front end. After we were kicked out at midnight, I plugged away at the Everyauth plugin to implement Facebook connectivity.
Two hours of sleep later, I was back in on Sunday, fixing bugs and putting out fires and making a solid demo. Our marketing side was doing all sorts of things, from emailing professional chefs to hitting the streets asking others about the idea.
Here is our presentation from Sunday night (thanks to Steve Seow for recording). My cameo is about two and a half minutes in:
It's got a long way to be useful, from both a development and a marketing perspective, but I'm excited to carry this forward to a working product. I spent Sunday night exhausted but unable to sleep due to the amount of awesome I had just experienced.
The hardest part of the event was getting all the bugs out to have a working demo by the end of Sunday. I still prefer that to street contacting, which our business team did great at.
What brought me the most joy was the simplicity of adding Twilio to the project. I had made a little snippet that sent a text message through the Twilio REST API earlier, and dropping it in brought almost instant results. For the tech-types, here's the code:
[javascript title="twilio.js"]
var https = require('https');
var accountSid = "AC********************************";
var authToken = "********************************";
var API_SERVER = 'api.twilio.com';
var API_VERSION = '2010-04-01';
var from = "+18889990000"; // Twilio Verified number
exports.sendText = function(to, body, cb){
var postData = "To=" + to + "&From=" + from + "&Body=" + body;
var options = {
host: API_SERVER,
port: 443,
path: '/' + API_VERSION +"/Accounts/" + accountSid + "/SMS/Messages",
method: 'POST',
auth: accountSid + ':' + authToken,
headers: {"Content-Type":"application/x-www-form-urlencoded",
"Content-Length":postData.length}
};
var req = https.request(options, function(res) {
res.on('data', function(d) {
return cb(null, d);
});
});
req.write(postData); // Write the body
req.end();
req.on('error', function(e) {
console.error(e);
return cb(e, null);
});
};
[/javascript]
I think there's a node.js helper library out now, so I would recommend that if you want all the features.