Skip to content

Lucas01012/NexusAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 NexusAI

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.

📋 Visão Geral

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.

✨ Principais Funcionalidades

  • 🔐 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)

🛠️ Stack Tecnológica

Backend

  • 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

Arquitetura

  • Hexagonal Architecture (Ports & Adapters)
  • REST API com padrões RESTful
  • DTO Pattern para transferência de dados
  • Repository Pattern para acesso aos dados

🚀 Instalação e Configuração

Pré-requisitos

  • Java 21 ou superior
  • MySQL 8.0+
  • Maven 3.6+

1. Clone o Repositório

git clone https://github.com/Lucas01012/NexusAI.git
cd NexusAI

2. Configuração do Banco de Dados

CREATE DATABASE nexusai;

3. Configuração das Variáveis de Ambiente

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

4. Executar a Aplicação

# Usando Maven Wrapper (recomendado)
./mvnw spring-boot:run

# Ou usando Maven diretamente
mvn spring-boot:run

A aplicação estará disponível em: http://localhost:8080

📖 Documentação da API

Swagger UI

Acesse a documentação interativa em: http://localhost:8080/swagger-ui.html

Principais Endpoints

🔐 Autenticação

POST /auth/login       # Login do usuário
POST /auth/register    # Registro de novo usuário

💬 Sessões de Chat

GET    /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ão

🤖 Interação com IA

POST /chatSessions/{sessionId}/chatcontext   # Chat com contexto completo
POST /chatSessions/{sessionId}/chatsimple    # Chat simples (sem contexto)

📝 Mensagens

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 mensagem

🏗️ Arquitetura do Projeto

src/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

Fluxo de Dados

  1. Controller → recebe requisições HTTP
  2. Service → processa lógica de negócio
  3. Repository → acesso aos dados
  4. External API → integração com OpenRouter

🔒 Segurança

  • 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

🤖 Integração com IA

Modelos Suportados

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

Tipos de Chat

  1. Chat com Contexto: Mantém histórico completo da conversa
  2. Chat Simples: Cada mensagem é independente

📊 Funcionalidades Principais

Sistema de Usuários

  • Registro e autenticação segura
  • Perfis de usuário personalizados
  • Sessões isoladas por usuário

Gerenciamento de Sessões

  • Criação de múltiplas sessões de chat
  • Títulos personalizáveis
  • Histórico completo de conversas
  • Timestamps automáticos

Interação Inteligente

  • Suporte a múltiplos modelos de IA
  • Contexto persistente entre mensagens
  • Respostas em tempo real
  • Histórico de conversas

🧪 Testes

# Executar todos os testes
./mvnw test

# Executar testes com relatório
./mvnw test -Dtest.report=true

📝 Variáveis de Ambiente

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

🚀 Deploy

Usando Docker (Recomendado)

# 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"]

Build para Produção

./mvnw clean package -DskipTests
java -jar target/NexusAI-0.0.1-SNAPSHOT.jar

🤝 Contribuindo

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📋 Roadmap

  • 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

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

👨‍💻 Desenvolvido por - Equipe Meia Lua ao Quadrado

Lucas Oliveira Silva

Alisson Mayer Medeji

Bruno Araujo de Souza

Gabriel Tavares Barsani

Henrique Barreto

Henrique Porto

Leonardo Costa Lima


🆘 Suporte

Se você encontrar algum problema ou tiver dúvidas:

  1. Verifique a documentação da API
  2. Consulte as issues existentes
  3. 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

About

Backend para a aplicação NexusAI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages