hross.net
tech + caffeine = blog

Charity Campaign (building a node.js web app)

Over the past month or so I’ve been putting together a node.js application for fun. The goal was to get some “real world” development experience with node.js and mongodb, figure out what the challenges are (is event oriented programming hard? how will I live life without a traditional RDBMS?) and build something people might actually use.

To wit: Charity Campaign… an application for tracking charity drive donations. The basic concept is to have teams of users submitting various items, assign bonuses to those users based on what they submit, give some basic security/management and display stats.

The idea isn’t new, other people I know have written Google App Engine applications for it, but its a lot easier to focus on a niche you know than make up a new one for the purposes of writing software.

Without further ado, here are some of the pieces/concepts I used to build the application:

node.js packages

concepts/info

The vision media samples were uber helpful in learning how to use express. The mvc sample is the basis for my routing framework.

Stackoverflow was useful for finding configuration management information.

Found a good csv parsing starting point (ended up hacking this code to bits, but the basics and the regex are there).

Twitter recently released boostrap and it seemed cool so I converted the user interface to use it (previously I was using some free html template or other).

false starts

Geddy looked like a good MVC starting place, but development appears to be halted so I didn’t get far.

Mongoose looked cool, but seemed a bit heavy and constrictive. It probably would have helped with data validation and error handling, though.

I initially started with couch-db and cradle, but I didn’t care about the replication or json consumption features and generating unique integers for slugs started to become a PIA.

The mongodb tutorials were much more accessible and accommodating.

summary

Hopefully this application actually gets used at some point. Even if it doesn’t, building and committing it to github has been a satisfying experience in and of itself.

Fork me on GitHub