Uma API REST avançada para interação com modelos de IA desenvolvida com Spring Boot, que oferece funcionalidades de chat inteligente com múltiplos modelos de linguagem através da integração com OpenRouter.
O NexusAI é uma plataforma robusta que permite aos usuários criar sessões de chat personalizadas e interagir com diversos modelos de IA. A aplicação oferece autenticação JWT, gerenciamento de sessões de chat com contexto persistente e uma arquitetura clean bem estruturada.
- 🔐 Sistema de Autenticação completo com JWT
- 💬 Chat Inteligente com múltiplos modelos de IA
- 📚 Gestão de Contexto - conversas com histórico completo
- 🗂️ Sessões Organizadas - criação e gerenciamento de chats
- 🔒 Segurança Avançada com Spring Security
- 📖 Documentação Automática com OpenAPI/Swagger
- 🏗️ Arquitetura Hexagonal (Clean Architecture)
- Java 21 - Linguagem principal
- Spring Boot 3.4.5 - Framework principal
- Spring Security - Autenticação e autorização
- Spring Data JPA - Persistência de dados
- MySQL - Banco de dados
- JWT (JJWT 0.12.6) - Tokens de autenticação
- OpenAPI 3 - Documentação da API
- Maven - Gerenciamento de dependências
- Hexagonal Architecture (Ports & Adapters)
- REST API com padrões RESTful
- DTO Pattern para transferência de dados
- Repository Pattern para acesso aos dados
- Java 21 ou superior
- MySQL 8.0+
- Maven 3.6+
git clone https://github.com/Lucas01012/NexusAI.git
cd NexusAICREATE DATABASE nexusai;Edite o arquivo src/main/resources/application.properties:
# Configuração do Banco de Dados
spring.datasource.url=jdbc:mysql://localhost:3306/nexusai
spring.datasource.username=seu_usuario
spring.datasource.password=sua_senha
# Configuração da API OpenRouter
openrounterbarreto.api.key=sua_chave_api_openrouter# Usando Maven Wrapper (recomendado)
./mvnw spring-boot:run
# Ou usando Maven diretamente
mvn spring-boot:runA aplicação estará disponível em: http://localhost:8080
Acesse a documentação interativa em: http://localhost:8080/swagger-ui.html
POST /auth/login # Login do usuário
POST /auth/register # Registro de novo usuárioGET /chatSessions/list # Listar sessões do usuário
POST /chatSessions/insert # Criar nova sessão
PUT /chatSessions/edit/{sessionId} # Editar título da sessão
DELETE /chatSessions/delete/{sessionId} # Deletar sessão
GET /chatSessions/{sessionId}/messages # Mensagens da sessãoPOST /chatSessions/{sessionId}/chatcontext # Chat com contexto completo
POST /chatSessions/{sessionId}/chatsimple # Chat simples (sem contexto)GET /chatMessages # Listar todas as mensagens do usuário
GET /chatMessages/{id} # Buscar mensagem específica
POST /chatMessages # Criar nova mensagem
PUT /chatMessages/{id} # Editar mensagem
DELETE /chatMessages/{id} # Deletar mensagemsrc/main/java/com/meialuaquadrado/nexusai/
├── adapters/
│ ├── in/ # Porta de entrada (Domain)
│ │ ├── entities/ # Entidades de domínio
│ │ │ ├── User.java
│ │ │ ├── ChatSession.java
│ │ │ └── ChatMessage.java
│ │ ├── repositories/ # Interfaces de repositório
│ │ ├── security/ # Configurações de segurança
│ │ └── services/ # Serviços de domínio
│ └── out/ # Porta de saída (Infrastructure)
│ └── controller/ # Controladores REST
├── models/ # DTOs e modelos de transferência
│ ├── AiDTOs/ # DTOs para integração com IA
│ ├── ChatSessionDtos/ # DTOs para sessões
│ └── [outros DTOs]
└── NexusAiApplication.java # Classe principal
- Controller → recebe requisições HTTP
- Service → processa lógica de negócio
- Repository → acesso aos dados
- External API → integração com OpenRouter
- JWT Authentication - Tokens seguros para autenticação
- Password Encryption - Senhas criptografadas com BCrypt
- CORS Configuration - Configurado para frontend (localhost:4200)
- Role-based Access - Controle de acesso por usuário
- Input Validation - Validação de dados de entrada
A aplicação se integra com diversos modelos através do OpenRouter:
- GPT-4, GPT-3.5-turbo
- Claude (Anthropic)
- Gemma (Google)
- E muitos outros modelos disponíveis
- Chat com Contexto: Mantém histórico completo da conversa
- Chat Simples: Cada mensagem é independente
- Registro e autenticação segura
- Perfis de usuário personalizados
- Sessões isoladas por usuário
- Criação de múltiplas sessões de chat
- Títulos personalizáveis
- Histórico completo de conversas
- Timestamps automáticos
- Suporte a múltiplos modelos de IA
- Contexto persistente entre mensagens
- Respostas em tempo real
- Histórico de conversas
# Executar todos os testes
./mvnw test
# Executar testes com relatório
./mvnw test -Dtest.report=true| Variável | Descrição | Obrigatória |
|---|---|---|
spring.datasource.url |
URL do banco MySQL | ✅ |
spring.datasource.username |
Usuário do banco | ✅ |
spring.datasource.password |
Senha do banco | ✅ |
openrounterbarreto.api.key |
Chave da API OpenRouter | ✅ |
# Dockerfile incluído no projeto
FROM openjdk:21-jdk-slim
COPY target/NexusAI-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]./mvnw clean package -DskipTests
java -jar target/NexusAI-0.0.1-SNAPSHOT.jar- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Sistema de roles e permissões avançado
- Interface web React/Angular
- Integração com mais provedores de IA
- Sistema de plugins
- Métricas e analytics
- Cache inteligente de respostas
- Suporte a arquivos e imagens
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Lucas Oliveira Silva
Alisson Mayer Medeji
Bruno Araujo de Souza
Gabriel Tavares Barsani
Henrique Barreto
Henrique Porto
Leonardo Costa Lima
Se você encontrar algum problema ou tiver dúvidas:
- Verifique a documentação da API
- Consulte as issues existentes
- Crie uma nova issue
⭐ Se este projeto foi útil para você, considere dar uma estrela!
Made with ❤️ and ☕ by
Lucas Oliveira Silva
Alisson Mayer Medeji
Bruno Araujo de Souza
Gabriel Tavares Barsani
Henrique Barreto
Henrique Porto
Leonardo Costa Lima