/ForumHub

Desafio Api BackEnd Java para fórum de dúvidas

Primary LanguageJava

Api BakcEnd Forum Hub

Escrito em JAVA 17.

 

Introdução

Bem-vindo à documentação da aplicação Forum Hub.

Uma ferramenta para gerenciamento de fóruns, permitindo a criação e gerenciamento de usuários, tópicos e respostas, desenvolvida por Wesley Pereira.

Esta aplicação foi criada no contexto da bolsa do curso da Oracle, Alura e Ifood, com foco em BackEnders iniciantes.

A aplicação é escrita exclusivamente em JAVA, utilizando o framework Spring Boot e em sua versão 2.5 traz suporte implemantação em Docker.

Para implementação direto do DOCKER HUB, cole em seu terminal:

  sudo docker pull wesleyp846/forum_hub:V2.5
  sudo docker run -d -p 8080:8080 wesleyp846/forum_hub:V2.5

   

Versão Atual: 2.5

  Na versão 2.5, a aplicacação foi finalizada, Dockerizada e entregue.

   

Pré-requisitos

 

  • Acesso à WEB.
  • Doker
  • Java 17 instalado (opicional).
  • Intellij IDEA instalado (opicional).
  • Maven configurado (opicional).

   

Tecnologias Utilizadas

 

JAVA: Usado como linguagem de programação.

Spring Boot: Usado como framework para construção da aplicação.

Intellij: Usado como IDE na codificação.

Postgresql: Usado como banco de dados em memória para desenvolvimento.

Docker: Usado na conteinerização da aplicação como um todo.

   

Funcionalidades

 

  1. A aplicação permite a criação e gerenciamento de usuários.
  2. Os tópicos podem ser criados, editados, listados e deletados.
  3. As respostas aos tópicos podem ser criadas, editadas, listadas e deletadas.
  4. A autenticação dos usuários é gerenciada por meio de tokens JWT.
  5. Como o Docker instalado é possível clonar o repositório e com comando simples via terminal, rodar a aplicação`

   

Endpoints da API

Usuario Controller

  • PUT /usuarios/{id}

    • Atualiza um usuário específico.
  • DELETE /usuarios/{id}

    • Deleta um usuário específico.
  • GET /usuarios

    • Lista todos os usuários.
  • POST /usuarios

    • Cria um novo usuário.

Topico Controller

  • GET /topicos/{id}

    • Retorna detalhes de um tópico específico.
  • PUT /topicos/{id}

    • Atualiza um tópico específico.
  • DELETE /topicos/{id}

    • Deleta um tópico específico.
  • GET /topicos

    • Lista todos os tópicos.
  • POST /topicos

    • Cria um novo tópico.

Resposta Controller

  • PUT /respostas/{id}

    • Atualiza uma resposta específica.
  • POST /respostas/{id}

    • Cria uma nova resposta.
  • DELETE /respostas/{id}

    • Deleta uma resposta específica.
  • GET /respostas

    • Lista todas as respostas.

Auth Controller

  • POST /login
    • Autentica um usuário.(Usuario deve estar previamente cadastrado no banco de dados com e-mail e senha)

   

Modelos de Dados (Schemas)

  • DadosEdicaoDeUsuarioDto: Dados para edição de um usuário.
  • EditarTopicoDto: Dados para edição de um tópico.
  • RespostaEditaTopicoDTO: Dados para edição de uma resposta.
  • EditarRespostaDto: Dados para edição de uma resposta.
  • DadosNovoUsuarioDto: Dados para criação de um novo usuário.
  • DadosNovoTopicoDto: Dados para criação de um novo tópico.
  • DtoDadosNovaResposta: Dados para criação de uma nova resposta.
  • EnvioAutenticacaoDTO: Dados para autenticação de um usuário.
  • Pageable: Dados para paginação.
  • ListagemDeDadosUsuariosDto: Dados de listagem de usuários.
  • PageListagemDeDadosUsuariosDto: Dados de paginação de listagem de usuários.
  • PageableObject: Objeto de paginação.
  • SortObject: Objeto de ordenação.
  • ListagemDeDadosTopicosDto: Dados de listagem de tópicos.
  • PageListagemDeDadosTopicosDto: Dados de paginação de listagem de tópicos.
  • UsuarioSimplesDTO: Dados simplificados de um usuário.
  • DetalhesRespostaDTO: Detalhes de uma resposta.
  • PageDetalhesRespostaDTO: Dados de paginação de detalhes de respostas.

   

Configuração via DOCKER

Clone do repositório

  git clone https://github.com/wesleyp846/ForumHub

Navegue até a pasta do app

  cd ForumHub

Compile a aplicação

  sudo docker-compose build

Rode a aplicação

  sudo docker-compose up

   

Configuração

Para rodar este projeto, siga os passos abaixo:

  1. Clone o repositório:
    git clone https://github.com/wesleyp846/ForumHub
    cd ForumHub
    

Configure o banco de dados: Atualize as configurações do banco de dados no arquivo application.properties.

Execute a aplicação:

  ./mvnw spring-boot:run

Acesse a documentação da API: A documentação da API gerada pelo Swagger pode ser acessada em

  http://localhost:8080/swagger-ui/index.html#/

Contribuição

Para contribuir com o projeto, siga os passos abaixo:

Fork o repositório. Crie uma nova branch:

  git checkout -b minha-feature

Faça suas alterações e commit:

  git commit -m "Minha nova feature"

Envie para o repositório remoto:

  git push origin minha-feature

Abra um Pull Request.

    

Licença MIT

   

Créditos

Baseado em orientação da Alura e seus professores, com live única de lançamento do exercício.

 

Esperamos que esta documentação ajude você a compreender a aplicação.

Fique à vontade para contribuir e adicionar melhorias ao código.

Para mais informações, visite o LinkedIn de Wesley Pereira.

Primeiro commit na data de 29/06/2024

   

Demonstrativos:

Demonstração da API rodando em terminal no servidor

Demonstração da API rodando em terminal no servidor

   

Demonstração dos retornos da API via Insomnia

Demonstração da API rodando em requisições backend

   

Demonstração da documentação adicioal SWAGGER

Demonstração da documentação Swagger adicinal da API

   

Demonstação das tabelas no Banco de Dados

Demonstração do banco de dados da API

   

Demonstração da estrutura de arquivos do codigo fonte

Demonstração da estrutura de arquivos