A Component-Based Framework for Visual Web Applications