Você está na página 1de 2

Desafio Desenvolvedor Backend

Olá candidato ou candidata,

Neste desafio iremos te colocar em contato com as principais ferramentas usadas no


núcleo da nossa API, a linguagem Elixir e o framework web Phoenix.

Elixir é uma linguagem funcional criada para construir sistemas distribuídos e tolerantes
à falha. Você encontra mais informações sobre o Elixir em https:// elixir-lang.org e sobre
o Phoenix em http://www.phoenixframework.org.

Esperamos te conhecer um pouco com esse desafio e dar a oportunidade de você


conhecer a nossa stack.

Link do repositório:

https://github.com/neru-pagamentos/backend

Clone o repositório acima e siga as instruções abaixo. Ao terminar a tarefa, compacte a


pasta com sua solução e envie por email para vagas@genpag.com.br. Não é
necessário criar um pull request.

Tarefa:

Construir uma API (CRUD) para cadastrar contas de usuários com alguns dados pessoais
e endereço. Não é necessário autenticação e proteção dos endpoints. Estabelecemos um
prazo mas não é necessário completar todos os requisitos para submeter a resposta, você
pode escolher o que ficar de fora caso não dê tempo.

Especificações desejadas:

● Conseguir criar uma conta com uma requisição POST no campinho “/api/
accounts/“ com os seguintes dados, observe as validações em parênteses:

name: campo de texto com o nome do usuário (Obrigatório);

cpf: campo para salvar o número de CPF do usuário (Obrigatório e único);

address: Objeto (Obrigatório alguns campos)


street: campo de texto para rua (Obrigatório se o CEP não for encontrado)
number: número da casa (Opcional)
complement: complemento do endereço (Opcional)
neighborhood: Bairro (Obrigatório se o CEP não for encontrado)
city: cidade (Obrigatório se o CEP não for encontrado)
state: estado sigla, DF por exemplo (Obrigatório se o CEP não for
encontrado)
postal_code: CEP (Obrigatório sempre)

O cadastro deve possibilitar a busca automática do CEP. Se eu informar apenas o CEP, o


sistema deve buscar em algum serviço o endereço deste CEP, se encontrar, preencher as
demais informações do endereço, se não encontrar retornar a validação de erro com os
campos que ficaram faltando. Você pode usar o seguinte serviço para consultar o CEP
https://viacep.com.br, que não requer autenticação, ou usar algum outro serviço de
consulta CEP que você conheça.

● Conseguir retornar os dados de um conta específica com uma requisição GET no


caminho “/api/accounts/<id da conta>”

Lembrando que a conta solicitada pode não existir.

● Conseguir atualizar os dados de uma conta com uma requisição PUT no caminho
“/api/accounts/<id da conta>” seguindo as mesmas regras da criação, apenas
não sendo possível alterar o CPF da conta;

Lembrando que a conta solicitada pode não existir ou algum outro erro
acontecer.

● Conseguir excluir uma conta com uma requisição DELETE no caminho “/api/
accounts/<id da conta>

Lembrando que a conta solicitada pode não existir ou algum outro erro
acontecer.

● Devo conseguir listar as contas existentes com uma requisição GET no caminho
“/api/accounts/“, se possível com opção de paginação usando os parâmetros
?limit=n&offset=m em que limit é o número máximo de contas retornados na
requisição e um offset a partir de qual conta é para retornar na requisição.

Você pode usar qualquer banco de dados SQL que você esteja familiarizado embora o
projeto já esteja configurado para utilizar o Postgres, veja em config/ dev.exs;

Sugestões de ferramentas:

Sugerimos as ferramentas abaixo para ajudar na implementação, porém elas não


estão instaladas.
Cliente HTTP: https://github.com/teamon/tesla
JSON encoding e decoding: https://github.com/michalmuskala/jason

Prazo:

4 dias a partir da data de recebimento deste email.

Você também pode gostar