Loading repository data…
Loading repository data…
GustavoM96 / repository
TrainRecord é uma aplicação desenvolvida em .NET C# com a finalidade de gerenciar atividades de academia para alunos e professores.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Temos 3 tipos de users:
para a instalação dos tools deste projeto, basta executar o build do projeto TrainRecord.Api.csproj com o seguinte comando em seu terminal
dotnet build
Como formatador de C# está sendo utilizado o csharpier e suas configurações estão no arquivo .csharpierrc.json localizado na raiz deste projeto.
As mensagens de commits deste repo seguem o seguinte regex
^(feat|fix|ci|chore|docs|test|style|refactor|perf|build|revert)(\(.+?\))?: .{1,}$.
No pré-commit executamos o comando dotnet csharpier . para formatar antes do commit e rodamos os testes para garantir a qualidade do código.
Simplesmente em seu terminal.
git clone https://github.com/GustavoM96/TrainRecord.git
dotnet build
dotnet run --project src/TrainRecord.Api
Simplesmente em seu terminal.
git clone https://github.com/GustavoM96/TrainRecord.git
docker compose up
Api - Camada de configuração de api, direcionar os dados de request e response para o usuário.
Application - Camada responsável por criar os comandos e queries que conecta a api com a Infrastructure no padrão CQRS.
Core - Camada de entidades, enums, exceptions e regras de negócio.
Infrastructure - Camada que obtem dados externos como api, banco de dados, filas e outros.
Teste de unidade, para verificar se os comandos e queries estão sendo executado como devem.
Testes de integração, para verificar o retorno das respostas api
Fluxos do usuário
Mapeamento das rotas
Entidades de Banco de dados
Post /api/auth/register
{
"email": "josé.silva@gmail.com",
"password": "sd#fd$904&3jkdf",
"firstName": "José",
"lastName": "Silva",
"Role": 1
}
{
"id": "00000000-0000-0000-0000-000000000000",
"email": "josé.silva@gmail.com",
"firstName": "José",
"lastName": "Silva",
"Role": 1
}
Post /api/auth/login
{
"email": "josé.silva@gmail.com",
"password": "sd#fd$904&3jkdf"
}
{ "idToken": "fs432jnj543hb-lsdsdasdsadasd-df4545" }
Post /api/auth/changePassword
{
"email": "josé.silva@gmail.com",
"password": "sd#fd$904&3jkdf",
"newPassword": "sd#fd$904&3jkdf#NovaSenha"
}
Sem corpo de resposta
Get /api/user
sem corpo de requisição
{
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"email": "josé.silva@gmail.com",
"firstName": "José",
"lastName": "Silva"
},
{
"id": "00000000-0000-0000-0000-000000000001",
"email": "caio.costa@gmail.com",
"firstName": "Caio",
"lastName": "Costa"
}
],
"perPage": 2,
"pageNumber": 4
}
Patch /api/user/{userId}
{ "firstName": "José#NomeTrocado" }
{
"id": "00000000-0000-0000-0000-000000000000",
"email": "josé.silva@gmail.com",
"firstName": "José#NomeTrocado",
"lastName": "Silva"
}
Get /api/user/{idUser}
sem corpo de requisição
{
{
"id": "00000000-0000-0000-0000-000000000000",
"email": "josé.silva@gmail.com",
"firstName": "José",
"lastName": "Silva"
}
}
Post /api/activity
{
"name": "flexão de braço"
}
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "flexão de braço"
}
Get /api/activity
sem corpo de requisição
{
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "flexão de braço"
},
{
"id": "00000000-0000-0000-0000-000000000001",
"name": "pular corda"
}
],
"perPage": 2,
"pageNumber": 4
}
Post /api/user/{userID}/activity/{id}/record
{
"weight": 20,
"repetition": 4,
"serie": 2
}
{
"userId": "00000000-0000-0000-0000-000000000000",
"activityId": "00000000-0000-0000-0000-000000000000",
"weight": 20,
"repetition": 4,
"serie": 2
}
Get /api/user/{userId}/activity/{activityId}/record
sem corpo de requisição
{
"items": [
{
"userId": "00000000-0000-0000-0000-000000000000",
"activityId": "00000000-0000-0000-0000-000000000000",
"weight": 0,
"repetition": 30,
"serie": 2,
"id": "00000000-0000-0000-0000-000000000000"
},
{
"userId": "00000000-0000-0000-0000-000000000000",
"activityId": "00000000-0000-0000-0000-000000000000",
"weight": 0,
"repetition": 100,
"serie": 5,
"id": "00000000-0000-0000-0000-000000000000"
}
],
"perPage": 2,
"pageNumber": 4
}
Delete /api/user/{userId}/record/{recordId}
sem corpo de requisição
sem corpo de resposta
Delete /api/user/{userId}/activity/{activityId}/record
sem corpo de requisição
sem corpo de resposta
Post /api/teacher/{userId}/student/{studentId}
Sem corpo de requisição
{
"studentId": "00000000-0000-0000-0000-000000000000",
"teacherId": "00000000-0000-0000-0000-000000000001"
}
Get /api/teacher
sem corpo de requisição
{
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"email": "prof.josé.silva@gmail.com",
"firstName": "José",
"lastName": "Silva",
"Role": 2
},
{
"id": "00000000-0000-0000-0000-000000000001",
"email": "prof.caio.costa@gmail.com",
"firstName": "Caio",
"lastName"