How to create a scalable and maintainable front-end architecture