<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