Desafios-Back-end

Desafios de Back-end

Este repositório contém uns desafios de back-end proposto por algumas empresas.

Desafios

Os desafios são divididos em pastas.

Desafio PicPay Back-end

Este repositório contém a implementação do desafio técnico proposto pela PicPay para a vaga de back-end.

Link para o Desafio

O desafio consiste em criar uma API REST para realizar transferências entre usuários. As principais funcionalidades são:

Tecnologias

Estrutura do projeto

Executando o projeto localmente

Para executar o projeto na sua máquina, siga os passos abaixo:

1. Clone o repositório

https://github.com/Cry199/Desafios-Back-end.git

2. Navegue até a pasta do projeto

cd Desafios\picpaydesafiobackend

3. Execute o comando para build

mvn clean install

4. Execute a aplicação

mvn spring-boot:run

A API estará disponível em http://localhost:8080.

5. Acesse os endpoints

Agora você pode acessar os endpoints da API no seu navegador ou ferramenta como Postman.

Por exemplo, para cadastrar um novo usuário:

POST /users 
{  "firstName":  "Teste",  "lastName":  "Teste",  "document":  "122345671223",  "email":  "teste@gmail.com",  "userType":  "COMMON",  "balance":  10,  "password":  "Teste"  }

Rotas da API

As rotas da API são:

POST /users

Rota para cadastro de novo usuário.

Request body: Objeto JSON representando um usuário com os campos firstName, lastName, document, email, userType, balance e password.

Exemplo de request body:

{  "firstName":  "Cauã",  "lastName":  "Ribeiro",  "document":  "122345671223",  "email":  "teste@gmail.com",  "userType":  "COMMON",  "balance":  10,  "password":  "senha"  }

Response: Objeto JSON representando o usuário criado, contendo os campos id e demais campos submetidos no cadastro.

Exemplo de response:

{  "id":  1,  "firstName":  "Cauã",  "lastName":  "Ribeiro",  "document":  "122345671223",  "email":  "teste@gmail.com",  "password":  "senha",  "balance":  10,  "userType":  "COMMON"  }

GET /users

Rota para listar todos os usuários cadastrados.

Parâmetros: Nenhum

Response: Array de objetos JSON representando os usuários.

Exemplo de response:

[  {  "id":  1,  "firstName":  "Cauã",  //...demais campos },  {  "id":  2,  "firstName":  "Helo",  //...demais campos  }  ]

POST /transfers

Rota para realizar transferência entre contas.

Request body: Objeto JSON representando a transferência, com os campos amount, sender e receiver.

Exemplo de request body:

{ "senderId":  1, "receiverId":  2,"value":  1}

Response: Objeto JSON representando transferência efectuada, incluindo o campo timestamp.

Exemplo de response:

{"id":1,"anount":1,"sender":{"id":2,"firstName":"Cauã","lastName":"Ribeiro","document":"122345671223","email":"teste@gmail.com","password":"senha","balance":9.00,"userType":"COMMON"},"receiver":{"id":3,"firstName":"Helo","lastName":"Ribeiro","document":"12234567","email":"teste1@gmail.com","password":"senha","balance":11.00,"userType":"COMMON"},"timestamp":"2023-10-18T15:59:05.1549889"}

Possíveis Melhorias

Explorando mais do Spring Boot

Aprendendo sobre banco de dados

Conhecendo testes automatizados

Subindo nível em Java e OO

Preparando para produção

Considerações Finais

Este projeto foi desenvolvido como parte do desafio proposto pela PicPay. Foi um excelente exercício para praticar boas práticas de API REST com Spring Boot e documentação.

TOP ( ̄y▽, ̄)╭

Desafio 2

Em Construção (❁´◡`❁)

Créditos

Criado por Cry199 como material de estudo.