Git Product home page Git Product logo

reactive-bingo's Introduction

Desafio do curso Spring WebFlux

Criar uma API de jogo de Bingo usando as seguintes tecnologias:

technology Java

technology MongoDB

techonolgy Spring WebFlux

technology Docker (opcional)

Requisitos

  • Gerenciar as informações dos jogadores (CRUD) com um find on demand;
  • Gerar as cartelas de uma rodada com os números aleatórios, regras:
    • Todas as cartelas geradas devem ter quantidades iguais de números;
    • A cartela deve ter 20 números;
    • Uma cartela pode ter no máximo 1/4 dos mesmos números de uma outra cartela;
    • as cartelas da rodada só podem ser geradas antes de começar o sorteio dos números;
  • Possibilidade de vincular uma cartela ao jogador ( 1 jogador só pode ser vinculado á uma cartela por rodada);
  • Guardar um histórico das rodadas com os números sorteados, regras:
    • Cada rodada pode sortear números de 0 até 99;
    • Guardar os números sorteados;
    • Guardar as cartelas que pertencem a ela;
    • Guardar os jogadores que participaram;
  • Endpoint para sortear o próximo número da rodada (um número não pode ser sorteado 2x na mesma rodada);
  • Endpoint para buscar o último número sorteado;
  • Cada vez que um número é sorteado deve-se verificar se alguma cartela já completou todos os números, caso tenha completado a rodada deve ser encerrada (bloquear geração de novos números) e um e-mail deve ser enviado ao vencedor da partida e os outros jogadores devem receber um e-mail mostrando como eles se sairam;
  • Endpoint para buscar todas as rodadas (find all) o find on demand fica como opcional;
  • Endpoint para buscar informações de uma partida pelo identificador
  • Dockerizar a aplicação (opcional);
  • Montar documentação dos endpoints (opcional);

Requisitos de testes

  • Os testes devem contemplar controller, services e repositórios que não são interfaces

Dicas

Sugestão de endpoints:

  • Jogadores:
    • save (POST /players)
    • update (PUT /players/{id})
    • delete (DELETE /players/{id)
    • find by id (GET /players/{id})
    • find on demand (GET /players)
  • Rodada:
    • criar rodada (POST /rounds)
    • gerar número (POST /rounds/{id}/generate-number)
    • buscar ultimo número sorteado (GET /rounds/{id}/current-number)
    • gerar cartela (POST /rounds/{id}/bingo-card/{playerId})
    • buscar rodadas (GET /rounds)
    • buscar rodada pelo id (GET /rounds/{id})

reactive-bingo's People

Contributors

juniorjrjl avatar

Stargazers

Tiago Ferreira Cavazin avatar Hugo Arcanjo avatar ednaldoluiz avatar

Watchers

Gustavo Pereira avatar Addo avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.