---
# System prepended metadata

title: Backend Controladoria

---

<div align="center">
  </br>
  <img src="https://gazincombr-my.sharepoint.com/personal/valdecir_junior_gazin_com_br/Documents/logo%20genesis%20(1).png" height="150" width="200" style="border-radius: 10px;"/>
  <h1>Backend Controladoria</h1>
</div>

<hr>

## 	📄 Contexto

<p> Aplicação backend do sistema de controladoria, que tem como objetivo unificar os planos de contas das empresas, centralizar todos lançamentos contábeis em um único sistema para geração de relatórios gerenciais e desenvolver o sistema orçamentário onde serão realizados os orçamentos por conta contábil. </p>

## 🏃 Executando aplicação

#### Produção

```bash
# gere o arquivo de envs a partir do arquivo de exemplo
$ cp .exemple.env .prod.env

# instale as dependências do projeto
$ yarn

# aplique as migrações do banco de dados
$ yarn migration:run

# gere a versão transpilada do código
$ yarn build

# execute a aplicação transpilada
$ yarn start
```

Feito isso a aplicação ficará disponível na porta definida na env `PORT`

#### Desenvolvimento

```bash
# gere o arquivo de envs a partir do arquivo de exemplo
$ cp .exemple.env .dev.env

# instale as dependências do projeto
$ yarn

# aplique as migrações do banco de dados
$ yarn migration:run

# execute a aplicação
$ yarn start:dev
```

Feito isso a aplicação ficará disponível na porta definida na env `PORT`

## 🧪 Testes

Execute o seguinte comando para executar todos os testes da aplicação

```bash
$ yarn test
```

#### Cobertura de testes

Execute o seguinte comando para rodar todos os testes e exibir o report com a porcentagem de cobertura de teste em cada um dos arquivos da aplicação

```bash
$ yarn test:ci
```

## 🛠 Tecnologias

- [Nodejs](https://nodejs.org/) - Plataforma para execução de código JavaScript no server-side, utilizado na construção da API.
- [TypeScript](https://www.typescriptlang.org/) - Superset da linguagem JavaScript, fornecendo classes, interfaces e tipagem estática opcional.
- [PostgreSQL](https://www.postgresql.org/) - SGBDRe Utilizado para gerenciamento do banco de dados da aplicação
- [Typeorm](https://typeorm.io/) - ORM utilzado no mapeamente das entidades da aplicação para o banco de dados, e vice e versa
- [Express](https://expressjs.com/) - Framework Javascript utilizado para facilitar a construção de APIs no Nodejs
- [Jest](https://jestjs.io/) - Framework Javascript utilizado para facilitar a construção de testes

## 🚩 Convenção de commits

- build: Mudanças que afetam o sistema de build ou dependências externas (exemplo de escopos: gulp, broccoli, npm)
- ci: Mudanças nos arquivos e scripts de configuração de CI (exemplo de escopos: Travis, Circle, BrowserStack, SauceLabs)
- docs: Alterações apenas na documentação
- feat: Uma nova funcionalidade
- fix: A correção de algum bug
- perf: Uma mudança de código que melhora o desempenho
- refactor: Uma mudança de código que não corrige um bug nem adiciona um recurso
- style: Mudanças que não afetam o significado do código, apenas a forma como ele se parece(espaços em branco, formatação, etc)
- test: Adição de testes faltantes ou correção de testes existentes
