Skip to content

joschonarth/let-me-ask-server

Repository files navigation

let me ask

💬 let me ask API

Pergunte, e a IA responde.

last-commit repo-top-language repo-language-count

📃 Sobre  •   🛠️ Tecnologias  •   ✨ Funcionalidades  •   🚀 Como rodar  •   🤖 IA & Áudio


📃 Sobre

O let me ask é uma aplicação web de perguntas e respostas voltada para aulas e transmissões ao vivo, e este repositório contém a API REST que a alimenta. O apresentador grava um áudio com o conteúdo da aula ou explicação, e os participantes podem fazer perguntas que são respondidas automaticamente pelo Google Gemini com base no que foi dito na gravação — evitando que dúvidas já abordadas no conteúdo precisem ser respondidas manualmente. O backend é construído com Node.js, Fastify, Drizzle ORM e PostgreSQL.


🛠️ Tecnologias

  • 🟩 Node.js — Ambiente de execução JavaScript server-side.
  • Fastify — Framework web focado em performance e baixo overhead.
  • 🟦 TypeScript — Tipagem estática e segurança em tempo de desenvolvimento.
  • 🤖 Google Gemini — Transcrição de áudio, geração de embeddings e respostas contextuais com IA.
  • 🗃️ Drizzle ORM — ORM moderno e type-safe para TypeScript.
  • 🐘 PostgreSQL — Banco de dados relacional para persistência dos dados.
  • 🐳 Docker — Containerização do banco de dados para ambiente reproduzível.
  • 📦 @fastify/multipart — Recebimento de arquivos de áudio via upload multipart.
  • 🛡️ Zod — Validação e parsing de schemas com inferência de tipos.
  • 🔍 Biome — Linting e formatação de código de alta performance.

✨ Funcionalidades

  • 🎙️ Gravação de áudio diretamente no navegador
  • 🤖 Transcrição automática do áudio com Google Gemini
  • 💬 Geração de respostas contextuais baseadas no conteúdo do áudio
  • 🔍 Geração de embeddings para análise de similaridade entre perguntas
  • ❓ Criação e listagem de perguntas por sala
  • 🏠 Criação e gerenciamento de salas
  • 🛡️ Validação de dados com Zod

🚀 Como rodar

📋 Pré-requisitos

🔧 Instalação

  1. Clone o repositório:

    git clone https://github.com/joschonarth/let-me-ask-server.git
  2. Acesse a pasta do projeto:

    cd let-me-ask-server
  3. Instale as dependências:

    npm install
  4. Configure as variáveis de ambiente copiando o arquivo de exemplo:

    cp .env.example .env

    Em seguida, abra o arquivo .env e preencha as variáveis:

    DATABASE_URL=postgresql://docker:docker@localhost:5432/letmeask
    GEMINI_API_KEY=sua_gemini_api_key

🐳 Banco de dados

Suba o container do PostgreSQL com Docker:

docker compose up -d

Gere o client do Prisma:

npm run db:generate

Execute as migrations para criar as tabelas:

npm run db:migrate

Opcionalmente, popule o banco com dados de seed:

npm run db:seed

▶️ Execução

Inicia o servidor em modo de desenvolvimento:

npm run dev

O servidor estará disponível em http://localhost:3333.


🤖 IA & Áudio

O projeto utiliza o Google Gemini como motor de inteligência artificial para processar as perguntas em áudio enviadas pelos participantes.

O fluxo de processamento funciona da seguinte forma:

  • O áudio gravado no navegador é enviado para a API via upload multipart;
  • O Gemini transcreve o áudio para texto;
  • São gerados embeddings da transcrição para análise de similaridade com perguntas anteriores;
  • Com base no conteúdo do áudio gravado e no histórico de perguntas, o Gemini gera uma resposta contextual e inteligente.

⭐ Apoie este Projeto

Se curtiu o projeto, deixe uma ⭐ aqui no GitHub — isso ajuda muito!


Feito com ♥ por João Otávio Schonarth

LinkedIn Gmail

Releases

No releases published

Packages

 
 
 

Contributors