O Matchbook é um sistema inteligente de recomendação de livros que utiliza algoritmos adaptativos para sugerir livros baseados no comportamento e preferências do usuário. O diferencial do sistema está na sua capacidade de * aprender e se adaptar* conforme o usuário aceita ou recusa recomendações.
O sistema implementa 4 estratégias diferentes que são aplicadas automaticamente baseadas no histórico de interações do usuário:
| Estratégia | Condição | Comportamento |
|---|---|---|
| PADRÃO | 0-4 recusas | Algoritmo original baseado em preferências do perfil |
| DIVERSIFICADO | 5-9 recusas | Mistura preferências com diversidade de gêneros |
| EXPLORATÓRIO | 10+ recusas | Recomendações aleatórias para quebrar padrões ruins |
| REFINADO | 3+ aceitações | Foca nas preferências aprendidas pelo comportamento |
- Usuário recebe recomendação → Aceita ou Recusa
- Sistema registra interação → Analisa padrões de comportamento
- Algoritmo se adapta → Muda estratégia baseada no histórico
- Próximas recomendações → Usa nova estratégia adaptada
O sistema calcula um score para cada livro baseado em:
- 40% - Compatibilidade com gênero favorito
- 30% - Compatibilidade com autor preferido
- 30% - Adequação ao nível de leitura (páginas)
- Java 17 ou superior
- Maven 3.8+
- Docker e Docker Compose
- Git
# 1. Clonar o repositório
git clone <url-do-repositorio>
cd matchbook
# 2. Compilar o projeto
./mvnw clean package -DskipTests
# 3. Subir com Docker Compose
docker compose up --build
# 4. Acessar a aplicação
# API: http://localhost:8080
# MySQL: localhost:3307# 1. Clonar o repositório
git clone <url-do-repositorio>
cd matchbook
# 2. Compilar o projeto
mvnw.cmd clean package -DskipTests
# 3. Subir com Docker Compose
docker compose up --build
# 4. Acessar a aplicação
# API: http://localhost:8080
# MySQL: localhost:3307O projeto inclui configuração completa do Docker Compose que sobe:
- MySQL 8.0 na porta 3307
- Spring Boot App na porta 8080
- Dados iniciais carregados automaticamente
# Subir os serviços
docker compose up --build
# Parar os serviços
docker compose down
# Ver logs
docker compose logs -f
# Rebuild completo
docker compose down && docker compose up --build| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/usuario |
Listar todos os usuários |
| GET | /api/usuario/{id} |
Buscar usuário por ID |
| POST | /api/usuario |
Criar novo usuário |
| PUT | /api/usuario/{id} |
Atualizar usuário |
| DELETE | /api/usuario/{id} |
Deletar usuário |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/livro |
Listar todos os livros |
| GET | /api/livro/{id} |
Buscar livro por ID |
| GET | /api/livro/recomendacoes/{usuarioId} |
Recomendações simples |
| POST | /api/livro |
Criar novo livro |
| PUT | /api/livro/{id} |
Atualizar livro |
| DELETE | /api/livro/{id} |
Deletar livro |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/recomendacao/getRecomendacao/{id} |
Recomendações algoritmo original |
| GET | /api/recomendacao/getRecomendacaoAdaptativa/{id} |
Recomendações algoritmo adaptativo |
| POST | /api/recomendacao/aceitar |
Aceitar recomendação |
| POST | /api/recomendacao/recusar |
Recusar recomendação |
| GET | /api/recomendacao/estatisticas/{id} |
Estatísticas do usuário |
| POST | /api/recomendacao/resetarAlgoritmo/{id} |
Resetar histórico do usuário |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/livro-aceito/{usuarioId} |
Listar livros curtidos |
| POST | /api/livro-aceito |
Curtir livro |
| DELETE | /api/livro-aceito |
Descurtir livro |
curl -X POST "http://localhost:8080/api/recomendacao/aceitar" \
-d "idUsuario=1&idLivro=5"curl -X POST "http://localhost:8080/api/recomendacao/recusar" \
-d "idUsuario=1&idLivro=3"curl "http://localhost:8080/api/recomendacao/estatisticas/1"Resposta:
{
"totalRecusas": 7,
"totalAceites": 2,
"taxaAceitacao": 22.22,
"estrategiaAtual": "DIVERSIFICADO"
}curl "http://localhost:8080/api/recomendacao/getRecomendacaoAdaptativa/1"- usuarios - Dados dos usuários e preferências
- livros - Catálogo de livros disponíveis
- livros_aceitos - Histórico de livros curtidos
- livros_recusados - Histórico de livros recusados
O sistema vem com 30 livros pré-cadastrados e usuários de exemplo para teste.
SPRING_DATASOURCE_URL- URL do banco MySQLSPRING_DATASOURCE_USERNAME- Usuário do bancoSPRING_DATASOURCE_PASSWORD- Senha do bancoSPRING_JPA_HIBERNATE_DDL_AUTO- Configuração do Hibernate
spring.datasource.url=jdbc:mysql://localhost:3307/matchbook
spring.datasource.username=matchbook_user
spring.datasource.password=matchbook_pass
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true- Criar um usuário via POST
/api/usuario - Obter recomendações via GET
/api/recomendacao/getRecomendacaoAdaptativa/{id} - Aceitar/Recusar livros para treinar o algoritmo
- Ver como o algoritmo se adapta via GET
/api/recomendacao/estatisticas/{id}
- Fork o projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Desenvolvido com ❤️ usando Spring Boot + Docker + Algoritmos Adaptativos