I’ve got a little side project that I’m working on. I have an app at track.couchjitsu.com. It tracks how much time I spend training Brazilian Jiu Jitsu. It tracks when I go to conditioning, technique, sparring or judo. It actually will track anything. I wrote it about a year ago. It’s fairly simple in its current form. It’s a .Net backend with one Angular page, and then a couple Razor pages. It was an app I wanted, and also a reason to use Angular.
I’m currently rewriting it using a MEAN stack (Mongo, ExpressJS, NodeJS, Angular.) I’m planning on adding some features to it, and also making it a true SPA.
There are quite a few generators out there. I can use Yeoman and have a template up and running by typing yo angular in my terminal. I could also use something like mean.js or mean.io. Both of those are really great. You can have a MEAN app up and running in a matter of minutes (seconds?) They have a nice project structure set up, hooks in place for Passport, a social-sign-on library.
I’ve created sample projects with all 3 methods. Sure enough from installing to having a decent looking UI on my screen was only a minute or two. They have some really nice architecture as well. Patterns I probably wouldn’t have thought of myself. So why am I not using any of these on my side project?
The short answer is “I want to know what I’m doing.” There are a lot of things that I didn’t have to do with those projects, they just magically worked. It made me realize that I wasn’t really developing with node an angular, I was filling out a template. I wasn’t being forced to make decisions for myself, so I didn’t necessarily know what was a good decision or a bad one.
I don’t anticipate doing this every time. For me, it’s more of a one-time-only kind of event. Understand how to set up cookies, or how to handle basic routing, etc. Once that’s established, then I can go back to one of those templates, find the one that fits best with me and focus on writing the application. But this time, I need to focus on the mechanics of node and Angular.