- Cadastro
- Login
- Criar categoria
- Listar categorias
- Adicionar entrada
- Adicionar saída
- Consultar movimentação diária
- Linguagem: TypeScript/JavaScript
- Interpretador JavaScript: Node.js
- Gerenciador de pacotes: npm
- Controle de versão: Git
- Repositório: GitHub
- Banco de dados não-relacional: MongoDB
- Arquitetura: Clean Architecture, API REST
- Segurança: CORS, bcrypt
- Autenticação: JWT
- Validação: Joi, Celebrate
- Testes unitários e de integração: Jest
- Integração contínua e entrega contínua (CI/CD): Jenkins, TravisCI, Coveralls
- Princípios de design e desenvolvimento: TDD, SOLID, KISS, YAGNI, DRY
- Conteinerização: Docker
- Documentação: Swagger
- Provedor de serviço de nuvem: AWS, Heroku
Para rodar o projeto, é necessário que os seguintes recursos estejam instalados e inicializados em sua máquina:
- Git
- Docker
Em seu Terminal, digite os seguintes comandos:
$ git clone https://github.com/Lpfigueiredo/caixa-virtual-api.git
$ cd caixa-virtual-api
$ docker-compose up
Aguarde até que apareça a seguinte mensagem:
Server running at http://localhost:5050
Mantenha o Terminal aberto.
Recomendo utilizar o docker-compose up -d
apenas após a primeira execução da API, para poder visualizar os logs da construção do container.
A API é composta por 7 rotas. São elas:
/api/signup
: Responsável por criar um novo usuário/api/login
: Responsável por fazer o login do usuário/api/categories
: Responsável por cadastrar ou visualizar as categorias criadas pelo usuário, de acordo com o método HTTP/api/entries/{categoryId}
: Responsável por adicionar as Entradas monetárias do usuário/api/exits/{categoryId}
: Responsável por adicionar as Saídas monetárias do usuário/api/daily-movement
: Responsável por visualizar as movimentações diárias do usuário/docs
: Responsável por visualizar a documentação detalhada com Swagger
Envie uma requisição do tipo POST
para http://localhost:5050/api/signup
com os seguintes componentes:
BODY
{
"name": "string",
"email": "string",
"password": "string",
"passwordConfirmation": "string"
}
Em caso de sucesso, a resposta será um statusCode: 200
e retornará:
{
"accessToken": "string"
}
Envie uma requisição do tipo POST
para http://localhost:5050/api/login
com os seguintes componentes:
BODY
{
"email": "string",
"password": "string"
}
Em caso de sucesso, a resposta será um statusCode: 200
e retornará:
{
"accessToken": "string"
}
Envie uma requisição do tipo POST
para http://localhost:5050/api/categories
com os seguintes componentes:
HEADER
"x-access-token": "string"
BODY
{
"name": "string"
}
Em caso de sucesso, a resposta será um statusCode: 204
e não haverá retorno.
Envie uma requisição do tipo GET
para http://localhost:5050/api/categories
com os seguintes componentes:
HEADER
"x-access-token": "string"
Em caso de sucesso, a resposta será um statusCode: 200
e retornará:
[
{
"id": "string",
"name": "string"
}
]
Envie uma requisição do tipo POST
para http://localhost:5050/api/entries/{categoryId}
com os seguintes componentes:
HEADER
"x-access-token": "string"
PARAM
"categoryId": "string"
BODY
{
"value": "number",
"description": "string"
}
Em caso de sucesso, a resposta será um statusCode: 204
e não haverá retorno.
Envie uma requisição do tipo POST
para http://localhost:5050/api/exits/{categoryId}
com os seguintes componentes:
HEADER
"x-access-token": "string"
PARAM
"categoryId": "string"
BODY
{
"value": "number",
"description": "string"
}
Em caso de sucesso, a resposta será um statusCode: 204
e não haverá retorno.
Envie uma requisição do tipo GET
para http://localhost:5050/api/daily-movement
com os seguintes componentes:
HEADER
"x-access-token": "string"
QUERY
: Opcional
"date": "string"
Em caso de sucesso, a resposta será um statusCode: 200
e retornará:
{
"totalBalance": "number",
"movements": [
{
"date": "string",
"id": "string",
"category": {
"id": "string",
"name": "string"
},
"type": "string",
"value": "number",
"description": "string"
}
]
}
O horário é sincronizado com o horário de Brasília (GMT -3).