https://github.com/rafaelffz/nlw-agents-server
Backend do projeto realizado no evento NLW Agents organizado pela Rocketseat
https://github.com/rafaelffz/nlw-agents-server
drizzle-orm fastify fastify-multipart fastify-type-provider-zod gemini nodejs pgvector postgresql zod
Last synced: 3 months ago
JSON representation
Backend do projeto realizado no evento NLW Agents organizado pela Rocketseat
- Host: GitHub
- URL: https://github.com/rafaelffz/nlw-agents-server
- Owner: rafaelffz
- Created: 2025-07-12T07:23:56.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-07-13T22:17:56.000Z (3 months ago)
- Last Synced: 2025-07-14T00:23:22.070Z (3 months ago)
- Topics: drizzle-orm, fastify, fastify-multipart, fastify-type-provider-zod, gemini, nodejs, pgvector, postgresql, zod
- Language: TypeScript
- Homepage:
- Size: 43.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NLW Agents
Projeto desenvolvido durante um evento da **Rocketseat** utilizando tecnologias modernas para criação de uma API robusta e eficiente.
## 🚀 Tecnologias
- **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## 🏗️ Arquitetura
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## ⚙️ Setup e Configuração
### Pré-requisitos
- Node.js (versão com suporte a `--experimental-strip-types`)
- Docker e Docker Compose### 1. Clone o repositório
```bash
git clone
cd server
```### 2. Configure o banco de dados
```bash
docker-compose up -d
```### 3. Configure as variáveis de ambiente
Crie um arquivo `.env` na raiz do projeto:
```env
PORT=3333
DATABASE_URL=postgresql://docker:docker@localhost:5432/agents
```### 4. Instale as dependências
```bash
pnpm install
```### 5. Execute as migrações do banco
```bash
pnpm exec drizzle-kit migrate
```### 6. (Opcional) Popule o banco com dados de exemplo
```bash
pnpm run db:seed
```### 7. Execute o projeto
**Desenvolvimento:**
```bash
pnpm run dev
```**Produção:**
```bash
pnpm start
```## 📚 Scripts Disponíveis
- `pnpm run dev` - Executa o servidor em modo de desenvolvimento com hot reload
- `pnpm start` - Executa o servidor em modo de produção
- `pnpm run db:seed` - Popula o banco de dados com dados de exemplo## 🌐 Endpoints
A API estará disponível em `http://localhost:3333`
- `GET /health` - Health check da aplicação
- `GET /rooms` - Lista as salas disponíveis
- `POST /rooms` - Cria uma nova sala
- `GET /rooms/:roomId/questions` - Lista as perguntas de uma sala
- `POST /rooms/:roomId/questions` - Cria uma pergunta em uma sala---
Desenvolvido com ❤️ durante o NLW da Rocketseat