ProjectIdeaAI é uma aplicação Spring Boot que gera ideias de projetos de software usando a API da OpenAI, com base em dados previamente cadastrados no banco de dados.
- Sobre
- Como Funciona
- Tecnologias
- Instalação
- Uso
- Modelo de Dados
- Exemplo de Entrada
- Repositório
- Licença
Este projeto é uma API REST que consome a OpenAI Chat Completions para gerar uma ideia única de projeto baseada em todas as tecnologias cadastradas no banco de dados H2.
- Inicialização:
- O ponto de entrada é a classe
ProjectIdeaAiApplication.
- O ponto de entrada é a classe
- Configuração HTTP:
WebClientConfig.javaconfigura oWebClientpara chamar a API da OpenAI.
- Persistência:
- Os repositórios
IdeaRepositoryeTecnologiaRepositoryusam Spring Data JPA para CRUD.
- Os repositórios
- Modelo:
- As entidades principais são
IdeaeTecnologia, com relacionamento Many-to-Many.
- As entidades principais são
- Serviços:
ChatGptServiceformata os dados do banco em JSON e envia o prompt à OpenAI.IdeaServiceeTecnologiaServicegerenciam as operações CRUD dessas entidades.
- Controladores REST:
ProjectIdeaController,IdeaControllereTecnologiaControllerexpõem endpoints para gerar ideias e gerenciar recursos.
- Banco de Dados:
- Utiliza H2 em memória para desenvolvimento, com console em
/h2-console. - Migrações são gerenciadas via Flyway.
- Utiliza H2 em memória para desenvolvimento, com console em
- Java 17
- Spring Boot 3.4.4
- Spring WebFlux (WebClient)
- Spring Data JPA
- H2 Database
- Flyway
- OpenAI API (ChatGPT)
- Maven
- Java 17 ou superior
- Maven
- Variável de ambiente
API_KEYcom sua chave da OpenAI
# Clonar o repositório
git clone https://github.com/tonhowtf/ProjectIdeaAI.git
cd ProjectIdeaAI
# Definir variável de ambiente (Linux/macOS)
export API_KEY="sua_chave_aqui"
# Construir e executar
mvn clean install
mvn spring-boot:runA API ficará disponível em http://localhost:8080.
- GET
/ideas– lista todas as ideias cadastradas. - POST
/ideas– cadastra uma nova ideia no banco. - GET
/generate– gera uma ideia de projeto única usando as entradas do banco.
| Campo | Tipo |
|---|---|
id |
Long |
nome |
String |
descricao |
String |
categoria |
Enum Categoria |
dataCriacao |
LocalDateTime |
tecnologias |
List |
| Campo | Tipo |
|---|---|
id |
Long |
nome |
String |
tipo |
Enum TipoTecnologia |
ideias |
List |
Suponha que o banco contenha o seguinte JSON de uma ideia:
{
"nome": "Plataforma de IA para Devs",
"descricao": "Uma plataforma que ajuda devs a criar bots com IA.",
"categoria": "WEB",
"tecnologias": [
{ "nome": "Java", "tipo": "BACKEND" },
{ "nome": "Spring Boot", "tipo": "FRAMEWORK" },
{ "nome": "OpenAI API", "tipo": "API" }
]
}Ao chamar GET /generate, a API retornará uma única ideia de projeto baseada em todas essas tecnologias.
🔗 https://github.com/tonhowtf/ProjectIdeaAI
Este projeto está licenciado sob a MIT License.
