LuizVenarusso / produtos

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

README

Gerenciamento de Produtos

Este é o terceiro projeto que fizemos na Campus Code.

Trata-se de uma representação minimalista de um sistema de gerenciamento de produtos e suas dependências.

O sistema está dividido em duas partes, interface com o usuário e uma API que interage com outras aplicações externas.

Na interface do usuário, o mesmo é capaz de cadastrar categorias, produtos e planos com seus devidos preços e suas periodicidades.

Já a API é responsável por enviar dados no formato JSON do conteúdo cadastrado no banco de dados.

Inicialização: Para iniciar a aplicação basta utilizar o comando bin/setup via terminal.

Gems usadas em produção

  • LocaStyle (CSS)
  • Devise (Autenticação)
  • Paperclip (Upload de imagens)
  • Jquery (Gerenciamento dinâmico de DOM)

Gems usadas para testes

  • Rspec Rails (TDD)
  • Capybara (TDD)
  • Simplecov (Cobertura de testes)
  • Rubocop (Boas práticas no código)
  • Factory Bot Rails (Otimização de código)

Para o projeto, o time utilizou o trello como referência e organização de forma que cada história individualmente gerasse valor ao projeto.
https://trello.com/b/xjccfS5P/time-produtos-qsd

Instalação

Faça o download ou clone o código fonte do projeto:

git clone http://vps1474.publiccloud.com.br/qsd18/produtos.git

Para inicializar a aplicação, dentro do diretório, execute no terminal:

bin/setup

Configuração

Foi criado um arquivo de configuração /config/products.yml.sample. Arquivo de configuração da porta onde será executada a aplicação.

Configuração padrão:
http://localhost:3001

Este arquivo deverá ser ser copiado e removido a extesão .sample.

/config/products.yml

Login

Por padrão é criado um usuário para acessar a aplicação

TEAM

Carlos Sechi

Davi Carvalho

Italo Almeida

Luiz Gustavo Venarusso

Thiago Morais

API

Categoria

GET /api/categories ( Retorna todas categorias )

Sucesso

status 200

{
   "categories":[
      {
         "id":1,
         "name":"Hospedagem",
         "description":"Domínio grátis e sites ilimitados"
      },
      {
         "id":2,
         "name":"Crie seu site",
         "description":"Criador de site"
      }
   ]
}
Falha

status 404

{
   "message":"Nenhuma categoria encontrada"
}

GET /api/categories/[:category_id] ( Retorna uma categoria específica )

Sucesso

status 200

{
   "categories":{
      "id":1,
      "name":"Hospedagem",
      "description":"Domínio grátis e sites ilimitados"
   }
}
Falha

status 404

{
   "message":"Nenhuma categoria encontrada"
}

Produtos

GET /api/categories/[:category_id]/products ( Retorna todos os produtos de uma categoria )

Sucesso

status 200

{
   "categories":{
      "id":"1"
   },
   "products":[
      {
         "id":1,
         "name":"Hospedagem",
         "description":"Hospedagem ilimitada",
         "product_key":"HOSP123",
         "product_category_id":1,
         "contract":"contrato123",
        "icon_url":"http://localhost:3001/system/products/icons/000/000/001/thumb.png?1518627073"
      },
      {
         "id":2,
         "name":"Hospedagem",
         "description":"Hospedagem básica",
         "product_key":"HOSP124",
         "product_category_id":1,
         "contract":"contrato124",
         "icon_url":"http://localhost:3001/system/products/icons/000/000/001/thumb.png?1518627073"
      }
   ]
}
Falha

status 404

{
   "categories":{
      "id":1
   },
   "products":[
   ]
}

GET /api/products/:id ( Retorna um produto específico )

Sucesso

status 200

{
   "products":{
      "id":1,
      "name":"Hospedagem",
      "description":"Hospedagem ilimitada",
      "product_key":"HOSP123",
      "product_category_id":1,
      "contract":"contrato123",
      "icon_url":"http://localhost:3001/system/products/icons/000/000/001/thumb.png?1518627073"
   }
}
Falha

status 404

{
   "message":"Nenhum produto encontrado"
}

Planos

GET /api/products/[:product_id]/product_plans (Retorna todos os planos de um produto)

Sucesso

status 200

{
   "products":{
      "id":"1"
   },
   "plans":[
      {
         "id":1,
         "product_id":1,
         "name":"Hospedagem Ilimitada I",
         "status":true
      }
   ]
}

GET /api/product_plans/:id ( Retorna um plano específico )

Sucesso

status 200

{
   "plans":{
      "id":1,
      "product_id":1,
      "name":"Hospedagem Ilimitada I"
      "status":"true"
   }
}
Falha

status 404

{
   "message":"Nenhum plano encontrado"
}

Preços e Periodicidades dos Planos

GET /api/product_plans/[:product_plan_id]/plan_prices (Retorna todos os planos de um produto)

Sucesso

status 200

{
  "plans":"1",
  "prices":[
     {
        "id":1,
        "product_plan_id":1,
        "value":"100.0",
        "periodicity":{
           "id":1,
           "name":"Anual",
           "period":12
        }
     },
     {
        "id":2,
        "product_plan_id":1,
        "value":"100.0",
        "periodicity":{
           "id":2,
           "name":"Mensal",
           "period":1
        }
     }
  ]
}
Falha

status 404

{
   "plans": 1,
   "prices":[
   ]
}

About


Languages

Language:Ruby 73.7%Language:HTML 24.8%Language:JavaScript 0.8%Language:CSS 0.6%