Clientside JavaScript framework