Aplicação web para criação de salas de perguntas e respostas com suporte a gravação de áudio, utilizando inteligência artificial para respostas.
- Node.js com TypeScript nativo (experimental strip types)
- Fastify — Framework web rápido e eficiente
- PostgreSQL com extensão pgvector para vetores
- Drizzle ORM — Type-safe database operations
- Zod — Schema validation
- Docker — Containerização do banco de dados
- Biome — Linting e formatação de código
O projeto segue uma arquitetura modular com:
- Separação de responsabilidades entre rotas, schemas e conexão com banco
- Validação de schemas com Zod para type safety
- ORM type-safe com Drizzle para operações de banco de dados
- Validação de variáveis de ambiente centralizadas
- Node.js (versão com suporte a
--experimental-strip-types) - Docker e Docker Compose
1️⃣ Clone o repositório
git clone <url-do-repositorio>
cd server2️⃣ Configure o banco de dados
docker-compose up -d3️⃣ Configure as variáveis de ambiente
Crie um arquivo .env na raiz do projeto:
PORT=3333
DATABASE_URL=postgresql://docker:docker@localhost:5432/agents
4️⃣ Instale as dependências
npm install5️⃣ Execute as migrações do banco
npx drizzle-kit migrate6️⃣ (Opcional) Popule o banco com dados de exemplo
npm run db:seed7️⃣ Execute o projeto
Desenvolvimento:
npm run devProdução:
npm start| Comando | Descrição |
|---|---|
npm run dev |
Executa o servidor em modo de desenvolvimento com hot reload |
npm start |
Executa o servidor em modo de produção |
npm run db:seed |
Popula o banco de dados com dados de exemplo |
A API estará disponível em: http://localhost:3333
| Método | Rota | Descrição |
|---|---|---|
| GET | /health |
Health check da aplicação |
| GET | /rooms |
Lista as salas disponíveis |
Desenvolvido com ❤️ durante o NLW da Rocketseat