-
Notifications
You must be signed in to change notification settings - Fork 22
Porque tantos módulos no projeto?
Pessoal, a ideia dessa página é apresentar um pouco sobre a arquitetura do StreamPlayerApp. Como vocês já sabem, nosso projeto é multi-modular (vários módulos). Você deve estar se perguntando 🤔:
-
Mas como esses módulos se comunicam entre si?
-
Qual é a responsabilidade de cada módulo?
-
Qual é a vantagem da arquitetura multi-modular?
Se você quer essas respostas, leia essa página até o final! 🤗
-
Nome dado para funcionalidades base, compartilhadas entre toda a aplicação.
-
Por exemplo, o
core-shared-uié um módulo que define recursos compartilhados de UI, caso você tenha um componente de botão⏏️ que se repete em várias telas, esse componente é um candidato a fazer parte desse módulo 💡.
-
Nome dado para funcionalidades de negócio.
-
Por exemplo, o
feature_list-streamsé um módulo que define a funcionalidade específica de listar streams.

Conforme o diagrama acima, podemos ver: grupo de módulos do tipo core, grupo de módulos do tipo features e o módulo app.
O grupo core agrupa todos os módulos de tipo core, eles podem ser utilizados por qualquer módulo da aplicação. No diagrama percebemos que o módulo principal da aplicação (app) depende desse grupo de módulos, como também o grupo de módulos feature.
O grupo feature agrupa todos os módulos de tipo feature, eles dependem do módulo core. É importante aqui perceber que, o módulo feature não conhece o módulo app.
Esse é o módulo principal da nossa aplicação, nele o fluxo inicia. Ele depende do grupo de módulos feature, ele é um indexador de features, responsável por juntar todas elas 🤤 (sem ele nada funciona). Além disso, esse módulo pode também precisar de códigos comuns, os quais são encontrados nos módulos de tipo core.
Nós escolhemos a arquitetura multi-modular, pelos seguintes motivos:
-
Possibilita o crescimento do projeto de forma escalável, cada módulo possui uma responsabilidade definida, o que ajuda a comunidade na hora de criar features 📦 e resolver bugs 🐛;
-
Próximo do que vemos na indústria de software hoje 🏗️;
-
Oportunidade de ter contato com problemáticas como: compartilhamento de dependências, build-logic, cobertura de testes e outras que são bem comuns ao cenário de Arquiteturas Multi-Modulares.