Um gerador de ideias de startup que utiliza a API do Gemini para fornecer sugestões criativas com base na entrada do usuário.
- Tecnologias Utilizadas
- Instalação
- Uso
- Estrutura do Projeto
- Código
- Boas Práticas
- Segurança
- Contribuição
- Backend: Node.js, Express
- Frontend: HTML, CSS, JavaScript
- API: Gemini API (Google Cloud)
Certifique-se de ter o Node.js e o Git instalados em sua máquina.
-
Clone o repositório:
git clone https://github.com/username/repo.git cd repo
-
Instale as dependências do backend:
cd backend npm install
-
Crie um arquivo .env na pasta backend e adicione sua chave da API:
GEMINI_API_KEY=your_actual_api_key_here
-
Inicie o servidor:
node server.js
-
Abra o frontend em um navegador:
Acesse http://localhost:3000.
-
Digite sua ideia no campo de texto.
-
Clique no botão "Gerar Ideia".
-
A resposta gerada será exibida abaixo.
/project-root
│
├── /backend # Código do servidor
│ ├── server.js # Código principal do servidor
│ ├── .env # Variáveis de ambiente (não deve ser versionado)
│ └── package.json # Dependências do projeto
│
├── /frontend # Código do cliente
│ ├── index.html # Estrutura HTML da aplicação
│ ├── styles.css # Estilos da aplicação
│ └── script.js # Lógica JavaScript da aplicação
│
└── .gitignore # Arquivos a serem ignorados pelo Git
const express = require("express");
const axios = require("axios");
const cors = require("cors");
require("dotenv").config();
const app = express();
const PORT = process.env.PORT || 3000;
app.use(cors());
app.use(express.json());
app.post("/generate-idea", async (req, res) => {
const userInput = req.body.input?.trim() || "Gere uma ideia de startup inovadora";
const jsonPayload = {
contents: [{ parts: [{ text: userInput }] }],
};
try {
const response = await axios.post(
`https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${process.env.GEMINI_API_KEY}`,
jsonPayload,
{ headers: { "Content-Type": "application/json" } }
);
res.status(200).json(response.data);
} catch (error) {
res.status(500).json({ error: "Failed to generate content" });
}
});
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
document.getElementById("generateButton").addEventListener("click", async () => {
const userInput = document.getElementById("userInput").value;
try {
const response = await fetch("http://localhost:3000/generate-idea", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ input: userInput }),
});
const data = await response.json();
if (response.ok) {
const generatedIdea = data.candidates.content;
document.getElementById("result").innerText = generatedIdea.parts.map(part => part.text).join('');
} else {
document.getElementById("result").innerText = `Erro ao gerar ideia: ${data.error || 'Erro desconhecido.'}`;
}
} catch (error) {
console.error("Error:", error);
document.getElementById("result").innerText = "Erro: Ocorreu um problema ao gerar a ideia.";
}
});
-Versionamento: Use um sistema de controle de versão como Git.
-Documentação: Mantenha a documentação atualizada.
-Segurança: Nunca exponha chaves da API ou credenciais.
-Adicione o arquivo .env ao .gitignore para evitar que suas credenciais sejam versionadas.
-Armazene chaves sensíveis como segredos no GitHub se estiver usando GitHub Actions.
Contribuições são bem-vindas! Sinta-se à vontade para abrir uma issue ou enviar um pull request.
- Clareza e Concisão: Use uma linguagem clara e evite jargões desnecessários.
- Estrutura Lógica: Organize a documentação em seções lógicas com um índice para facilitar a navegação.
- Exemplos Práticos: Inclua exemplos de código e uso para ajudar os usuários a entender como utilizar o projeto.
- Atualização Regular: Mantenha a documentação atualizada conforme o projeto evolui.