That is not an easy answer, and like many other answers related to software development, it depends. We follow the concept of Evolutionary Architectures.
We picture your project as a set of different modules, each module can vary in complexity and requirements. Therefore each module can have a proper architecture that best suits it. Despite that, we have to think about architecture as living beings, so they will adapt and change during the project.
Choose a design for the whole system upfront usually is not the best idea. We would recommend you to picture your system as this set of modules and start to choose a design that best addresses each module needs, always favoring simplicity.