Skip to content

gabrielsoaresm94/monorepo

Repository files navigation

Monorepo boilerplate

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.

Escopo do projeto

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 servidores
  • packages:
    • api: NestJS Api server (depende de shared + python)
    • python: Flask server (depende de shared)
    • ui: React components, storybook
    • web: Next app (depende de ui + api + shared + python)

Como instalar (sistemas linux)

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

.env

Necessário também copiar o arquivo, .env.example e colocar as informações sensíveis para o arquivo .env.

Migrations

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>

Como rodar (sistemas linux)

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 comando yarn 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 3001
  • yarn run start:service: Inicia o pacote python em modo dev na porta 5000 e banco de dados
  • yarn 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

Gerenciamento de pacotes

O gerenciamento dos pacotes criados para este monorepo, é feito com Lerna.

Documentação de pacotes

Problemas e soluções

  • Envio de multiplos arquivos - artigo;

Conteúdos e inspirações:

About

Projeto monorepo para NestJS e Python (Flask).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published