Esta API é um serviço completo para criação, importação e gerenciamento de decks de Magic: The Gathering. Ela permite gerar decks aleatórios (com um comandante e 99 cartas), importar decks personalizados, além de oferecer funcionalidades de CRUD para cartas e usuários. A integração com as APIs externas como Scryfall e MTG API garante que as informações estejam sempre atualizadas.
- Docker
- Node.js
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-managementcd CardsCrud
npm install# Servidor principal (CRUD)
npm run start:dev 'CRUD'
# Servidor de notificações (WebSocket + RabbitMQ)
npm run start:dev 'notification_queue'
# Servidor de importação assíncrona
npm run start:dev 'rmq-process'CardsCrud: CRUD de cartas, geração/importação de decks, autenticação.notification_queue: Gerencia notificações em tempo real via WebSockets.rmq-process: Processa importações de decks usando RabbitMQ.
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /cards |
Cria uma nova carta. |
| GET | /cards |
Lista todas as cartas (requer Admin). |
| GET | /cards/:id |
Retorna uma carta específica por ID. |
| POST | /cards/:id |
Atualiza os dados de uma carta. |
| DELETE | /cards/:id |
Remove uma carta do sistema. |
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /cards/generate |
Gera um deck aleatório com 1 comandante e 99 cartas válidas. |
| POST | /cards/import |
Importa um deck de cartas com validações. |
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /user |
Cria um novo usuário. |
| GET | /user |
Lista todos os usuários. |
| POST | /user/:username |
Atualiza dados de um usuário específico. |
| DELETE | /user/:username |
Remove um usuário do sistema. |
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /auth/login |
Realiza login e retorna um token JWT. |
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /cards-producer/place-card |
Envia uma carta para a fila do RabbitMQ para testes. |
Gerencia notificações via RabbitMQ e WebSockets.
- O servidor escuta mensagens nas filas do RabbitMQ.
- Ao receber um evento (ex: deck criado), envia uma notificação por WebSocket.
- O cliente recebe e atualiza a interface automaticamente.
Gerencia o processo de importação de decks em segundo plano.
- O usuário envia uma requisição de importação.
- Os dados são enviados para a fila
deck_import_queue. - O worker consome a fila, valida e processa o deck.
- Ao final, envia status para a fila
deck_updates_queue. - Um consumidor envia a notificação ao cliente via WebSocket.
Pull requests são bem-vindos! Para mudanças maiores, abra uma issue antes para discutirmos juntos.