Giter Club home page Giter Club logo

forumhub's Introduction

ForumHub

Descrição

ForumHub é uma API de fórum (desafio proposto pelo curso de spring boot da alura) que permite autenticação de usuários, criação, atualização, listagem e exclusão de tópicos. A API utiliza um banco de dados MySQL para armazenamento de dados.

Funcionalidades

  • Autenticação de Usuários: Autenticação via JWT para proteger as ações na API.
  • CRUD de Tópicos: Criação, leitura, atualização e exclusão de tópicos no fórum.
  • Listagem de Tópicos: Listar tópicos com paginação e ordenação por data de criação.
  • Detalhamento de Tópicos: Exibir detalhes de um tópico específico.
  • Busca por Critérios: Buscar tópicos por nome de curso e ano específico.

Tecnologias Utilizadas

  • Java 17
  • Spring Boot 3.3.0
  • JWT (JSON Web Token)
  • MySQL
  • Maven

Dependências

Aqui estão algumas das dependências principais utilizadas no projeto:

  • Lombok
  • Spring Web
  • Spring Boot DevTools
  • Spring Data JPA
  • Flyway Migration
  • MySQL Driver
  • Validation
  • Spring Security
  • Springdoc OpenAPI - Para documentação Swagger

Configuração do Banco de Dados

O projeto utiliza um banco de dados MySQL. Certifique-se de ter o MySQL instalado e configurado em sua máquina. Configure as seguintes propriedades no arquivo application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/NOME_BANCO_DE_DADOS
spring.datasource.username=SEU_USUARIO
spring.datasource.password=SUA_SENHA
spring.jpa.hibernate.ddl-auto=update
spring.security.enabled=false
server.error.include-stacktrace=never
api.security.token.secret=${JWT_SECRET:SUA_CHAVE_SECRETA}```

Substitua SEU_USUARIO, SUA_SENHA, SUA_CHAVE_SECRETA e NOME_BANCO_DE_DADOS pelos valores adequados para sua configuração.

Estrutura do Banco de Dados

Tabela de Tópicos

CREATE TABLE topico (
    id BIGINT NOT NULL AUTO_INCREMENT,
    titulo VARCHAR(255) NOT NULL,
    mensagem TEXT NOT NULL,
    data_criacao TIMESTAMP NOT NULL,
    estado ENUM('NAO_RESPONDIDO', 'NAO_SOLUCIONADO', 'SOLUCIONADO', 'FECHADO') NOT NULL,
    autor VARCHAR(100) NOT NULL,
    curso VARCHAR(100) NOT NULL,
    PRIMARY KEY (id)
);

Tabela de Usuários

Tabela de usuarios já criada no migration/V1__create-table-usuarios.sql com os seguintes dados:

    CREATE TABLE usuarios(
    id bigint not null auto_increment,
    login varchar(100) not null,
    senha varchar(255) not null,

    primary key(id)
);

Endpoints da API

Autenticação

  • POST /login: Autentica um usuário e retorna um token JWT.

Tópicos

  • GET /topicos: Lista todos os tópicos.
  • GET /topicos/{id}: Detalha um tópico específico.
  • POST /topicos: Cria um novo tópico.
  • PUT /topicos/{id}: Atualiza um tópico existente.
  • DELETE /topicos/{id}: Exclui um tópico.

Documentação da API com Swagger

A API ForumHub está equipada com documentação Swagger para facilitar a visualização e teste dos endpoints. A documentação pode ser acessada através dos seguintes endpoints:

Testando a API de outra forma

Você também pode usar Postman ou Insomnia para testar os endpoints da API. Certifique-se de incluir o token JWT nas requisições

forumhub's People

Contributors

onatom1 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.