É uma aplicação que representa operações de investimento de ações do mercado financeiro e com algumas funcionalidades de uma conta digital.
Principais funcionalidades ✨
As principais responsabilidade desta API estão relacionadas a integração com o banco de dados, seguindo os princípios do REST, com as requisições feitas baseados nos endpoints:
Caminho | Responsabilidade |
---|---|
/investments/assets |
Listar todos ativos relacionados as corretoras e quantidade disponíveis para negociação |
/investments/assets/:ticker |
Lista o ativo e as respectivas corretoras que tenham disponíveis para negociação |
/investments/assets/client/:code |
Lista todos ativos da carteira do cliente nas respectivas corretoras |
/investments/buy |
Enviar ordem de compra do ativo |
/investments/sell |
Enviar ordem de venda do ativo |
/banking/conta |
Listar de todos clientes os saldos e suas correspondentes corretoras |
/banking/conta/:clientCode |
Lista o cliente e os respectivos saldos em suas corretoras |
/banking/conta/deposito |
Realizar depósito na conta corrente |
/banking/conta/saque |
Realizar saque da conta corrente |
/login |
Realizar login na aplicação para gerar o token de autenticação |
Executando o projeto 🌐
-
É necessário ter o
Docker
e oDocker Compose
instalado em sua máquina. -
Clone o projeto:
git clone [email protected]:gricar/API-services-contract-XP.git
. -
Entre na pasta do projeto:
cd API-services-contract-XP
. -
Instale as dependências:
npm install
. -
Execute o script para iniciar o Docker Compose:
npm run compose:up
. -
Esses serviços inicializarão dois containeres:
api-services-contract
eservices-contract-db
. -
Execute o script
npm run prestart
para acessar o terminal do container. -
Execute o script
npm run db:reset
para restaurar o banco de dados. -
Execute o script
npm run dev
para executar a aplicação. -
Após um tempo, os contêineres estarão prontos e você poderá acessar o projeto em: http://localhost:3002
-
Para desligar os containers, utilize o script:
npm run compose:down
Obs: A aplicação contém dados fictícios de usuários, ativos financeiros e saldos bancários.
Tomadas de decisão 💡
- Definir a linguagem de programação para desenvolvimento da aplicação (
TypeScript
). - Optado por utilizar contêineres (
Docker
) para criar ambientes isolados dentro de um servidor. - Utilizado o
ESLint
para padronização do código e redução de erros. É feito uma validação no código sempre que tem-se um novo pull request ou push na branch. - Estruturar o
DER
(Diagrama de Entidade e Relacionamento) da aplicação baseado nas variáveis que cada tabela poderia ter. - Desenvolver a aplicação utilizando POO (Programação Orientada a Objeto) e ORM (Mapeamento de Objeto-Relacional).
- Arquitura MSC (Models - Services - Controllers).
- Biblioteca para tratamento de erros (
express-async-errors
). - Rotas para serviços de Investimentos e Bancos.
- Rotas que exigem autenticação com JWT (JSON Web Token).