O projeto Trybets consiste no backend de um site de apostas. Nesse projeto a aplicação já veio pronta no formato monolítica, minha participação no projeto foi dividir essa aplicação em microsserviços com determinadas especificidades.

Microsserviço TryBets.Matches.

  • Este microsserviço será responsável pela visualização de times e partidas, onde ele funciona na porta 5502.
  • As rotas necessárias nesse microsserviço são:

/team

Rota utilizada para obter a lista de times.

Request Token? Status Response
(em branco) Não 200
[
    {
        "teamId": 1,
        "teamName": "Sharks"
    }, /*...*/
]
            

/match/{finished}

Rota utilizada para obter a lista de partidas. Parâmetro {finished} varia entre true e false para listar partidas finalizadas ou não.

Request Token? Status Response
(em branco) Não 200
[
	{
		"matchId": 1,
		"matchDate": "2023-07-23T15:00:00",
		"matchTeamAId": 1,
		"matchTeamBId": 8,
		"teamAName": "Sharks",
		"teamBName": "Bulls",
		"matchTeamAOdds": "3,33",
		"matchTeamBOdds": "1,43",
		"matchFinished": true,
		"matchWinnerId": 1
	}, /*...*/
]
            

Microsserviço TryBets.Users.

  • Este microsserviço será responsável pelo cadastro e login de pessoas usuárias.
  • Este microsserviço funciona na porta 5501.
  • As rotas necessárias nesse microsserviço são:

/user/signup

Rota utilizada para cadastrar uma nova pessoa usuária. Ao cadastrar com sucesso, retorna um token. Não permitido adicionar duas pessoas usuárias com o mesmo e-mail.

Request Token? Status Response Observações
{
   "Name": "Isabel Santos",
"Email": "isabel.santos@trybets.com",
"Password": "123456"
}
Não 201
{
"token": "eyJhbG..."
}
{
"Name": "Isabel Santos",
"Email": "isabel.santos@trybets.com",
"Password": "123456"
}
Não 400
{
"message": "E-mail already used"
}
Caso o e-mail da pessoa usuária já tenha sido cadastrado no banco de dados.

/user/login

Rota utilizada para realizar o login de uma pessoa usuária.

Request Token? Status Response Observações
{
   "Email": "isabel.santos@trybets.com",
   "Password": "123456"
}
            
Não 200
{
   "token": "eyJhbG..."
}
            
{
   "Email": "isabel.santos@trybets.com",
   "Password": "1234567"
}
            
Não 400
{
   "message": "Authentication failed"
}
            
Caso a pessoa usuária não tenha os dados autenticados ou não informe algum dos parâmetros corretamente.

Microsserviço TryBets.Bets.

  • Este microsserviço será responsável pelo cadastro e visualização de apostas.
  • Este microsserviço funciona na porta 5503.
  • As rotas necessárias nesse microsserviço são:

/bet

Rota utilizada para realizar uma nova aposta

Request Token? Status Response Observações
{
   "MatchId": 5,
   "TeamId":  2,
   "BetValue": 550.65
}
            
Sim 201
{
   "betId": 1,
   "matchId": 5,
   "teamId": 2,
   "betValue": 550.65,
   "matchDate": "2024-03-15T14:00:00",
   "teamName": "Eagles",
   "email": "isabel.santos@trybets.com"
}
            
{
   "MatchId": 5,
   "TeamId":  2,
   "BetValue": 550.65
}
            
Não 401 Caso o token não tenha sido informado ou esteja errado
{
   "MatchId": 5,
   "TeamId":  6,
   "BetValue": 550.65
}
            
Sim 400
{
    "message": "Team is not in this match"
}
            
Caso o time não esteja na partida correta
{
   "MatchId": 5,
   "TeamId":  60,
   "BetValue": 550.65
}
            
Sim 400
{
    "message": "Team not founded"
}
            
Caso o time não exista
{
   "MatchId": 50,
   "TeamId":  6,
   "BetValue": 550.65
}
            
Sim 400
{
    "message": "Match not founded"
}
            
Caso a partida não exista
{
   "MatchId": 1,
   "TeamId":  6,
   "BetValue": 550.65
}
            
Sim 400
{
    "message": "Match finished"
}
            
Caso a partida já tenha sido finalizada

/bet/{BetId}

Rota utilizada para visualizar uma aposta criada. Uma aposta só pode ser visualizada pela pessoa que a criou.

Request Token? Status Response Observações
Sim 200
{
   "betId": 1,
   "matchId": 5,
   "teamId": 2,
   "betValue": 550.65,
   "matchDate": "2024-03-15T14:00:00",
   "teamName": "Eagles",
   "email": "isabel.santos@trybets.com"
}
            
Sim 400 (Indiferente) Caso a aposta não pertencer à pessoa usuária do token.
Sim 400
{
   "message": "Bet not founded"
}
            
Caso a aposta não exista.
Não 401 Caso não seja informado um token.

Microsserviço TryBets.Odds.

  • Este microsserviço será responsável pela atualização das odds de cada partida. Este microsserviço é novo e não é acessível ao site. Ele será utilizado pelo microsserviço TryBets.Bets e será chamado por este toda vez que uma nova aposta for cadastrada.

  • Este microsserviço funciona na porta 5504.

  • A rota necessária nesse microsserviço é:

    • PATCH/odd/{matchId}/{TeamId}/{BetValue}

Cada microsserviços foi desenvolvido os Dockerfiles

⚒ Instalando

# Clone o projeto
$ git clone git@github.com:marcos-schlautmann/trybets.git
# Acesse
$ cd ./project-trybets/src
# Instale as dependencias
$ dotnet restore
# Acesse o diretório TryBets
$ cd TryBets
# Inicie o projeto
$ dotnet run

Principais tecnologias utilizadas:

  • C#;
  • ASP.NET
  • EntityFramework
  • JWT
  • azure sql edge