Naturally, my first app that I built using the MEAN stack was a todo list app.

This app can be accessed at

The following are some of the features of the app:

  • Adding todo list items to specific days
  • Displaying 5 days — by default, one in the past, and three in the future of the current day
  • Highlighting the current day
  • Dragging and dropping todo list items between days
  • Scrolling through days using the arrow buttons
  • Responsive design
  • Finished todo items move to the bottom
  • Edit todo items in place

Basically I tried to create the todo list app that I personally would want to use, and now that it is finished, I have begun using it to keep track of my learning and job search related tasks.

This was the first full-fledged application that I built using the MEAN stack, and I was pleased with how easy and quick it made development. In particular, the speed and efficiency of doing things with Angular is leaps and bounds ahead of the old way that I am used to doing things using jQuery. Writing http services with node and express is simple and intuitive, and adding features like drag and drop and the datepicker to Angular was simple, due to the robust ecosystem of modules that is available.

Another thing that I learned as part of this project was testing using karma and jasmine. I’m ashamed to admit that I have never done unit testing for javascript before, which is something that I knew I should remedy. I followed along with the Angular testing guide and practiced by writing tests for all of the components and services in the Hero Editor example app, and then wrote tests for the components and service in my todo list app. I found that once you get started, writing angular tests with karma and jasmine is fairly simple, and it was satisfying to be able to run the test suite and have that reassurance whenever I made changes. For the next app that I build, I am going to try doing it in TDD style, and see what that is like.

I am still working on coming up with ideas for my next app. I want to do something that involves calling upon 3rd-party APIs and incorporating the results, this time.