Component based web programming