Giter Club home page Giter Club logo

coalize's Introduction

Coalize - Teste de desenvolvimento em Yii2 Framework


Requisitos

Para esse teste, os requisitos obrigatórios são:

  1. PHP 7.1
  2. Composer na versão 1.10
  3. Base de dados em MySQL 8
  4. Uso de JSON para o corpo na API

Os requisitos desejáveis incluem:

  1. Uso de Docker como base para execução, fornecendo o Dockerfile com todas as dependências para validação e teste posterior
  2. Estruturação da base com boas práticas
  3. Uso de conceitos atuais de desenvolvimento (ao critério do desenvolvedor)
  4. Submissão em um repositório git (por exemplo, GitHub) para compartilhamento
  5. Montagem da base por migrations do Yii2

Regras de Negócio e Funcionamento

  1. Autenticação por credencial (usuário/senha) e retorno de token (Bearer sugerido)
  2. Para criar um usuário, deve-se fazer um comando de terminal que recebe o login, senha e nome desejados.
  3. Todas as APIs (exceto a de autenticação) devem validar o token fornecido ao efetuar a autenticação, preferencialmente passando pelo Header (Authorization)
  4. Desenvolvimento de APIs para:
    • Autenticação
    • Cadastro de cliente básico, incluindo:
      • Nome
      • CPF (com validação)
      • Dados de endereço (CEP, Logradouro, Número, Cidade, Estado, Complemento)
      • Foto
      • Sexo
    • Lista dos clientes (com paginação para o retorno)
    • Cadastro de produto, incluindo:
      • Nome
      • Preço
      • Cliente (detentor do produto)
      • Foto
    • Lista dos produtos (com retorno paginado e possibilidade de filtrar pelo cliente)

Instalação

git clone [email protected]:mperuch/coalize.git
cd <coalize>
cp .env.example .env

Iniciar container

docker-compose up -d

Como usar

Neste ponto, a API está rodando em http://127.0.0.1. São disponibilizados os seguintes endpoints:

Para criar o usuário de login, basta executar o seguinte comando:

docker exec -it coalize_app php yii populate-user-table --name="Nome" --username=usuario --password=senha

Health Check e Autenticação

  • GET /health-check: verificação de saúde da aplicação
  • POST /v1/signup: novo usuário
  • POST /v1/signin: autenticação e geração do JWT
  • POST /v1/refresh-token: recriação do JWT

Clientes

  • GET /v1/customer: listagem de clientes
  • POST /v1/customer/create: novo cliente
  • PUT /v1/customer/update: edição de cliente
  • POST /v1/customer/[customerId]/upload-picture: upload da foto
  • DELETE /v1/customer/delete: exclusão de cliente

Produtos

  • GET /v1/product: listagem de produtos
  • GET /v1/product/?customer_id=[customerId]: listagem de produtos do cliente
  • POST /v1/product/create: novo produto
  • PUT /v1/product/update: edição de produto
  • POST /v1/product/[productId]/upload-picture: upload da foto
  • DELETE /v1/product/delete: exclusão de produto

OBSERVAÇÕES IMPORTANTES

  • Após autenticação, o token é enviado no cabeçalho (Authorization: Bearer token)
  • As imagens são enviadas para o diretório web/uploads/[customers|products]
  • A paginação está configurada para 4 registros por página
  • Aqui está o arquivo contendo os requests (gerado no Insomnia, mas pode ser importado no Postman, se necessário).

coalize's People

Contributors

mperuch avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.