Skip to content

CoolTowel Reference Architecture

hasith edited this page Jul 24, 2013 · 13 revisions

History

During past few years, we have been refering/experimenting several reference architectures for some software "Product" development projects. Needless to say that, "Product" development is vastly different to other deciplines such as bespoke or enterprise application development.

After completing few projects, we recognized the gap of a robust reference architecture for building a modern software product. As a result, CoolTowel was born!

The CoolTowel reference architecture depicts several important aspects an architect should consider in creating a stable arhitecture for his/her next generation Product suite.

Note: The name 'CoolTowel' is inspired by John Papa's excellent work with the HotTowel template (http://www.johnpapa.net/hottowel/).

What is this based upon?

The future of modern technology stacks

  • Entity Framework 6 Beta
  • ASP.NET MVC 5 prerelease
  • Durandal 2.0 Beta

Industrial standard tools

  • Twitter Bootstrap
  • KnockoutJS
  • RequireJS
  • BreezeJS
  • Toastr
  • and more...

What do you get with it?

Data Access Layer

  • Repository and Unit of Work based Data Layer
  • Generic repository base classes for CRUD operations
  • EF reporitory initialization with seed data

REST API Layer

  • OData based REST API with advanced query support ($expand, $filter, etc.)
  • Generic controller base classes for data operations over REST

HTML5/JS based Client Frontend

Sample application demonstrating technology stack integration

  • Server calls via a common DataService
  • Browser history/routing/bookmarking
  • Patterns for elegand knockout bindings
  • Complex components with child components sharing the model
  • User notifications with toastr.js

Durandal 2.0 Beta framework for

  • Component lifecycle management
  • Routing and navigation
  • Dialogs, Events
  • Widgets
  • and more...

Integration Tests

  • Generic Integration Tests for Data Access Layer with isolated database files (repository tests)
  • Generic Integration Tests for REST API with a self hosted server (controller tests)

What's comming up?

  • Multitenancy and cloud deployment support
  • OAuth based security
  • EF migration support
  • UI improvements such as Progressbar, etc.
  • Form factor responsiveness
  • Web optimization support
  • Localization support
  • More samples (REST API with navigation properties, REST custom actions other than CRUD)