Este projeto visa o aprendizado de algumas boas práticas no que tange a construção do modelo de monorepo e a oportunidade de estudar padronização de uma arquitetura de projeto com nestjs, além de lógica de programação com python, boas práticas do framework flask e o consumo de bibliotecas para ajudar no processamento dos dados inseridos.
O monorepo, pode conter múltiplos pacotes dependendo dos requisitos da aplicação. Neste projeto estão inclusos estes componentes:
shared
: Compartilha os arquivos estáticos entre servidorespackages
:api
: NestJS Api server (depende deshared
+python
)python
: Flask server (depende deshared
)ui
: React components, storybookweb
: Next app (depende deui
+api
+shared
+python
)
De início, como um projeto que roda com javascript, é preciso ter instalado o interpretador nodejs, e o gerenciador de pacotes yarn, por conta de ser um monorepo.
yarn
# or yarn install
Depois disso, para inicializar tanto o banco como os demais serviços (pacotes), com o seguinte comando:
docker-compose build
Necessário também copiar o arquivo, .env.example e colocar as informações sensíveis para o arquivo .env.
Rodar migrations escritas para gerar tabelas no banco:
cd packages/api
yarn run migration:run
Exemplo de como criar uma migration:
yarn run typeorm:cli -- migration:create -n <NomeMigration>
Utilizando a biblioteca Lerna
e consumindo os scripts do package.json
, o sistema inicia com os comandos listados a seguir. Lembrando que para o sistema funcionar, de maneira completa, é necessário rodar os pacotes /api
e /python
, além de iniciar o banco de dados, com o seguinte comando:
docker-compose up
Alguns comandos listados:
yarn start
: Roda o comandoyarn start
em todos os projetos ts:- api: Inicia a api em modo dev na porta 3001
yarn run start:api
: Inicia a api em modo dev na porta 3001yarn run start:service
: Inicia o pacote python em modo dev na porta 5000 e banco de dadosyarn lint
: Aciona lint em todos os projetos ts
Para acessar diretamente o pacote da /api
e ao rodar ter acesso aos logs:
cd packages/api
yarn run start:dev
O gerenciamento dos pacotes criados para este monorepo
, é feito com Lerna.
- Envio de multiplos arquivos - artigo;