This project aims to be a fairly simple skeleton project built on top of the Locomotive framework for Node.js. It's mostly a learning exercise as I play around with Node, but maybe someone will find it useful. I couldn't find a good starting project that already included a template engine, user authentication, and other things that most dynamic Web apps need.
I'm trying to make some effort to give a fairly complete starting point, so a lot of my opinions have been injected on structure and library choice have been injected along the way. But if you like my opinions, then this might be a good starting point for you :)
To get started, you'll need a working copy of MongoDB.
By default, the app will connect to a database named test
on localhost
, but you can change this by editing config/environments/development.js
.
Once MongoDB is up and running, the following should suffice after cloning the repository:
npm install
npm start
Test coverage is currently very minimal, but more tests are in the works. You can run tests with npm test
.
You can lint the entire project with grunt lint
.
I find it useful to lint the code each time I commit to make sure I don't commit something which doesn't lint.
To do this, just add the following to .git/hooks/pre-commit
and mark it as executable.
#!/bin/sh
grunt lint
Of course you can see dependencies in the package.json
, but here's a brief overview.
- Dust paired with consolidate for templating. If it's good enough for LinkedIn, it's good enough for me
- Mongoose ODM for MongoDB object modeling
- Passport for authentication, currently supporting local authentication with passport-local with Mongoose and bcrypt
- Winston for logging (including default Express logging
- Grunt for some handy build/test tools on the command line
- Vows and should for testing