O Let me Ask é uma plataforma interativa projetada para facilitar a criação e gerenciamento de salas de perguntas e respostas. É ideal para eventos, palestras ou qualquer situação onde a interação com o público é fundamental. A aplicação foi construída utilizando uma arquitetura de monorepo com Turborepo, separando o back-end, front-end e pacotes compartilhados.
- Criação de Salas: Usuários podem criar salas temáticas.
- Sistema de Perguntas: Envio e listagem de perguntas em tempo real.
- Gravação de Áudio: Grave e transcreva áudios para gerar perguntas automaticamente com IA.
- Interação: Funcionalidades para destacar ou marcar perguntas como respondidas.
O projeto foi desenvolvido com as seguintes tecnologias:
| Área | Tecnologia | Descrição |
|---|---|---|
| API | Fastify | Framework web focado em performance e baixo overhead. |
| Drizzle ORM | ORM TypeScript moderno e seguro para interação com o banco de dados. | |
| PostgreSQL | Banco de dados relacional utilizado para persistir os dados. | |
| Gemini | API de IA do Google para transcrição de áudio e geração de conteúdo. | |
| TypeScript | Superset do JavaScript que adiciona tipagem estática. | |
| WEB | React | Biblioteca para construção de interfaces de usuário. |
| Vite | Ferramenta de build moderna e ultrarrápida para o desenvolvimento front-end. | |
| TypeScript | Garante a segurança e a manutenibilidade do código. | |
| Tailwind CSS | Framework CSS utility-first para estilização rápida e customizável. | |
| TanStack Query | Gerenciamento de estado de servidor, cache e sincronização de dados. | |
| Monorepo | Turborepo | Sistema de build de alta performance para monorepos. |
| pnpm | Gerenciador de pacotes rápido e eficiente com o espaço em disco. | |
| Infra | Docker | Plataforma para desenvolvimento, deploy e execução de aplicações em contêineres. |
O projeto utiliza uma arquitetura de monorepo para gerenciar o código de forma centralizada, facilitando o compartilhamento de lógica e tipos entre as aplicações.
/
├── apps/
│ ├── api/ # Back-end (Fastify)
│ └── web/ # Front-end (React + Vite)
├── packages/
│ ├── db/ # Configuração do Drizzle ORM e schema do banco
│ └── env/ # Gerenciamento de variáveis de ambiente com Zod
└── ...Siga os passos abaixo para executar o projeto em seu ambiente local.
Pré-requisitos:
Passos:
-
Clone o repositório:
git clone https://github.com/DevPedroHB/nlw-agents.git cd nlw-agents -
Instale as dependências:
pnpm i
-
Configure as variáveis de ambiente:
- Copie o arquivo
.env.examplepara.env. - Preencha as variáveis de ambiente conforme necessário, incluindo sua chave da API do Gemini.
- Copie o arquivo
-
Inicie o banco de dados com Docker:
docker-compose up -d
-
Execute as migrações do banco:
cd packages/db pnpm run db:migrate -
Inicie a aplicação:
pnpm run dev
Após esses passos, a aplicação web estará disponível em http://localhost:5173 e a API em http://localhost:3333.
Este projeto está licenciado sob a licença do MIT.
Feito com ❤️ por Pedro Henrique Bérgamo 🚀 Never stop learning!