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.
- Login de usuários com JWT
- Proteção de rotas e endpoints
- Controle de acesso baseado em roles
- Criação, leitura, atualização e exclusão de postagens
- Categorização de postagens
- Paginação de resultados
- CRUD completo de postagens
- Adicionar comentários nas postagens
- Gerenciamento de comentários por usuário
- Relacionamento entre postagens e comentários
- CRUD completo de comentá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
- Organização de postagens por categorias
- CRUD completo de categorias
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- SDK (JDK): 21
- Java: 21
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
- 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
- HTML5 - Estruturação de páginas
- CSS3 - Estilização e layout responsivo
- JavaScript - Interatividade e consumo da API
- 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
- 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
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- Senhas são criptografadas usando BCrypt
- Tokens JWT são assinados digitalmente
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.



