Eu uso a arquitetura sugerida pelo NestJs. Acredito que seja a melhor para dar manutenção, principalmente em projetos grandes.

segue um exemplo: https://github.com/dev-Raffa/CMS---blog

Olha a branch making