https://medium.com/@imranfarooq0306/react-best-practices-for-software-design-and-architecture-87903cce7a9a