Projeto do aplicativo Business to Consumer contendo a nova proposta de arquitetura baseada no micro front-end.
A estrutura inicial de pasta e arquivos do projeto ficará da seguinte maneira.
Para que seja possível executar o projeto siga os seguintes passos: Agora é necessário baixar todas as dependências do projeto
make clean
make get
Retorno ao diretorio raiz e execute o comando para gerar os arquivos de white-label passando marca(brand) que será as que etão no diretorio da BRAND, o ambiente(env) que será PRODUCTION ou STAGING e a plataforma(platform) que será ANDROID ou IOS, exemplo:
make pre-action env=AMBIENTE brand=NOMA_BRAND platform=ANDROID
A execução pode ser encadeada
make clean; make get; make pre-action env=AMBIENTE brand=NOMA_BRAND platform=ANDROID;
Agora vá ao diretório minha_app e execute-o.
cd minha_app
flutter run
O minha_app
é o ponto de entrada da minha aplicação, ele irá conversar somente com o CORE que irá acessar os módulos.
Ele irá ter a chamado do runApp()
e as classes referente ao white-label.
void main() {
runApp(
ModularApp(
child: AppWidget(),
),
);
}
O core é o coração do nosso app, ele fará a ponte de conversa entre o base_app e os módulos é nele que estará a configuração das rotas principais e a chamada para o MaterialApp().
class AppWidget extends StatelessWidget {
const AppWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'App B2C',
theme: ThemeData(primarySwatch: Colors.blue),
).modular();
}
}
O commons é o pacote que será responsável por ter toda a funcionalidade que será compartilhado entre todos os módulos, como interceptors, widgets, stores, controllers, design system, etc.
Este e a Commons Dependencies são as únicas dependências que o modulo pode possuir.
Aqui é onde terá todas as dependências do projeto e os módulos pegam suas dependências daqui, desta forma garantimos que todos os módulos utilizam a mesma versão de package Este e a Commons são as únicas dependências que o modulo pode possuir.
Os módulos são as quebras de funcionalidades do app. Eles são responsáveis pelas features do app, cada modulo deve possuir uma e somente uma responsabilidade.
IMPORTANTE: Os módulos são totalmente desacoplados e independente de outros módulos e não podem compartilhar informações entre eles, caso isso seja necessário, colocar no Commons.
Neste diretório ficara todos os pacote que são desenvolvidos internamente