Olá, este é um projeto de controle financeiro proposta pela Itez Innovation e desenvolvido por mim. Esta api segue o padrão REST. Todos os requisitos foram trabalhados.
Documentação da API - Controle financeiro
Imagem Dockerfile da aplicação
Para usar esta API é preciso instalar as seguintes ferramentas:
Para editar o código eu recomendo:
Para testar as rotas você pode usar:
# Clone este repositório
git clone https://github.com/MathLopes1/financial-control.git
# Acesse a pasta do projeto
cd financial_control
# crie um arquivo .env seguindo o modelo do arquivo .env.exemplo e preencha os campos.
# Instale as dependências
npm i
# Faça o build da aplicação para JavaScript
npm rum build
# Execute a aplicação em modo de Produção
npm run start
# Execute a aplicação em modo de desenvolvimento
npm run dev:server
# Execute os testes
npm run test
# O servidor iniciará na porta: 3000
Rotas de usuario:
localhost:3000/api/v1/user
Rota de login:
localhost:3000/api/v1/user/login
Rotas de ganhos:
localhost:3000/api/v1/gain
Rotas de gastos:
localhost:3000/api/v1/spend
Rotas de conta:
localhost:3000/api/v1/account
Para cadastrar usuarios.
POST -
localhost:3000/api/v1/user
Exemplo de body:
{
"email": "[email protected]",
"senha": "040236",
"habilitado": "sim"
}
Para criar o token de autenticação
POST -
localhost:3000/api/v1/user/login
Exemplo de query:
{
"email": "[email protected]",
"senha": "040236"
}
Para fazer logout
POST -
localhost:3000/api/v1/user/logout
Para cadastrar ganhos
POST - ` localhost:3000/api/v1/gain
Exemplo de body:
{
"total_ganhos": 10000.80
}
Para listar todos os ganhos
GET -
localhost:3000/api/v1/gain
Para atualizar um ganho
PUT - `localhost:3000/api/v1/user/:id
Exemplo de body:
{
"total_ganhos": 800.00
}
Para deletar um usuario
DELETE -
localhost:3000/api/v1/user:id
Para cadastrar um gastos.
POST -
localhost:3000/api/v1/spend
Exemplo de body:
{
"entretenimento": 1000.00,
"alimentacao": 80.00,
"educacao": 56.95,
"saude": 102.10,
"transporte": 80.90
}
Para listar todos os gastos.
GET -
localhost:3000/api/v1/spend
Para atualizar um gasto.
PUT -
localhost:3000/api/v1/spend/:id
Exemplo de body:
{
"entretenimento": 1000.00,
"alimentacao": 80.00,
}
Para deletar um gasto.
DELETE -
localhost:3000/api/v1/spend/:id
Para cadastrar uma conta.
POST -
localhost:3000/api/v1/account
Exemplo de body:
{
"nome": "Matheus Lopes",
"cpf": "30117377031",
"data_nascimento": "07/02/2000",
"usuario_id": "6ec6c26f-e58f-4571-ac73-81df30b11222",
"ganhos_id": "27cd2d23-f374-4943-84f7-2687b7229ab4",
"gastos_id": "70e2379c-4d07-445b-bd04-87cc15cf2e64"
}
Para listar todas as contas.
GET -
localhost:3000/api/v1/account
Exemplo de retorno:
[
{
"id": "bef8d57b-a66c-49fc-a09e-c32ba4866967",
"nome": "Matheus Lopes",
"cpf": "30117377031",
"data_nascimento": "07/02/2000",
"usuario_id": "6ec6c26f-e58f-4571-ac73-81df30b11222",
"ganhos_id": "27cd2d23-f374-4943-84f7-2687b7229ab4",
"gastos_id": "70e2379c-4d07-445b-bd04-87cc15cf2e64",
"created_at": "2022-05-03T17:52:13.464Z"
}
]
Para gerar um extrato financeiro de uma conta.
GET -
localhost:3000/api/v1/account/extract/:id
Exemplo de retorno:
{
"FinancialStatementStatement": {
"id": "64fc985f-7648-4d3a-8ff9-b41daf817ead",
"nome": "Matheus Lopes",
"cpf": "30117377031",
"data_nascimento": "07/02/2000",
"user": {
"id": "9fc1436d-29cd-4865-abaf-23b37fd2ec13",
"email": "[email protected]",
"senha": "$2b$08$6Ejr9NTx0eAG/j9eU1FxaOGaMoW8rlyQds0TG7Aoc2/IyvDLCwwtm",
"habilitado": "sim"
},
"gain": {
"id": "27cd2d23-f374-4943-84f7-2687b7229ab4",
"total_ganhos": 500.9
},
"spend": {
"id": "70e2379c-4d07-445b-bd04-87cc15cf2e64",
"entretenimento": 489.55,
"alimentacao": 78.89,
"educacao": 189.963,
"saude": 456.96,
"transporte": 696.48
},
"Total": -1410.9430000000002
}
}
Para atualizar uma conta.
PUT -
localhost:3000/api/v1/account/:id
Exemplo de body:
{
"nome": "Matheus Lopes da Silva",
}
Para deletar uma conta.
DELETE -
localhost:3000/api/v1/account/:id
As seguintes ferramentas foram usadas na construção do projeto:
Esse repositório está licenciado pela MIT LICENSE. Para mais informações detalhadas, leia o arquivo LICENSE contido nesse repositório.