Skip to content

É um projeto fullstack que utiliza no backend Node.js com Typescript para a criação de uma API Restful com padrão de arquitetura MSC (model-service-controller). Os bancos de dados utilizados foram o MongoDB e Redis, sendo o mongo responsável pelas queries e armazenamento dos dados e Redis por fazer cache dos dados.

Notifications You must be signed in to change notification settings

rafaelftourinho/beon_desafio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Boas-vindas ao meu repositório para o desafio da Beon

GitHub language count GitHub Top Language GitHub last commit


Tópicos

Tecnologias utilizadas

Sobre o projeto

Descrição da API

Pré-Requisitos

Instalação e uso



Tecnologias utilizadas


Sobre o projeto

gif da aplicação

Este projeto foi criado como desafio técnico pedido pela empresa Beon.
É um projeto fullstack que utiliza no backend Node.js com Typescript para a criação de uma API Restful com padrão de arquitetura MSC (model-service-controller).
Os bancos de dados utilizados foram o MongoDB e Redis, sendo o mongo responsável pelas queries e armazenamento dos dados e Redis por fazer cache dos dados.
O frontend foi criado utilizando o combo React + Vite + Typescript.
A aplicação consiste em podermos filtrar os dados que vêm do banco através dos filtros estabelecidos no frontend, com paginação de no máximo 10 resultados por vez, sendo essa paginação feita diretamente no backend para ter melhor resultado na performance. Após feita a pesquisa, podemos ver detalhes do livro em específico ao clicar em "detalhes".


Descrição da API

A seguir, a descrição básica da API para orientar a integração por outros times:

baseUrl = http://localhost:3001/books

Buscar todos os livros
    Método HTTP: GET
    URL: baseUrl/?=page
    Sucesso: retorna um array com 100 objetos de livros ou caso utilize a query 10 por página;

Buscar livro por autor, título ou linguagem
    Método HTTP: GET
    URL: baseUrl/title/{title}?=page
    Sucesso: retorna um array com os livros que são filtrados de acordo com a pesquisa feita
    Erro: retorna um status 404 e uma mensagem de erro de "Nenhum título, autor ou linguagem encontrado"

Buscar um único livro
    Método HTTP: GET
    URL: baseUrl/id/{id}
    Sucesso: retorna um objeto que contenha o id especificado
    Erro: retorna um erro com a mensagem "Id inválido" caso o id não seja do tipo uuid. Retorna um erro com a mensagem "Livro não encontrado" caso o id não seja correspondente

Buscar um livro por intervalo de anos
    Método HTTP: GET
    URL: baseUrl/year/{year1}/{year2}
    Sucesso: retorna um array de objetos, que estejam no intervalo de anos desejado
    Erro: retorna uma mensagem de erro de "Nenhum livro encontrado nesse intervalo de anos" caso não possuam livros no intervalo desejado

Pré-Requisitos

  • Necessário Docker instalado;
  • Necessário o npm ou outro pacote similar no computador ou no container;
  • Necessária a instação do Node.js no computador ou no container;
  • O projeto foi concebido para rodar todo em ambiente Docker.

Instalação e uso

# Abra um terminal e copie este repositório com o comando
[email protected]:rafaelftourinho/beon_desafio.git

# Navegue até a pasta raíz da aplicação

# Caso esteja usando o VsCode, pode utilizar o comando no terminal dentro da pasta
code .

# Entra na pasta de frontend
cd app/frontend

# Instale as dependências
npm i

# Abra um novo terminal

# Neste novo terminal, entre na pasta backend
cd app/backend 

# Instale as dependências de backend
npm i

# Suba o container docker
docker-compose up -d

# Entre no container e execute o comando
docker exec -it app_back-end sh

# Rode o comando de build dentro do container
npm run build

# Rode o comando para seedar o banco de dados
npm run seed

# A porta utilizada para rodar o node está mapeada na 3001, a porta disponibilizada para o database é a 27017 e aporta disponibilizada para o frontend é a 3000

# Para rodar os testes, você precisa estar dentro do container
docker exec -it app_back-end sh

# Para rodar os testes unitários
npm run test

# Para verificar os dados que volta da API (escolha sua rota)
http://localhost:3001/books/

# Atenção, caso esteja rodando em uma plataforma que não seja Linux, faça a etapa a seguir, caso contrário, ignore-a
Entre no docker-compose e descomente a linha que contém o arquivo "platform: linux/x86_64"

# Caso não consiga rodar no docker, pode rodar localmente sem problemas

# Rode a aplicação no browser
http://localhost3000

Licença

Esse projeto está sob a licença MIT. Veja LICENSE para mais detalhes.

About

É um projeto fullstack que utiliza no backend Node.js com Typescript para a criação de uma API Restful com padrão de arquitetura MSC (model-service-controller). Os bancos de dados utilizados foram o MongoDB e Redis, sendo o mongo responsável pelas queries e armazenamento dos dados e Redis por fazer cache dos dados.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published