O objetivo principal do projeto foi colocar em prática novos conhecimentos sobre testes automatizados (unitários e de integração) com Jest e a utilização de cache na aplicação com Redis. A API desenvolvida foi para uma livraria fictícia, que possibilita criar, buscar, atualizar e deletar categorias, autores e os livros desses autores.
A aplicação foi construída em Typescript e Node.js com Express.js como framework, na parte de armazenamento dos dados foi utilizado Postgres com TypeORM para manipulação e Redis para armazenamento de cache, para a infraestrutura do projeto utilizei Docker para "contêinerizar" toda aplicação e evitar problemas com diferentes ambientes. O projeto também contou com dezenas de testes unitários e de integração utilizando a técnica TDD, garantindo bom funcionamento do código.
// Category
[GET] /api/category/ (lista todas as categorias)
[POST] /api/category/ (cria uma nova categoria de livros)
[PUT] /api/category/:id (atualiza uma categoria)
[DELETE] /api/category/:id (deleta uma categoria)
// Author
[GET] /api/author/:id (busca um author pelo id)
[GET] /api/author/ (lista os autores existentes) (query params: limit, offset)
[POST] /api/author/ (cria um novo autor)
[PUT] /api/author/:id (atualiza um autor)
[DELETE] /api/author/:id (deleta um autor)
// Book
[GET] /api/book/:id (busca um livro pelo id)
[POST] /api/book/ (cria um novo livro)
[GET] /api/book/author/:author_id (lista todos os livros de um autor)
A aplicação foi construída utilizando:
Para clonar e rodar o projeto é necessário ter o docker e docker-compose instalados em sua máquina, após isso siga as instruções:
# Abra um terminal e copie este repositório com o comando:
$ git clone https://github.com/felpssc/library_api.git
# Entre na pasta raiz do projeto e suba o contâiner com:
$ docker-compose up --build -d
# Caso a aplicação não tenham iniciado, rode:
$ docker-compose start
# Acesse http://localhost:3000/api no seu navegador.