O objetivo desse projeto é avaliar o seu conhecimento de Javascript, Git, Design Patterns, Testing, HTML5, CSS3 e resolução de problemas.
Você deve criar uma aplicação para analizar um deck de cartas do usuário. A aplicação deve ter duas rotas e usar esta API para persistir dados.
Esta página mostra um formulário que aceita até 10 cartas válidas e uma Carta de Rotação.
Página: https://drive.google.com/file/d/1qo4Q3AiVXUZLueZgnHq0tcShrB2JlXIf/view?usp=sharing
Quando o usuário submeter o formulário, um novo deck deve ser criado [1], as cartas submetidas pelo usuário devem ser adicionadas para 1 ou mais pilhas [2] e o usuário deve ser redirecionado para a Rota #2.
Esta página deve carregar a pilha criada pela Rota #1, usando o deck_id
dado pelo endpoint "A Brand New Deck" [1], mostrando:
- A pilha de cartas em ordem
- A Carta de Rotação
- A Carta de Maior Valor
- Todas as combinações Full House
Página: https://drive.google.com/file/d/1PX44fwupvAvTzLb99w6HoeniTWVV-dqL/view?usp=sharing
Tenha em mente que você deve consumir a API porque espera-se que a Rota #2 funcione independentemente da Rota #1. Em outras palavras, uma vez criado um Deck usando a Rota #1, deve-se ser capaz de usar a Rota #2 para acessar o Deck criado usando o deck_id
.
-
Naipes e valores de cartas têm uma sequência que deve ser preservada.
- Naipes: Corações/Hearts (H), Diamantes/Diamonds (D), Paus/Clubs (C) e Espadas/Spades (S).
- Valores: 2, A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3
-
Os naipes têm precedência sobre os valores das cartas.
-
A Carta de Rotação especificada pelo usuário define a carta de maior valor do deck.
Se a Carta de Rotação é 6C:
- Do maior para o menor valor de cartas se torna: 6, 5, 4, 3, 2, A, K, Q, J, 10, 9, 8, 7
- Do maior para o menor naipe de cartas se torna: Paus/Clubs, Espadas/Spades, Corações/Hearts e Diamantes/Diamonds.
- Em ambos os casos, a sequência de valores e naipes permanecem preservados.
Dado a carta de rotação 6C, o seguinte é verdadeiro:
- 6S > 10S
- 6S < 10C
Combinações Full House são definidas como todas as mãos possíveis que contem 3 cartas de 1 rank e 2 cartas de outro rank.
A Carta de Maior Valor é definida como a carta que possui o maior rank na pilha.
- Input - Cartas: 7D, AS, QH, 9S, 6D e Carta de Rotação: 2H
- Pilha ordenada: QH, 7D, 6D, AS, 9S
- Carta de Maior Valor: QH
- Combinações Full House: None
- Input - Cartas: 7D, AS, QH, 9S, 6D e Carta de Rotação: 10C
- Pilha ordenada: 9S, AS, QH, 7D, 6D
- Carta de Maior Valor: 9S
- Combinações Full House: None
- Input - Cartas: AS, AD, AC, KH, KS e Carta de Rotação: 2H
- Pilha ordenada: KH, AD, AC, AS, KS
- Carta de Maior Valor: KH
- Combinações Full House:
- AD, AC, AS, KH, KS
- Input - Cartas: 2H, 2D, 2C, 2S, 3H, 3D, 3C e Carta de Rotação: 2H
- Pilha ordenada: 2H, 3H, 2D, 3D, 2C, 3C, 2S
- Carta de Maior Valor: 2H
- Combinações Full House:
- 2H, 2D, 2C, 3H, 3D
- 2H, 2D, 2C, 3H, 3C
- 2H, 2D, 2C, 3D, 3C
- 2H, 2D, 2S, 3H, 3D
- 2H, 2D, 2S, 3H, 3C
- 2H, 2D, 2S, 3D, 3C
- 2H, 2C, 2S, 3H, 3D
- 2H, 2C, 2S, 3H, 3C
- 2H, 2C, 2S, 3D, 3C
- 2D, 2C, 2S, 3H, 3D
- 2D, 2C, 2S, 3H, 3C
- 2D, 2C, 2S, 3D, 3C
- 2H, 2D, 3H, 3D, 3C
- 2H, 2C, 3H, 3D, 3C
- 2H, 2S, 3H, 3D, 3C
- 2D, 2C, 3H, 3D, 3C
- 2D, 2S, 3H, 3D, 3C
- 2C, 2S, 3H, 3D, 3C
[1] https://deckofcardsapi.com/api/deck/new/
[2] https://deckofcardsapi.com/api/deck/<<deck_id>>/pile/<<pile_name>>/add/?cards=AS,2S
- Você deve fazer um fork deste projeto e abrir um PR para este repositório assim que terminar.
- Apesar da API ter imagens das cartas, gostaríamos de ver como você as construiria usando CSS.
- Exceto por biblioteca de cartas e frameworks CSS, você pode usar qualquer biblioteca que quiser, juntamente com React.js.
- Caso use uma biblioteca para boilerplate, você deve criar um git commit separado para os arquivos criados por essa biblioteca.
- Você deve escrever testes automatizados.
- Use Redux/Mobx ou outra biblioteca de gestão de estados, para ajudar a gerir os estados de sua aplicação.
- TypeScript não é mandatório mas você receberá pontos de bônus por utilizar.
- Você deve incluir um Readme com instruções em como rodar o projeto, testar e usar a aplicação.
- Balanceie seu tempo com sabedoria entre diferentes áreas deste desafio. Estimamos que você deve gastar aproximadamente 12 horas para completar esse desafio.