Starting working with new technology/approach always leads to a number of questions. It's my first project on Node&Mongo so I've got a number of questions. For some of them I already have answers. For some - not yet.
1. Should I use Coffeescript or/and TypeScript or/and Dart or/and ES6?
After short investigation Dart and Coffee were rejected. Coffee looks very short and clear but it has his own caveats to learn and its support is one-person-dependent. Dart puts a lot of limitations I don't want to play with. So now main choice is between pure ES6 and TS (which, in reality, is ES + static typing).
2. What testing framework to use
Initially I wrote a minimal back-end code and tried Mocha for it. Before I had enough experience with Jasmine and it was neat and shiny. Mocha haven't won my heart (maybe because I'm in love with espresso). So, I'm going to use pretty common solution:
- Jasmine for unit-tests for both back-end and front-end code;
- Protractor (probably) for e2e (some day)
- Karma as a tests runner
3. Directory structure.
Already chose. Will be described in a separate post.
4. Should I use Grunt/Gulp or leave with npm for now?
5. What should I use to work with MongoDB?
There's a number of plug'n'play modules for Mongo. Initially I tried monk and mongoskin, but then switched to more heavy but more convenient and powerful Mongoose. Additional benefit is it's supported by a json-api node module.
6. Should I use JSON API for storefront?
I like JSON API approach. It looks great, complete, and convenient. But will it fit all my needs? Or maybe my pet doesn't need such powerful toy and there's something easier to start with? All I need is to have easy and straight JSON-messaging between client and server.
7. What Angular version is to use?
I love Angular. I fall in love when first met it in v1.0.5. I like it's declarative approach. I like how it structures an application. So here were no hesitation between Angular and Ember/Backbone/ReactJS/whatever. But the only question for now is - what version to choose? It's a long-term project, so when (if) it will be usable, Angular2 will be stable. On other hand - if now choose a first version, I can make architecture with Angular2 in mind and have additional experience... Still wondering.
To be continued...