I took this project as an opportunity to learn recent web development techniques. This is the list of buzz words I've used:
- Durandal (it uses jQuery, KnockoutJs and RequireJs) for wiring up the application
- Bootstrap for styling
- Azure Mobile Service with SQL database for backend
- Grunt for all the boring repetitive development tasks
- Bower for managing web packages
- T.S.T. for testing SQL queries
- Sublime as text editor - I wanted to know whether it can replace my Vim
First, I used Bower to download Durandal and Bootstrap and prepared some basic Grunt configuration (run web server for development). Then, I dived into Durandal and learned how to structure the application. I tried to scaffold the app structure with existing Durandal's Grunt configuration but eventually, I created everything from scratch using the scaffolding structure as a tutorial. One learns more with this approach.
Having basic app structure (2 pages wired together) and grunt configuration, I created my first Jasmine test. I wanted to practice TDD for development but I found out that it does not work well for me. I did not have any clear vision how things would work and I did a lot of changes during the development. That's why I have just classic unit tests. Once I am satisfied with a feature, I create unit tests for it to make sure I won't break it in future.
Note at the end: web technologies change rapidly. Today, instead of Durandal, I might use just Knockout 3 based on Steve Sanderson NDC presentation: Architecting large Single Page Applications with Knockout.js.