Skip to content

API REST em NodeJs usando Typescript, TDD, Clean Architecture, Design Patterns e princípios SOLID

License

Notifications You must be signed in to change notification settings

Lpfigueiredo/caixa-virtual-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Coverage Status js-standard-style

alt text


Requisitos

  1. Cadastro
  2. Login
  3. Criar categoria
  4. Listar categorias
  5. Adicionar entrada
  6. Adicionar saída
  7. Consultar movimentação diária

Resumo do projeto

  • 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

Como rodar o projeto

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.

Rotas

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

Consumindo a API

Criando um usuário

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"
}

Logando usuário

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"
}

Criando categoria

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.

Listando categorias

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"
  }
]

Adicionado Entrada monetária

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.

Adicionado Saída monetária

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.

Consultando movimentação diária

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).


Feito de 💜 por: Leonardo Paulo Figueiredo

About

API REST em NodeJs usando Typescript, TDD, Clean Architecture, Design Patterns e princípios SOLID

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages