javascript application design