Project #1: Todo App with MEAN Stack

Through November and December, my goal is to complete at least one learning project a week. All code will be uploaded to my Github and I welcome any comments!

I’ve started off this learning project (I should come up with a better name, shouldn’t I?) with Scotch.io’s Node & Angular tutorial. (It utilizes a MEAN stack.) My initial starting point was that I wanted to learn AngularJS.

Thoughts

Honestly, I felt the same way learning Ruby on Rails for the first time. I’m a feedback junky — I get a rush when I can get a project up and going, and a quick setup gives me an extra boost. (At the same time, there’s nothing like the elation of struggling with the same problem for hours or days and FINALLY conquering it.)

motherfuckingsorcerer

That feeling…

This was the first time I’d worked with Node, and I liked it. It’s given me a good point to spin off on other learning projects, however, as I want to try pairing Angular with a Ruby backend, or Node with React, to decouple their implementations in my brain.

 

Challenges

The tutorial used Modulus.io for their remote hosted MongoDB instance. Instead of creating another account somewhere to keep track of, I provisioned a new project on Heroku and installed an mLab MongoDB add-on (free in Sandbox mode).

I’m not done with this learning project. The third part of the tutorial upgraded the version of Angular from 1.0.8 to 1.2.4, which doesn’t generate any compatibility issues, but being the overachieving type, I jumped straight to 1.5.8.

BOOM CRASH

Yeah… Thankfully the fix didn’t end up being that difficult.

Original:

// public/core.js

angular.module('crystalTodo', []);

function TodoController($scope, $http) {
...
}

Upgraded:

// public/core.js

function TodoController($scope, $http) {
...
}

TodoController.$inject = ['$scope', '$http'];
angular.module('crystalTodo', []).controller('TodoController', TodoController);

But I was in the part of the tutorial where I’m refactoring and restructuring things, and what worked with < 1.3.x definitely will not work now, so I’m offroading from the tutorial. Which is lovely and exciting!

I had intended to go off script after finishing the tutorial anyway, as I find I learn best when I’m generating my own ideas and code and not following someone else’s. First things first, implementing some tests! Creating tests after the fact isn’t ideal, but I want to do that for the existing app first, and then go TDD for the additional features I want to add. I’m thinking of making it a Momentum clone with user authentication and a calendar that lets you review your completed tasks. Each day on the calendar would have a little count of how many tasks were completed that day, and then you’d be able to drill in to see what they were.