Uma aplicação fullstack moderna para criação e gerenciamento de salas de perguntas e respostas com inteligência artificial integrada, desenvolvida com as mais recentes tecnologias web.
O LetMeAsk AI Agent é uma plataforma inteligente que permite criar salas virtuais onde usuários podem fazer perguntas e obter respostas automáticas geradas por IA. A aplicação utiliza Google Gemini AI para transcrever áudios, gerar embeddings e fornecer respostas contextuais baseadas no conteúdo das aulas ou apresentações. Ideal para sessões de Q&A, eventos educacionais, aulas ou qualquer situação que necessite de interação estruturada entre participantes com suporte de IA.
- 🏠 Criação de Salas: Crie salas personalizadas com nome e descrição
- ❓ Sistema de Perguntas: Adicione perguntas às salas de forma intuitiva
- 🤖 IA Integrada: Respostas automáticas geradas por Google Gemini AI
- 🎤 Transcrição de Áudio: Upload e transcrição automática de arquivos de áudio
- 🧠 Busca Semântica: Sistema de embeddings para busca contextual
- 📊 Dashboard: Visualize todas as salas com informações relevantes
- 🔄 Atualizações em Tempo Real: Interface reativa com React Query
- 📱 Design Responsivo: Interface moderna e adaptável a diferentes dispositivos
- Node.js - Runtime JavaScript
- Fastify - Framework web rápido e eficiente
- TypeScript - Tipagem estática
- Drizzle ORM - ORM moderno para PostgreSQL
- PostgreSQL - Banco de dados relacional com suporte a vetores
- Google Gemini AI - IA para transcrição, embeddings e geração de respostas
- Zod - Validação de schemas
- Docker - Containerização do banco de dados
- React 19 - Biblioteca para interfaces de usuário
- TypeScript - Tipagem estática
- Vite - Build tool moderna e rápida
- React Query (TanStack Query) - Gerenciamento de estado servidor
- React Hook Form - Gerenciamento de formulários
- React Router DOM - Roteamento
- Tailwind CSS - Framework CSS utilitário
- Radix UI - Componentes acessíveis
- Lucide React - Ícones modernos
- Day.js - Manipulação de datas
- Node.js (versão 18+)
- Docker e Docker Compose
- PostgreSQL (ou usar o Docker)
git clone https://github.com/seu-usuario/letmeask-ai-agent.git
cd letmeask-ai-agent
cd server
# Instale as dependências
npm install
# Configure as variáveis de ambiente
cp .env.example .env
# Edite o arquivo .env com suas configurações
# IMPORTANTE: Adicione sua chave da API do Google Gemini em GEMINI_API_KEY
# Inicie o banco de dados com Docker
docker-compose up -d
# Execute as migrações
npm run db:migrate
# (Opcional) Popule o banco com dados de exemplo
npm run db:seed
# Inicie o servidor de desenvolvimento
npm run dev
cd ../web
# Instale as dependências
npm install
# Inicie o servidor de desenvolvimento
npm run dev
- Frontend: http://localhost:5173
- Backend: http://localhost:3333
- Health Check: http://localhost:3333/health
letmeask-ai-agent/
├── server/ # Backend (API)
│ ├── src/
│ │ ├── db/ # Configuração do banco de dados
│ │ │ ├── schema/ # Schemas das tabelas
│ │ │ ├── migrations/# Migrações do banco
│ │ │ └── seed.ts # Dados de exemplo
│ │ ├── http/ # Rotas da API
│ │ │ └── routes/ # Endpoints organizados
│ │ ├── services/ # Serviços de IA (Gemini)
│ │ ├── env.ts # Configuração de ambiente
│ │ └── server.ts # Servidor principal
│ ├── docker-compose.yaml
│ └── package.json
│
├── web/ # Frontend (React)
│ ├── src/
│ │ ├── components/ # Componentes React
│ │ │ └── ui/ # Componentes de UI reutilizáveis
│ │ ├── http/ # Hooks para API
│ │ ├── pages/ # Páginas da aplicação
│ │ ├── lib/ # Utilitários
│ │ └── main.tsx # Ponto de entrada
│ └── package.json
│
└── README.md
GET /rooms
- Lista todas as salasPOST /rooms
- Cria uma nova sala
GET /rooms/:roomId/questions
- Lista perguntas de uma salaPOST /rooms/:roomId/questions
- Cria uma pergunta em uma sala (com resposta automática por IA)
POST /rooms/:roomId/upload-audio
- Upload e transcrição de áudio com IA
GET /health
- Status da API
- RoomList: Lista de salas com informações resumidas
- CreateRoomForm: Formulário para criação de salas
- QuestionForm: Formulário para adicionar perguntas
- QuestionItem: Exibição individual de perguntas
- useRooms: Busca lista de salas
- useCreateRoom: Criação de salas com invalidação automática
- useRoomQuestions: Busca perguntas de uma sala específica
O projeto utiliza React Query para gerenciamento eficiente do estado servidor:
- Cache inteligente: Dados são armazenados em cache automaticamente
- Invalidação automática: Quando uma sala é criada, a lista é atualizada automaticamente
- Loading states: Estados de carregamento gerenciados automaticamente
- Error handling: Tratamento de erros integrado
Tabela: rooms
id
(UUID, PK)name
(TEXT, NOT NULL)description
(TEXT, NULLABLE)created_at
(TIMESTAMP)
Tabela: questions
id
(UUID, PK)room_id
(UUID, FK → rooms.id)question
(TEXT, NOT NULL)answer
(TEXT, NULLABLE)created_at
(TIMESTAMP)
Tabela: audio_chunks
id
(UUID, PK)room_id
(UUID, FK → rooms.id)transcription
(TEXT, NOT NULL)embeddings
(VECTOR[768], NOT NULL)created_at
(TIMESTAMP)
Recomendado: Railway, Render ou Heroku
# Build para produção
npm run build
# Executar em produção
npm start
Recomendado: Vercel, Netlify ou Surge
# Build para produção
npm run build
# Preview local
npm run preview
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
- Upload de arquivos de áudio (MP3, WAV, etc.)
- Transcrição automática usando Google Gemini AI
- Processamento em português brasileiro
- Geração automática de embeddings para transcrições
- Busca semântica baseada em similaridade vetorial
- Armazenamento eficiente em PostgreSQL com extensão pgvector
- Respostas automáticas contextuais para perguntas
- Baseadas no conteúdo das transcrições de áudio
- Citação de trechos relevantes do contexto
- Importante destacar que este projeto foca na integração e aplicação de inteligência artificial, priorizando funcionalidade ao invés de aspectos visuais elaborados.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes. Projeto criado juntamente ao NLW Agents (Rocketseat).
Peterson Silva
- GitHub: @peterpaulodev
- LinkedIn: Peterson Silva
⭐ Se este projeto te ajudou, considere dar uma estrela no repositório!