{"id":24308784,"url":"https://github.com/lucca16bit/spring-forum-hub","last_synced_at":"2026-05-02T08:31:52.934Z","repository":{"id":271601153,"uuid":"913947371","full_name":"lucca16bit/spring-forum-hub","owner":"lucca16bit","description":"API Rest para o ForumHub, desenvolvido com o objetivo de praticar conceitos de desenvolvimento back-end, arquitetura REST e integrações com banco de dados.","archived":false,"fork":false,"pushed_at":"2025-02-20T18:24:50.000Z","size":145,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-09T23:36:14.265Z","etag":null,"topics":["api-rest","flyway","java","jpa","jwt-token","postgresql","spring-boot","spring-docs","spring-security","swagger-ui"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucca16bit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-08T16:51:08.000Z","updated_at":"2025-02-20T18:24:53.000Z","dependencies_parsed_at":"2025-02-19T20:34:25.142Z","dependency_job_id":null,"html_url":"https://github.com/lucca16bit/spring-forum-hub","commit_stats":null,"previous_names":["lucca16bit/spring-forum-hub"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lucca16bit/spring-forum-hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucca16bit%2Fspring-forum-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucca16bit%2Fspring-forum-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucca16bit%2Fspring-forum-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucca16bit%2Fspring-forum-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucca16bit","download_url":"https://codeload.github.com/lucca16bit/spring-forum-hub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucca16bit%2Fspring-forum-hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32528184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","flyway","java","jpa","jwt-token","postgresql","spring-boot","spring-docs","spring-security","swagger-ui"],"created_at":"2025-01-17T05:11:34.666Z","updated_at":"2026-05-02T08:31:52.897Z","avatar_url":"https://github.com/lucca16bit.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Forum Hub\n\nBem-vindo ao ForumHub, uma API REST construída para gerenciar tópicos e discussões em fóruns. Este projeto foi desenvolvido com o objetivo de praticar conceitos de desenvolvimento backend, arquitetura REST e integrações com banco de dados.\n\n## Funcionalidades\n\n1. **Cadastro de Tópicos**: Permite criar tópicos com título, mensagem, autor e curso.\n\n2. **Listagem de Tópicos**: Endpoint para listar todos os tópicos cadastrados.\n\n3. **Detalhes de um Tópico**: Endpoint para recuperar informações detalhadas de um tópico pelo seu ID.\n\n4. **Exclusão de um tópico**: Endpoint para excluir um tópico utilizando o ID como base de busca.\n\n5. **Autenticação JWT**: Garante a segurança da API com autenticação baseada em tokens.\n\n\n## Tecnologias utilizadas\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"https://skillicons.dev\"\u003e\n    \u003cimg src=\"https://skillicons.dev/icons?i=java,spring,maven,postgresql\u0026perline=9\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Rotas disponíveis\n\n1. Cadastro de Usuário\n   - Endpoint: /cadastro\n   - Método: POST\n   - Corpo da requisição:\n    ```json\n      {\n        \"nome\": \"nome do usuario\",\n        \"email\": \"email do usuario\",\n        \"senha\": \"senha do usuario\"\n      }\n    ```\n   _**Resposta**: 200 Ok com o usuário cadastrado_\n\n\n2. Autenticação JWT\n   - Endpoint: /login\n   - Método: POST\n   - Corpo da requisição:\n    ```json\n      {\n        \"email\": \"email do usuario\",\n        \"senha\": \"senha do usuario\"\n      }\n    ```\n   _**Resposta**: 200 Ok com o usuário logado_\n    - Observação: Todos os endpoints que exigem autenticação devem incluir o token JWT no cabeçalho da requisição com o nome Authorization e o token no prefixo Bearer. Exemplo:\n   ```\n        Authorization: \u003ctoken_jwt\u003e\n   ```\n\n\n3. Cadastro de Tópicos\n   - Endpoint: /topicos\n   - Método: POST\n   - Corpo da requisição:\n   ```json\n    {\n        \"titulo\": \"Título do tópico\",\n        \"mensagem\": \"Mensagem do tópico\",\n        \"autor\": \"Nome do autor\",\n        \"curso\": \"Nome do curso\"\n    }\n   ```\n   _**Resposta**: 201 Created com o ID do tópico criado_\n\n\n4. Listagem de Tópicos\n   - Endpoint: /topicos\n   - Método: GET\n   - **Resposta**: 200 OK com uma lista de tópicos em formato JSON\n   ```json\n      \"content\": [\n            {\n                \"id\": 1,\n                \"titulo\": \"Dúvida Spring Boot\",\n                \"mensagem\": \"Como implementar validação?\",\n                \"dataCriacao\": \"16/01/2025 13:11\",\n                \"status\": \"NAO_RESPONDIDO\",\n                \"autor\": \"fern\",\n                \"curso\": \"Spring Boot\"\n            },\n            {\n                \"id\": 2,\n                \"titulo\": \"Dúvidas sobre supressão de mana\",\n                \"mensagem\": \"depois de 2 mil anos fazendo isso, percebi que não estou mais aguentando suprimir minha mana\",\n                \"dataCriacao\": \"16/01/2025 13:16\",\n                \"status\": \"NAO_RESPONDIDO\",\n                \"autor\": \"frieren\",\n                \"curso\": \"Magia ancestral\"\n            }\n       ]\n    ```\n\n\n5. Detalhes de um Tópico\n   - Endpoint: /topicos/{id}\n   - Método: GET\n   - Resposta: 200 OK com as informações detalhadas do tópico em formato JSON\n   ```json\n    {\n      \"id\": 2,\n      \"titulo\": \"Dúvidas sobre supressão de mana\",\n      \"mensagem\": \"depois de 2 mil anos fazendo isso, percebi que não estou mais aguentando suprimir minha mana\",\n      \"dataCriacao\": \"16/01/2025 13:16\",\n      \"status\": \"NAO_RESPONDIDO\",\n      \"autor\": \"frieren\",\n      \"curso\": \"Magia ancestral\"\n    }\n    ```\n\n6. Atualizar um Tópico\n    - Endpoint: /topicos\n    - Método: PUT\n    - Corpo da requisição:\n   ```json\n    {\n      \"id\": id_topico,\n      \"titulo\": \"Alterar título do tópico\",\n      \"mensagem\": \"Alterar mensagem do tópico\",\n      \"curso\": \"Alterar nome do curso\"\n    }\n    ```\n    _**Resposta**: 200 Ok com informações atualizadas_\n\n\n7. Exclusão de um Tópico\n   - Endpoint: /topicos/{id}\n   - Método: DELETE\n   - **Resposta**: 204 No Content se o tópico for excluído com sucesso\n\n## Como Executar o Projeto\n- Java JDK 17 ou superior.\n- Gerenciador de pacotes maven instalado.\n- Banco de dados configurado (por exemplo: MySQL ou PostgreSQL).\n- Ferramenta para teste de Api (por exemplo: Postman ou Insomnia)\n\n## Passos para Execução\n\n1. Clone o repositório:\n    ```bash\n    git clone https://github.com/lucca16bit/spring-forum-hub\n    cd spring-forum-hub\n    ```\n2. Configure o banco de dados:\n    ```properties\n    spring.datasource.url=jdbc:mysql://localhost:3306/forum_hub\n    spring.datasource.username=seu-usuario\n    spring.datasource.password=sua-senha\n    spring.jpa.hibernate.ddl-auto=update\n    api.security.token.secret=sua-senha-jwt\n    ```\n3. Compile e execute o projeto:\n    ```bash\n    mvn clean install\n    mvn spring-boot:run\n    ```\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"src/main/resources/assets/badge-spring.png\" alt=\"badge literalura\" width=\"300\"\u003e\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucca16bit%2Fspring-forum-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucca16bit%2Fspring-forum-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucca16bit%2Fspring-forum-hub/lists"}