Design an application based on a given set of requirements: what tech stack would you choose and why?