JavaScript MVC framework