Skip to content

LindauroNeto/Echo-ForumHub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ForumHub - Compartilhando conhecimento 💬📢

Sistema de fórum para a criação de tópicos para sanar dúvidas de cursos e envio de respostas.

🔨 Funcionalidades

O sistema possui funcionalidades para as partes de Tópicos, Respostas e Usuários.

Tópicos

  • POST /topicos
    • Cadastro de um novo tópico: Ao preencher na requisição os campos: titulo, mensagem, e curso, a requisição é enviada ao sistema e salva no banco de dados.
  • GET /topicos
  • GET /topicos/{idTopico}
    • Listagem dos tópicos: Listagem única (informando o ID) ou de todos os tópicos criados, em forma paginada.
  • PUT /topicos/{idTopico}
    • Atualização de informações: Ao informar no caminho da url o ID do tópico, é possível alterar as informações do tópico, preenchendo os campos titulo e mensagem no corpo da requisição, aos novos valores atribuídos.
  • PUT /topicos/{idTopico}/finalizar
    • Finalização de tópico: Ao informar no caminho da url o ID do tópico e preenchendo o campo de mensagem, o tópico é considerado RESOLVIDO, o finalizando e inibindo o envio de novas respostas.
  • DELETE /topicos/{idTopico}
    • Exclusão do tópico: Ao informar no caminho da url o ID do tópico, ele é excluído de forma lógica do sistema (sendo necessário o acesso pelo banco de dados para realizar uma exclusão definitiva do usuário).

OBS.: "Exclusão lógica" é a desativação do usuário do sistema, não sendo possível mais utilizá-lo. E "Exclusão definitiva", seria excluir o usuário permanentemente do banco de dados, com o método DELETE, não sendo mais possível recuperá-lo

Respostas

Para todos os métodos de Respostas, será sempre necessário enviar o ID do tópico.

  • POST /topicos/{idTopico}/resposta
    • Envio de respostas: Ao preencher o campo mensagem, a reposta é registrada e salva no banco de dados.
  • GET /topicos/{idTopico}/resposta
  • GET /topicos/{idTopico}/resposta/{idResposta}
    • Listagem de respostas: Realização de listagem única (informando o ID das respostas) ou de todas as respostas registradas, de forma paginada.
  • PUT /topicos/{idTopico}/resposta/{idResposta}
    • Modificação de resposta: Ao informar no caminho da url o ID da resposta e preenchendo o campo mensagem, a resposta vai ser modificada/atualizada.
  • DELETE /topicos/{idTopico}/resposta/{idResposta}
    • Exclusão da resposta: Ao informar no caminho da url o ID da resposta, a mesma será excluída de forma lógica do sistema.

Usuários

  • POST /usuario/cadastro
    • Cadastro: Realização de cadastro do usuário ao preencher os dados nos campos de usuario e senha.
  • POST /usuario/login
    • Login: Efetuação de login do usuário com os dados que já foram cadastrados anteriormente. O permitindo realizar as operações dentro de Tópicos.
  • GET /usuario
  • GET /usuario/{id}
    • Visualizar usuários: Levantamento dos usuários que estão cadastrados no sistema, podendo visualizar todos ou somente um, informando o ID (Ao visualizar os dados dos usuários).
  • DELETE /usuario/{id}
    • Excluir usuário: Realizada somente pelo próprio usuário, que ao informar o seu ID, pode excluir a sua "conta".

🍃 Como inicializar a aplicação

Pré-Requisitos

  • Java 17
  • Apache Maven 4.0.0
  • MySQL 8.0

Setup do sistema

  1. Primeiramente, clone o repositório:
git clone https://github.com/LindauroNeto/Echo-ForumHub.git
  1. Crie o banco de dados para a aplicação (fora isso, as tabelas serão criadas automaticamente)
CREATE DATABASE <nome_do_banco_de_dados>;
  1. Atualize as configurações do application.properties (tendo em vista as variáveis de ambiente) Arquivo application.properties

Utilização das variáveis de ambiente

No projeto há 4 variáveis de ambiente

  • MYSQL_URL: URL que identifica o acesso para o banco de dados.
  • MYSQL_USERNAME: Nome do usuário do banco de dados.
  • MYSQL_PASSWORD: Senha para acesso ao banco de dados.
  • Secret: Senha para a geração de algortimo HMAC256.

Execução da aplicação

  1. Entre no diretório do projeto
cd <caminho até a pasta>/.../Echo-ForumHub
  1. Faça o seu build
mvn clean package
  1. Escreva o seguinte comando para executá-lo
java -DMYSQL_URL=<url_da_aplicação> -DMYSQL_USERNAME=<nome_do_usuario_do_banco> -DMYSQL_PASSWORD=<senha_do_usuario_do_banco> -DSecret=<senha_do_algoritmo> -jar target/EchoForumHub-0.0.1-SNAPSHOT.jar

Carregamento do sistema

A imagem seguinte é a que deve aparecer na sua tela! Terminal Springboot

📄 Documentação

Ao inicializar a aplicação, é possível acessar a documentação por via do JSON, no endereço http://server:port/v3/api-doc. Documentação em JSON

Ou pelo HTML http://server:port/swagger-ui.html. Documentação em página web

Sendo:

  • server: O nome do servidor ou IP.
  • port: A porta do servidor.

🧠 Conhecimentos aplicados

  • Estilo de empacotamento em Package by Layer;
  • Criação de API REST;
  • Persistência dos Dados das informações;
  • Uso JPA para a autenticação de usuários;
  • Utilização de DTOs para a transferência de dados;
  • Autenticação de usuários por via de Tokens JWT;
  • Criação de Filters para barragem de indivíduos não autorizados no sistema;
  • Tratamento de Exceptions com o ControllerAdvice;
  • Uso dos módulos Spring Data e Spring Security;
  • Auxílio do Spring Boot para o desenvolvimento da aplicação, utilizando as Beans: Component, Configuration, Controller, ControllerAdvice, Service e Repository.

💻 Tecnologias utilizadas no projeto

📜 Licença

Este projeto é licenciado sob a Apache License. Para mais informações, veja o arquivo LICENSE.

About

Repositório do Echo Fórum. Envolvendo os conhecimentos obtidos no ONE G7.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages