01cm-new-layout v1.0.9
APP 01CM
Overview
Aplicação desenvolvida em Next.js. Iniciado com create-next-app
.
Este aplicativo compõe a plataforma 01CM, onde os clientes poderão acessar e visualizar os documentos processados pelo Invoice Manager. Cada cliente tem uma instância dessa aplicação sendo executada na Cloud da Google.
Dependências
Projetos relacionados:
- Invoice Manager - Sistema que recebe os documentos de todos os clientes e os processa para extração de dados.
- Consumer - Consome as notas do integrador e envia para o backend da aplicação do cliente
- 01CM API - Backend da aplicação do cliente
- ERP Oracle - O projeto contém integrações com a API do ERP Oracle para envio de notas e boletos.
Pacotes utilizados
- @somma/replace-envs - Substituir variáveis em runtime
Os apontamentos são configuradas através das variáveis de ambiente. Para mais detalhes a cerca das dependências, consultar o ecossistema de aplicativos no guia
Rodar localmente
Instalação
Como estamos utilizando pacotes privados, é necessário fazer a autenticação no Artifact. Para isso, foi criado o arquivo .npmrc
na raiz do projeto com as configurações. Esse conteúdo pode ser obtido com o gcloud
:
gcloud artifacts print-settings npm --scope=@somma
O token expira periodicamente (por padrão, após 1 hora), portanto é necessário também atualizá-lo com o utilitário do gcloud
:
npx google-artifactregistry-auth
O arquivo .npmrc
pode ser criado na pasta do usuário (~/.npmrc
) para que seja utilizado em todos os projetos também.
A partir daí, pode ser executado o comando de instalação das dependências:
yarn install
Variáveis de ambiente
# Variáveis para acesso ao Invoice Manager
NEXT_PUBLIC_IMG_BASE_URL=https://api-01cm-invoices-management-dev-fasdf-uc.a.run.app
NEXT_PUBLIC_IMG_USERNAME=invoice-manager
NEXT_PUBLIC_IMG_PASSWORD=123456
# Variáveis para acesso ao Backend do 01cm
NEXT_PUBLIC_LOCALHOST=https://api-01cm-dev-4yyh5fptba-uc.a.run.app
# Variáveis para acesso ao ERP Oracle
NEXT_PUBLIC_ERP_BASE_URL=https://fa-ertf-test-saasfaprod1.fa.ocs.oraclecloud.com
NEXT_PUBLIC_ERP_USER=integration.bild # usuário de integração
NEXT_PUBLIC_ERP_PASSWORD=54234h2b34h2b34 # Senha do usuário de integração
# variáveis de configuração do front
NEXT_PUBLIC_BASE_URL=http://localhost:4001
Variáveis padrão do NEXT podem ser consultadas aqui
Configuradas as variáveis, o servidor de desenvolvimento do Node pode ser executado com:
npm run dev
# or
yarn dev
# or
pnpm dev
Ou simulado os processos de produção, fazendo o build e consequente start:
yarn build
yarn start
Abrir http://localhost:8080 para utilizar a aplicação.
Deploy
O arquivo Dockerfile
contém uma imagem a ser construída e executada em plataformas com suporte, como o GCP Cloud Run ou o próprio Docker.
A imagem basicamente recebe as variáveis de ambiente via argumentos em tempo de build. Essas variáveis são resolvidas durante o transpile no build da imagem, sendo substituídas pelo valor recebido do ARG da linha de build do docker. Exemplo:
docker buildx build --build-arg="NEXT_PUBLIC_BASE_URL=DCK_NEXT_PUBLIC_BASE_URL" -t app01cm:local .
Mais informações sobre esse processo de substituição de variáveis no repositório do pacote que faz esse processo nas variáveis em runtime.
Para o deploy na GCP, temos a pipeline configurada no arquivo cloudbuild.yml
. A pipeline faz o build da imagem e envia para o Artifact Registry, que é o repositório de imagens da GCP. Logo em seguida faz o deploy no Cloud Run, seguindo o fluxo comentado aqui.
Links úteis
- Documentação Next.js
- Learn Next.js - Tutorial interativo de Next.js
- Como usar o Artifact