Instabytes API é um projeto desenvolvido com Node.js que fornece uma interface para gerenciar posts e realizar uploads de imagens. Ele também utiliza a API Gemini para gerar descrições automáticas para imagens enviadas.
A API suporta:
- Listagem de posts.
- Criação de posts enviando apenas uma imagem.
- Upload e atualização de imagens associadas aos posts.
- Geração automática de descrições para imagens usando a API Gemini.
A API está publicada no Google Cloud e pode ser acessada por meio da URL:
https://backend-instabytes-668468799247.southamerica-east1.run.app/
- Node.js (>=14.0.0)
- Express
- MongoDB para armazenamento de dados
- Multer para manipulação de uploads de arquivos
- CORS para controle de acesso entre domínios
- dotenv para configurações de ambiente
- @google/generative-ai para integração com o modelo Gemini
-
Clone o repositório:
git clone <url-do-repositorio> cd <nome-do-diretorio>
-
Instale as dependências:
npm install
-
Configure as variáveis de ambiente: Crie um arquivo
.env
na raiz do projeto e configure as seguintes variáveis:PORT=3000 MONGO_URI=<sua-string-de-conexão-MongoDB> GOOGLE_API_KEY=<sua-chave-para-o-Gemini>
-
Inicie o servidor em modo de desenvolvimento:
npm run dev
-
Acesse a API localmente em:
http://localhost:3000
- Endpoint:
GET /posts
- Descrição: Recupera uma lista de todos os posts registrados.
- Endpoint:
POST /posts
- Descrição: Permite criar um novo post enviando apenas uma imagem.
- Body esperado:
multipart/form-data
com o campoimagem
(contendo o arquivo a ser enviado).
- Endpoint:
POST /upload
- Descrição: Permite realizar o upload de uma imagem associada a um post.
- Body esperado:
multipart/form-data
com o campoimagem
(contendo o arquivo a ser enviado).
- Endpoint:
PUT /upload/:id
- Descrição: Atualiza os dados de um post já existente (incluindo a descrição gerada para a imagem).
- Funcionamento:
- Lê a imagem já enviada e gera uma descrição usando a API Gemini.
- Atualiza a URL da imagem e o texto alternativo (campo
alt
).
A API utiliza a biblioteca @google/generative-ai
para gerar descrições automáticas para imagens. A função gerarDescricaoComGemini
processa a imagem recebida e retorna uma descrição curta em português.