Skip to content

josuerf/nlw-agents-server

Repository files navigation

NLW Agents

Projeto desenvolvido durante o evento NLW (Next Level Week) da Rocketseat, focado na criação de uma API robusta para gerenciamento de agentes inteligentes.

🚀 Tecnologias Utilizadas

Backend

  • Node.js - Runtime JavaScript
  • TypeScript - Superset tipado do JavaScript
  • Fastify - Framework web rápido e eficiente
  • Zod - Validação de esquemas TypeScript-first

Banco de Dados

  • PostgreSQL - Banco de dados relacional
  • pgvector - Extensão para operações com vetores
  • Drizzle ORM - ORM TypeScript moderno e performático
  • Drizzle Kit - Ferramenta de migração

Desenvolvimento

  • Biome - Linter e formatador de código
  • Ultracite - Configuração de regras de código
  • Docker Compose - Orquestração de containers

🏗️ Arquitetura do Projeto

src/
├── db/
│   ├── connection.ts      # Conexão com banco de dados
│   ├── migrations/        # Migrações do banco
│   ├── schema/           # Esquemas das tabelas
│   └── seed.ts           # População inicial do banco
├── http/
│   └── rooms/            # Rotas relacionadas a salas
├── env.ts                # Validação de variáveis de ambiente
└── server.ts             # Servidor principal

⚙️ Configuração do Ambiente

Pré-requisitos

  • Node.js (versão 20+)
  • Docker e Docker Compose
  • PostgreSQL (se não usar Docker)

Variáveis de Ambiente

Crie um arquivo .env na raiz do projeto:

# Porta do servidor
PORT=3333

# URL de conexão com PostgreSQL
DATABASE_URL=postgresql://docker:docker@localhost:5433/agents

🐳 Configuração com Docker

1. Subir o banco de dados

docker-compose up -d

2. Instalar dependências

npm install

3. Executar migrações

npx drizzle-kit migrate

4. Popular banco de dados (opcional)

npm run db:seed

🚀 Executando o Projeto

Desenvolvimento

npm run dev

Produção

npm start

Comandos Disponíveis

  • npm run dev - Executa em modo desenvolvimento com watch
  • npm start - Executa em modo produção
  • npm run db:seed - Popula o banco com dados iniciais

📁 Padrões de Projeto

Validação com Zod

  • Todas as variáveis de ambiente são validadas
  • Tipos TypeScript gerados automaticamente
  • Validação de entrada nas rotas da API

Drizzle ORM

  • Schema-first com tipos TypeScript
  • Migrações versionadas
  • Queries type-safe

Fastify + Type Provider

  • Integração completa com TypeScript
  • Validação automática de request/response
  • Serialização otimizada

Estrutura Modular

  • Separação por domínios (rooms, agents, etc.)
  • Conexão centralizada com banco
  • Configuração de ambiente tipada

🛠️ Ferramentas de Desenvolvimento

Biome

Configurado com:

  • Formatação automática (2 espaços, LF, aspas simples)
  • Regras de linting strictas via Ultracite
  • Integração com TypeScript

Drizzle Studio (opcional)

npx drizzle-kit studio

🌐 API Endpoints

Health Check

GET /health

Rooms

GET /rooms - Lista todas as salas

📦 Docker Compose

O projeto inclui configuração completa com:

  • PostgreSQL 17 com extensão pgvector
  • Porta exposta: 5433
  • Credenciais: docker/docker
  • Database: agents

🚦 Status do Projeto

  • ✅ Configuração base da API
  • ✅ Integração com PostgreSQL
  • ✅ Sistema de migrações
  • ✅ Validação de dados
  • ✅ Docker para desenvolvimento

Desenvolvido com ❤️ durante o NLW da Rocketseat

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published