Client javascript framework