Não sei se o comentário anterior teve a intenção de te sugerir ir direto para Nest. Dessa forma, só para deixar mais claro, sugiro que estude a organização do Nest. Ele tem um padrão de módulos, onde as funcionalidades são separadas com tudo dentro do mesmo diretório. Ex.: Todos os controllers, models, dtos que manipulam usuários ficam na pasta users. Aí você faz o mesmo com autenticação. O mesmo com produtos etc. Eu nunca gostei do MVC devido a essa questão de juntar os arquivos por tipo e não por área. Quando eu vou iniciar um novo projeto, sempre precisava ficar catando arquivos em um monte de pastas diferentes. Com nest, como tudo esta agrupado por funcionalidade do sistema, você simplesmente pega aquela pasta de usuários e leva pra outro sistema e não precisa de nenhuma outra dependência. Tudo estará ali junto. Hoje eu uso essa abordagem em tudo: api (sendo ou não sendo com nest), frontend (nuxt e vue) e mobile (flutter).

Tecnicamente MVC não usa camadas, então você pode organizar via package by feature que não tem problema, inclusive eu vejo muito o modelo mais clássico de MVC lá do Smalltalk 80, sendo organizado de forma semelhante já que tudo gira em torno do Model.

No meu ver o problema é que MVC serve para estruturar aplicações de interface gráfica, então ele é como você organiza a camada de View do sistema, e não o sistema inteiro, daí quando você começa a ter mais necessidades do que só um CRUD, o back-end que corresponde a metade do Controller, e todo o Model, claramente não cabe dentro de uma camada só sem ficar tudo desorganizado, dessa forma é melhor explorar outras arquiteturas como EBI ou Onion, e implementar organizando usando package by feature ao invés de package by layer como é feito tradicionalmente.

Outra coisa interessante que pode te interessar é Vertical Sliced Architecture que é uma abordagem em cima dessa ideia de package by feature.