tuchedsf / be-mean-fut-camp

Projeto criado para por em pratica os conhecimentos obtidos no curso BE-MEAN, em uma aplicação "real".

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

be-mean-fut-camp

Projeto criado para por em pratica os conhecimentos obtidos no curso BE-MEAN, em uma aplicação "real".

A ideia é criar uma API para genrenciamento de campeonatos de futebol.

Motivação: Eu e alguns amigos do serviço nas horas vagas nos juntamos para jogar fifa (futebol virtual), então fazemos um campeonato entre a galera quando nos encontramos, porem muitas vezes não há a possibilidade de todos comparecerem e marcamos online com a pessoa para jogar e que o jogo passe a ser valido para o campeonato.

Hoje controlamos tudo via planilha, e como estou fazendo o curso do be-mean surgiu a ideia de fazer utilizando os conhecimentos obtidos durante o curso, para exercitar mesmo e ir aplicando o que foi aprendido em cada aula nesta app.

A ideia é controlar o campeonato online.

Observações

+ os testes de crud acabaram que ficaram juntos com o testes de requisiçoes.
    * acredito que teriam que ser divididos em 1 teste de crud, e outro teste de retorno das requisiçoes
+ para geração dos jogos foi utilizado a regra mostrada no item algoritmo para marcação de jogos do artigo, 
(https://pt.wikipedia.org/wiki/Competi%C3%A7%C3%B5es_de_todos_contra_todos#O_sistema_no_futebol_brasileiro)[https://pt.wikipedia.org/wiki/Competi%C3%A7%C3%B5es_de_todos_contra_todos#O_sistema_no_futebol_brasileiro]

Melhorias a serem feitas

+ Melhorar os testes
+ Melhorar atomização
+ Melhorar validação de campos.
+ substituir o jwt-simple do login pelo passport
+ Implementar front-end ( A ideia é ir implementando o front-end com as aulas de angular)
+ implementar controle de autorização  
+ verificar o porque o metodo de adicionar equipe, encontra equipe igual mais não retona erro quando encontra. (action-equipes-adicionar)

O que esta funcionando:

Rotas usuario

  • Novo usuario
Method: POST
Rota: http:localhost:3000/V1/api/users/new
Tipo parametro: body / x-www-form-urlencoded
Parametros:
email       tuchedsf@gmail.com
password    12345

Resposta: 
{
  "location": "/V1/api/users/579b98abfdf88cce5f0095e1",
  "data": {
    "__v": 0,
    "email": "tuchedsf@gmail.com",
    "password": "$2a$05$CINgMibFiU4WBjUsS6ne9.1vAXrC1XKKDK24eJlv2MRSUaXihx3L6",
    "_id": "579b98abfdf88cce5f0095e1",
    "created_at": "2016-07-29T17:55:55.208Z"
  }
}
  • Login
Method: POST
Rota: http:localhost:3000/V1/api/users/login
Tipo parametro: body / x-www-form-urlencoded
Parametros:
email       tuchedsf@gmail.com
password    12345

Resposta: 
{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1NzliOWVkMTkyYTM4ZWVkNjE5NGUyMWUiLCJleHAiOjE0Njk5MDI5NjIxOTB9.wkHaaA66EY5oWtZMM_II4iG71F3Dk02_Bb2q8i6-RqE",
  "expires": 1469902962190,
  "user": {
    "_id": "579b9ed192a38eed6194e21e",
    "email": "tuchedsf@gmail.com",
    "password": "$2a$05$xFk905MORFCp2P6FU83yuuf57oUvUo4MgGmvcHguddbKYT37LM/Lm",
    "__v": 0,
    "created_at": "2016-07-29T18:22:09.852Z"
  }
}

obs.: o token retornado no login deve ser guardado para ser enviado juntamente com as outras requisições. As rotas que necessitam estar logado são: login, find, findOne, delete, update.

  • Find Deve ser passado junto da requisição um parametro de cabeçalho x-access-token com o token do usuário logado.
Method: Get
Rota: http:localhost:3000/V1/api/users/find
Tipo parametro: headers
Parametros:
x-access-token       eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1NzliOWVkMTkyYTM4ZWVkNjE5NGUyMWUiLCJleHAiOjE0Njk5MDI5NjIxOTB9.wkHaaA66EY5oWtZMM_II4iG71F3Dk02_Bb2q8i6-RqE 

Resposta: 
[
  {
    "_id": "579b9ed192a38eed6194e21e",
    "email": "tuchedsf@gmail.com",
    "password": "$2a$05$xFk905MORFCp2P6FU83yuuf57oUvUo4MgGmvcHguddbKYT37LM/Lm",
    "__v": 0,
    "created_at": "2016-07-29T18:22:09.852Z"
  },
  {
    "_id": "579ba00a92a38eed6194e21f",
    "email": "teste@gmail.com",
    "password": "$2a$05$SJG0aiHRszaS.QfiVKcvLOGSxfNgX1zzlK.Mb9d3p3kfOdlMyxskS",
    "__v": 0,
    "created_at": "2016-07-29T18:27:22.394Z"
  }
]
  • Find com parametro
Method: Get
Rota: http:localhost:3000/V1/api/users/find?q=teste@gmail.com
Tipo parametro: headers
Parametros:
x-access-token       eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1NzliOWVkMTkyYTM4ZWVkNjE5NGUyMWUiLCJleHAiOjE0Njk5MDI5NjIxOTB9.wkHaaA66EY5oWtZMM_II4iG71F3Dk02_Bb2q8i6-RqE 

Resposta: 
[
  {
    "_id": "579ba00a92a38eed6194e21f",
    "email": "teste@gmail.com",
    "password": "$2a$05$SJG0aiHRszaS.QfiVKcvLOGSxfNgX1zzlK.Mb9d3p3kfOdlMyxskS",
    "__v": 0,
    "created_at": "2016-07-29T18:27:22.394Z"
  }
]
  • FindOne
Method: Get
Rota: http://localhost:3000/V1/api/users/579ba00a92a38eed6194e21f
Tipo parametro: headers
Parametros:
x-access-token       eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1NzliOWVkMTkyYTM4ZWVkNjE5NGUyMWUiLCJleHAiOjE0Njk5MDI5NjIxOTB9.wkHaaA66EY5oWtZMM_II4iG71F3Dk02_Bb2q8i6-RqE 

Resposta: 
{
  "_id": "579ba00a92a38eed6194e21f",
  "email": "teste@gmail.com",
  "password": "$2a$05$SJG0aiHRszaS.QfiVKcvLOGSxfNgX1zzlK.Mb9d3p3kfOdlMyxskS",
  "__v": 0,
  "created_at": "2016-07-29T18:27:22.394Z"
}
  • Update
Method: PUT
Rota: http:localhost:3000/V1/api/users/579ba00a92a38eed6194e21f
Tipo parametro: header - body / x-www-form-urlencoded
Parametros:
Headers:
x-access-token       eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1NzliOWVkMTkyYTM4ZWVkNjE5NGUyMWUiLCJleHAiOjE0Njk5MDI5NjIxOTB9.wkHaaA66EY5oWtZMM_II4iG71F3Dk02_Bb2q8i6-RqE

Body:
password    mudeisenha

Resposta: 
{
  "location": "/V1/api/users/579ba00a92a38eed6194e21f",
  "data": {
    "ok": 1,
    "nModified": 1,
    "n": 1
  }
}
  • Delete
Method: Delete
Rota: http://localhost:3000/V1/api/users/579ba00a92a38eed6194e21f
Tipo parametro: headers
Parametros:
x-access-token       eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1NzliOWVkMTkyYTM4ZWVkNjE5NGUyMWUiLCJleHAiOjE0Njk5MDI5NjIxOTB9.wkHaaA66EY5oWtZMM_II4iG71F3Dk02_Bb2q8i6-RqE 

Resposta: 

Rotas Campeonato

  • Novo
  • Find
  • FindOne
  • Update
  • Delete
  • AdicionarOrganizador
  • RemoverOrganizador
  • AdicionarEquipe
  • RemoverEquipe
  • GerarClassificacao
  • AtualizarClassificacao
  • GerarTabelaJogos
  • AtualizarResultadoJogo

Rotas Jogos

Retorno em caso de erro

Abaixo exemplo como serão retornados os erros da api...

{
  "status": 401,
  "code": "1001",
  "message": "Usuario e/ou password invalidos"
}

Referências Bibliograficas

About

Projeto criado para por em pratica os conhecimentos obtidos no curso BE-MEAN, em uma aplicação "real".


Languages

Language:JavaScript 99.7%Language:HTML 0.2%Language:CSS 0.1%