Não cometa o erro de pensar que existe uma estrutura universal que funciona para tudo. Até em empresa mudam a abordagem dependendo se estão construindo um app monolítico, um sistema de microsserviços ou uma biblioteca. O que você pode fazer é aprender os princípios comuns e depois adaptá-los ao seu projeto específico, em vez de ficar atrás da última moda dos tutoriais.
A base que funciona quase sempre é dividir o código por responsabilidade: componentes/lógica UI separados da business logic, as chamadas de API isoladas em serviços dedicados, as utilidades em pastas à parte, os testes junto ao código que testam. Se você usa um framework como React ou Vue, aproveite sua estrutura natural e adicione por cima uma organização para arquivos de configuração, constantes, helpers. Se for vanilla JavaScript, você poderia pensar em uma arquitetura em camadas (apresentação, lógica, acesso aos dados) ou em módulos self-contained com propósitos específicos.
O que realmente importa é que seu time (ou você mesmo daqui a seis meses) consiga navegar o projeto sem enlouquecer. Se abre uma pasta e entende na hora o que tem dentro, se o nome dos arquivos te diz o que fazem, se consegue encontrar onde modificar uma feature sem procurar em todo canto, então a estrutura está funcionando. Comece simples, expanda conforme o projeto cresce, e não tenha medo de fazer refatoração das pastas se vir que a situação fica confusa.