ElieltonRamos / project-blogs-api

Apresento o projeto Blogs API, uma API RESTful que oferece um sistema de blog completo desenvolvido em Node.js com JavaScript e orquestrado com Docker, com o auxílio do framework Express e do ORM Sequelize para interagir com o banco de dados MySQL.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Boas-vindas ao repositório do projeto Blogs Api

logo docker logo mysql logo node logo express logo sequelize

Apresento o projeto Blogs API, uma API RESTful que oferece um sistema de blog completo desenvolvido em Node.js com JavaScript e orquestrado com Docker, com o auxílio do framework Express e do ORM Sequelize para interagir com o banco de dados MySQL. Esta API proporciona aos usuários funcionalidades essenciais, incluindo criação de contas, login seguro com autenticação JWT (JSON Web Token), postagem de artigos em diversas categorias e pesquisa por postagens.

🐳 Docker

O Docker foi utilizado neste projeto para facilitar a configuração e execução do ambiente de desenvolvimento. Com o Docker, é possível encapsular a aplicação, suas dependências e o banco de dados em contêineres isolados, garantindo que ela possa ser executada de maneira consistente em diferentes ambientes.

O arquivo docker-compose.yml define a configuração dos contêineres necessários para o projeto, incluindo o contêiner do banco de dados MySQL e o contêiner da aplicação Node.js. Com um único comando, os contêineres podem ser inicializados, permitindo que o ambiente de desenvolvimento seja configurado de forma rápida e fácil.

Tecnologias Utilizadas

Node JS

JavaScript

Docker

MySQL

Express JS

Jest

Índice

Ambiente de Desenvolvimento

Para desenvolver e executar esta aplicação, é necessário configurar um ambiente com as seguintes ferramentas:

Docker: Utilizamos o Docker para empacotar e isolar a aplicação em contêineres, garantindo uma implantação consistente e fácil gerenciamento de dependências.

Node.js: A aplicação é desenvolvida em Node.js, uma plataforma de tempo de execução JavaScript, e é necessária para executar o código.

Docker Compose: O Docker Compose é uma ferramenta que simplifica a definição e o gerenciamento de serviços multi-contêiner em um único arquivo, ideal para orquestrar contêineres relacionados à aplicação.

Certifique-se de instalar e configurar essas ferramentas em seu ambiente de desenvolvimento antes de iniciar o projeto.

Instalação

Clone este repositório:

git clone git@github.com:ElieltonRamos/project-blogs-api-.git

Navegue até o diretório do projeto:

cd project-blogs-api

Instale as dependências:

npm install

Inicie o docker compose:

docker compose -up -d

Inicie a aplicação:

O container do node ja esta configurado para deixar a apricação online automaticamente, caso queira ver os logs da apricação, execute o seguinte comando

docker logs -f blogs_api

Testes

O projeto conta com testes que verificam o funcionamento de cada rota da API, os testes foram escritos com JEST, lembrando que e necessario que o docker compose tenha sido executado para que os containers da apricação estejam online para que os testes funcionem.

Para executar os testes siga os seguintes passos:

Abra o terminal na raiz do projeto

Execute o comando:

docker exec -it talker_manager bash

Agora, dentro do container do node, execute:

npm test

Verifique a saida dos testes no seu terminal

Uso

Explore as rotas essenciais desta API, incluindo autenticação, operações de CRUD e funcionalidades de pesquisa para uma administração eficaz dos palestrantes.

  1. GET /talker

    • Retornar lista de palestrantes.
    • Se não houver palestrantes, retornar array vazio.
  2. GET /talker/:id

    • Retornar palestrante com base no ID.
    • Retornar 404 se o palestrante não existir.
  3. POST /login

    • Retornar token aleatório de 16 caracteres.
  4. Validações para /login

    • Validar campos e retornar 400 com mensagem de erro, em caso de dados inválidos.
  5. POST /talker

    • Criar novo palestrante.
  6. PUT /talker/:id

    • Atualizar informações de um palestrante.
  7. DELETE /talker/:id

    • Excluir um palestrante.
  8. GET /talker/search?q=searchTerm

    • Implementar pesquisa com base em um termo de consulta.
  9. GET /talker/search?rate=rateNumber

    • Implementar pesquisa por classificação.
  10. GET /talker/search?date=watchedDate

    • Implementar pesquisa por data de visualização.
  11. PATCH /talker/rate/:id

    • Atualizar a classificação de um palestrante.
  12. GET /talker/db

    • Utilizar um banco de dados MySQL para listar palestrantes.

Estrutura do Projeto

A seguir esta explicada a estrutura de pastas do projeto

project-api-talker-manager/ : A pasta raiz do projeto.
├── node_modules/ : Contém as dependências da aplicação.
├── tests/ : Contém os testes do projeto.
├── src/ : O diretório principal do código-fonte da aplicação, onde estão localizados os middlewares, modelos de dados e definições das rotas da API.
│ ├── middlewares/
│ ├── models/
│ ├── routes/
├── index.js : O arquivo principal que inicia o servidor e configura as rotas da API.
├── talker.json : Pode conter dados iniciais ou de exemplo para palestrantes.
├── package.json : Descreve as dependências e configurações do projeto.
├── README.md : A documentação do projeto.
├── docker-compose.yml : Utilizado para configurar e executar a aplicação em contêineres Docker.
├── DockerFile : Contém instruções para a criação de uma imagem Docker para a aplicação.
├── Jest.config.js : Configurações para testes com o framework Jest.
├── seed.sql : Um arquivo SQL usado para preencher o banco de dados com dados iniciais.

Contato

Elielton Ramos

Envie-me um e-mail Linkedin

Contribuição

Este projeto foi desenvolvido durante meu curso na Trybe com base no projeto 'Talker Manager'. A Trybe é uma escola de programação que tem compromisso com o sucesso profissional. O projeto 'Talker Manager' é parte do módulo de Back-End e envolve a criação de uma API com Express, Node, Docker e MySQL.

Licença

Código Aberto (Open Source)

Este projeto é de código aberto e está disponível para toda a comunidade. Fique à vontade para explorar, clonar e contribuir para o projeto.

Agradecimentos

Sou grato à Trybe por proporcionar esse desafio enriquecedor e pela oportunidade de aprimorar minhas habilidades como desenvolvedor. Estou empolgado para aplicar os conhecimentos adquiridos em projetos futuros e continuar minha jornada de desenvolvedor web.

About

Apresento o projeto Blogs API, uma API RESTful que oferece um sistema de blog completo desenvolvido em Node.js com JavaScript e orquestrado com Docker, com o auxílio do framework Express e do ORM Sequelize para interagir com o banco de dados MySQL.


Languages

Language:JavaScript 99.8%Language:Dockerfile 0.2%