Simulação de uma plataforma de investimentos utilizando Docker, Golang, NestJS, Next.js, WebSockets e Kafka.
- Visão Geral
- Casos de Uso & Arquitetura
- Requisitos
- Instalação & Execução
- Golang
- NestJS
- Next.js
- Execução com Docker
- Tecnologias Utilizadas
- WebSockets (Tempo Real)
- Contribuições
- Licença
Esse projeto consiste em três módulos principais:
- API NestJS: backend REST + WebSockets para gerenciamento de ordens e ativos.
- Broker em Golang: microserviço para processamento de ordens via Kafka.
- Front-end Next.js: interface web para criação, consulta e negociação em tempo real.
O fluxo geral:
Front-end ⇄ API NestJS ⇄ Kafka ⇄ Broker Go ⇄ MongoDB
↕ (WebSocket)
Casos de uso identificados:
- Criar ordens de compra/venda
- Consultar ordens enviadas
- Consultar ativos disponíveis (preço, detalhes)
- Visualizar ativos na carteira
- Negociar entre ordens
- Funções administrativas (criar usuários, ativos etc.)
Diagrama ER: Representa entidades como usuário, ativo, ordem e transação, com seus relacionamentos.
- Git
- Docker (Desktop ou Engine)
- Opcional: WSL2 (Windows)
Se a máquina tiver ≤8 GB de RAM, utilize Docker Engine para economia de recursos.
- Na raiz do projeto, execute:
docker-compose up -d
- Acesse
go/
- Execute:
go run cmd/trade/main.go
- Acesse
api-nestjs/
- Instale dependências:
npm install
- Rode em modo dev:
npm run start:dev
- Vá para
next-frontend/
- Instale dependências:
npm install
- Rode:
npm run dev
Como o front-end (Next.js) e o back-end (NestJS) usam por padrão a porta 3000, se o back-end for iniciado primeiro, ele ocupará essa porta, e o front-end será iniciado automaticamente na porta 3001. Nesse caso, a interface pode ser acessada em http://localhost:3001.
- Golang – Broker de ordens
- Node.js + NestJS – Backend e WebSockets
- Next.js (React) – Front-end
- Kafka – Mensageria
- MongoDB – Banco de dados
- WebSockets – Tempo real para ordens
- Docker – Orquestração e containers
- WSL2
A integração WebSocket permite atualização imediata de ordens, carteira e preços, eliminando necessidade de refresh.
Fluxo de mensageria:
- Cliente → WebSocket → API NestJS
- API → Kafka → Broker Go (processa e envia resposta)
- Broker → Kafka → API NestJS → Cliente (via WebSocket)
Este projeto foi inspirado na Imersão FullCycle 21 e adaptado para fins de estudo e prática pessoal.
- O objetivo deste projeto foi aprofundar os conhecimentos em Go e sua integração com o Kafka.