É um projeto web no qual jogadores de basquete podem registrar suas partidas por temporada, através do menu "Ver partidas", no qual poderá cadastrar, editar ou excluir e ver histórico de temporadas e partidas, além de ver suas estatísticas em cada temporada, como quantidade de jogos disputados, total de pontos marcados na temporada, média de pontos por jogo, maior e menor pontuação por jogo e quantidade de vezes que bateu o próprio recorde.
Além disso, jogadores podem ver uma tabela contendo as 10 maiores pontuações entre todos os players, através do menu "Quadro de pontuações".
Para desenvolvimento do projeto foram utilizadas as tecnologias:
- Single Page Aplication (SPA) com ReactJS
- Desenvolvimento de componentes de interfaces com Bootstrap
- Consumo de API com Axios
- Link do repositório do Front-end
- Linguagem C#
- .NET Core 6
- Desenvolvimento de API Rest com ASP.NET Core
- Utilização dos padrões arquiteturais Clean Architecture (Camadas API, Application, Core e Infrastructure), Command-Query Responsility Segregation (CQRS) para separar as consultas (Queries) das ações que alteram o estado do sistema (Commands) e Padrão Repository para encapsular o acesso a dados, desacoplando detalhes de implementação através de interfaces.
- Validação de APIs com FluentValidation
- Persistência e acesso à dados com Entity Framework Core e SQL Server
- Autenticação e autorização com Json Web Token (JWT)
- Testes Unitários com xUnit
- Link do repositório do Back-end
- Requisitos:
- Ter o Git instalado (Clique aqui para baixar)
- Ter o Node instalado (Clique aqui para instalar)
- Ter a .NET SDK e Runtime instaladas (Clique aqui para instalar)
- Ter o Visual Studio Code (Clique aqui para instalar o VSCode) e o Visual Studio (Clique aqui para instalar o Visual Studio) instalados
- Ter o SQL Server(Clique aqui para instalar - Recomendado instalar o Express) e o SQL Sever Management Studio (Clique aqui para instalar - Para visualizar as tabelas (Opcional)) instalados
- Criar uma pasta no local desejado para receber os repositórios do projeto
- Abrir um terminal na pasta selecionada (abra a pasta no explorador de arquivos, clique com o botão direito do mouse dentro dela e procure a opção de abrir terminal ou abra o terminal e digite o comando $ cd pathDaPasta)
- No terminal, dentro da pasta específica para receber os repositórios, insira o comando $ git clone https://github.com/Thiago-Gonzalez/MyGameScore.WebServices para clonar o repositório do back-end
- Em seguida, ainda na mesma pasta, insira o comando $ git clone https://github.com/Thiago-Gonzalez/MyGameScore.Front para clonar o projeto do front-end
- Configurações para rodar o projeto do Front-end:
- Configurações para rodar o projeto do Back-end:
- Com os projetos do back-end e front-end rodando, já é possível realizar requisições para a api através do swagger ou através do front
- OBS.: Caso ainda haja algum problema de na execução do back-end, tente executar os comandos $ dotnet restore / $ dotnet build
Abra o terminal na pasta do projeto do front-end (através do VSCode ou via terminal) e insira o seguinte comando $ npm install para instalar as dependências do projeto.
Para rodar o projeto, insira o seguinte comando $ npm start e então o projeto deve ser aberto na url "https://localhost:3000"
Para abrir o projeto do back-end, abra a pasta do projeto no exporador de arquivos e abra o arquivo solução (.sln)
No terminal, inserir o seguinte comando $ dotnet tool install --global dotnet-ef para instalar o EF Core globalmente
Em seguida, com o projeto aberto no terminal na pasta MyGameScore.Infrastructre, inserir o seguinte comando (ex: MyGameScore.WebServices/MyGameScore.Infrastructure (main)) $ dotnet ef database update -s ../MyGameScore.API/MyGameScore.API.csproj para aplicar as migrations no banco
Nota: Caso ocorra algum problema com o comando anterior, verifique se está na pasta correta, pois isso inflencia no path do csproj da camada API passado como parâmetro.
Por fim, rode a aplicação pelo Visual Studio clicando no botão com ícone play de cor verde "MyGameScore.API"
Testando o back-end via Swagger (https://localhost:9000/swagger/index.html (ou qualquer outra plataforma de testes de API)):
- Antes de qualquer coisa, é necessário criar uma conta: realize uma requisição http post para a rota api/players e informe seu nome, email e uma senha contendo pelo menos 8 dígitos, sendo pelos menos um caractere especial, uma letra maiúscula, uma minúscula e um número
- Em seguida, realize o login através do método http put na rota api/players/login, informando seu email e senha, dessa forma será gerado um token, copie-o
- Por fim, para finalizar a autenticação, no Swagger, clique no menu "Authorize" localizado na parte superior direita da página e em "Value" preencha com "Bearer coleAquiOToken" (sem aspas, apenas para exemplificar => Bearer token), depois clique em Authorize
- Pronto, agora você já está autenticado e já pode realizar quaisquer requisições nas demais rotas da api
Nota: Rodando o back-end em ambiente Linux (necessário versão com suporte ao .NET Core 6 e SQL Server - recomendado Ubuntu 20.04):
Connection Type: Microsoft SQL Server
Authentication type: SQL Login
User name: sa
Password: insira sua senha do sql login
Clique em Connect
"ConnectionStrings": { "MyGameScoreCs": "Server=localhost;Database=MyGameScore;User Id=sa;Password=suaSenhaDoSQLLogin" },
© Thiago González