Skip to content

Uma breve API REST de postagens com cadastro de usuários e relacionamento com suas postagens e comentários. Futuramente possa se tornar uma implementação de um sistema mais completo, como um blog.

Notifications You must be signed in to change notification settings

DrakoMichael/posting

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Posting - API RESTful de Gerenciamento de Postagens

Posting Login

Sobre o Projeto

Posting é uma API RESTful completa desenvolvida em Java com Spring Boot, projetada para gerenciar postagens, comentários, categorias e usuários. O projeto inclui um frontend moderno e intuitivo desenvolvido em HTML, CSS e JavaScript puro.

A aplicação implementa autenticação e autorização via JWT (JSON Web Tokens), garantindo segurança e controle de acesso para todas as operações.


Funcionalidades

Autenticação e Autorização

  • Login de usuários com JWT
  • Proteção de rotas e endpoints
  • Controle de acesso baseado em roles

Gerenciamento de Postagens

  • Criação, leitura, atualização e exclusão de postagens
  • Categorização de postagens
  • Paginação de resultados
  • CRUD completo de postagens

Sistema de Comentários

  • Adicionar comentários nas postagens
  • Gerenciamento de comentários por usuário
  • Relacionamento entre postagens e comentários
  • CRUD completo de comentários

Gerenciamento de Usuários

  • Cadastro e autenticação de usuários
  • Perfil de usuário com endereço
  • Atualização de dados pessoais
  • CRUD completo de usuários e endereços

Categorias

  • Organização de postagens por categorias
  • CRUD completo de categorias

Interface do Usuário

Tela de Login

Login

Hub de Postagens

Hub de Postagens

Criar Nova Postagem

Criar Postagem

Configuracao (.env)

Crie um arquivo .env na raiz do projeto com as variaveis abaixo (ajuste conforme seu banco). A aplicacao carrega esse arquivo via dotenv-java no startup:

SPRING_PROFILES_ACTIVE=test
API_SECURITY_TOKEN_SECRET=change-me
SERVER_PORT=8080

DB_HOST=localhost
DB_PORT=5432
DB_NAME=posting
DB_USER=seu_usuario
DB_PASSWORD=sua_senha

TEST_DB_DRIVER=org.h2.Driver
TEST_DB_URL=jdbc:h2:mem:test
TEST_DB_USER=sa
TEST_DB_PASSWORD=123
TEST_DB_DIALECT=org.hibernate.dialect.H2Dialect

Versoes

  • SDK (JDK): 21
  • Java: 21

Status do Projeto

Este projeto está em desenvolvimento ativo! Novas funcionalidades estão sendo implementadas regularmente. Grande parte das funcionalidades já estão disponíveis no backend, e estão sendo integradas ao frontend!

Funcionalidades Futuras
As seguintes features estão planejadas e em desenvolvimento:

  • Sistema de Pesquisa Avançado:
    Página dedicada de pesquisa Busca por usuários - encontre pessoas na plataforma Busca por postagens - pesquise conteúdos por título ou descrição Busca por categorias - filtre postagens por categoria Sistema de filtros e ordenação de resultados

  • Perfis de Usuário Completos:
    Página de perfil personalizada para cada usuário Visualização de postagens próprias organizadas Lista de amigos/seguidores Sistema de seguir/deixar de seguir usuários Estatísticas do perfil (total de posts, seguidores, etc.)

  • Sistema de Interações:
    Likes em postagens Contador de curtidas por postagem Lista de postagens curtidas pelo usuário Sistema de salvos - salve postagens para ler depois Coleção pessoal de postagens salvas

  • Painel Administrativo:
    Dashboard admin para controle completo do sistema Gerenciamento de usuários (banir, promover, remover) Moderação de conteúdo (aprovar, remover postagens) Gerenciamento de categorias Controle de recursos privados Estatísticas e relatórios do sistema Logs de atividades


Tecnologias Utilizadas

Backend

  • Java - Linguagem de programação principal
  • Spring Boot - Framework para desenvolvimento rápido
  • Spring Security - Autenticação e autorização
  • Spring Data JPA - ORM para persistência de dados
  • JWT (JSON Web Tokens) - Autenticação stateless
  • Bean Validation - Validação de dados
  • PostgreSQL/MySQL - Banco de dados relacional
  • Maven - Gerenciamento de dependências

Frontend

  • HTML5 - Estruturação de páginas
  • CSS3 - Estilização e layout responsivo
  • JavaScript - Interatividade e consumo da API

Arquitetura e Padrões

Padrões Implementados

  • DTO (Data Transfer Object) - Separação entre camadas
  • Mapper - Conversão entre entidades e DTOs
  • Repository Pattern - Abstração de acesso a dados
  • Service Layer - Lógica de negócio
  • RESTful API - Padrão de comunicação HTTP

Recursos Avançados

  • Validação de dados com Bean Validation
  • Paginação de resultados
  • Tratamento de exceções personalizadas
  • Relacionamentos entre entidades (One-to-Many, Many-to-One)
  • CORS configurado para o frontend

Segurança

Autenticação JWT

O sistema utiliza JWT para autenticação stateless. Após o login bem-sucedido, o cliente recebe um token que deve ser enviado no header de todas as requisições protegidas:

Authorization: Bearer seu_token_jwt_aqui

Criptografia

  • Senhas são criptografadas usando BCrypt
  • Tokens JWT são assinados digitalmente

⭐ Se este projeto foi útil, considere dar uma estrela!

a

Estrutura do codigo: camadas em config, dto, entities, mapper, repositories, resources e services organizam configuracoes, contratos, persistencia e regras de negocio, com PostApplication iniciando a aplicacao.

About

Uma breve API REST de postagens com cadastro de usuários e relacionamento com suas postagens e comentários. Futuramente possa se tornar uma implementação de um sistema mais completo, como um blog.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 57.3%
  • JavaScript 17.0%
  • HTML 15.3%
  • CSS 10.4%