Projeto desenvolvido como parte do processo seletivo para professor na Let's Code.
O projeto consiste em um backend em C# + ASP.NET Core + WebApi para o frontend disponibilizado pela equipe da Let's Code juntamente com as regras do desafio no link abaixo:
Backend: https://gitlab.com/gabriel.militello1/desafio-tecnico-backend.gitA aplicação desenvolvida conta com um sistema de login e autorização de acesso baseada em JWT.
O corpo da requisção para realizar o login deve conter "login" e "senha", conforme especificação abaixo:
{
"login": "COLOCAR_USUARIO",
"senha": "COLOCAR_SENHA"
}
Para realizar requisições primeiramente deve-se configurar a chave JWT e o usuário de acesso através do arquivo appsettings.json.
Abra o arquivo appsetting.json e substitua o campo "JWT:key" pela sua chave JWT e subsitua "credentials:user" e "credentials:password" por um usuário e senha que você desejar (esse usuário será utilizado no momento do login).
{
"JWT": {
"Key": "COLOCAR_CHAVE_JWT"
},
"credentials": {
"user": "COLOCAR_USUARIO",
"password": "COLOCAR_SENHA"
}
}
Uma vez que esses parâmetros foram configurados é possível rodar a aplicação através da execução do comando abaixo via linha de comando na pasta raiz da aplicação:
> dotnet run --project ./BACK/KanbanApp/KanbanApp.csproj
Para realizar o login e receber o token de acesso aos demais endpoints o usuário deve realizar uma requisição POST para http://localhost:5000/login com o corpo da requisição descrito no tópico anterior.
(POST) http://localhost:5000/login/
Uma vez que o login tenha sido realizado com sucesso o usuário poderá utilizar o token para acessar o CRUD de Cards através dos endereços abaixo:
(GET) http://localhost:5000/cards/
(POST) http://localhost:5000/cards/
(PUT) http://localhost:5000/cards/{id}
(DELETE) http://localhost:5000/cards/{id}
O projeto pedia para criar o backend e colocar na pasta "BACK" assumindo que a outra pasta seria o "FRONT" disponibilizado pela equipe da Let's Code.
Entretanto, ao rodar o Front na minha máquina eu fui incapaz de faze-lo funcionar em tempo de desafio. O objeto cards apresentava um erro. Tentei contorna-lo colocando uma trativa conforme o código abaixo. Porém, o erro persistiu em outras etapas do código do FRONT e a falta de tempo hábil me impediu de resolver.
{ cards ?
cards.filter(c => c !== undefined && c.lista === 'ToDo').map(c =>
<Card
key={c.id}
titulo={c.titulo}
conteudo={c.conteudo}
sendForward={changeListHandler('Doing', c.id)}
update={updateCardHandler(c.id)}
remove={removeCardHandler(c.id)}
/>
) : <p>Sem cards</p>
}