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
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
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
Por padrão é criado um usuário para acessar a aplicação
- Email - [email protected]
- Senha - 123456
GET /api/categories ( Retorna todas categorias )
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"
}
]
}
status 404
{
"message":"Nenhuma categoria encontrada"
}
GET /api/categories/[:category_id] ( Retorna uma categoria específica )
status 200
{
"categories":{
"id":1,
"name":"Hospedagem",
"description":"Domínio grátis e sites ilimitados"
}
}
status 404
{
"message":"Nenhuma categoria encontrada"
}
GET /api/categories/[:category_id]/products ( Retorna todos os produtos de uma categoria )
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"
}
]
}
status 404
{
"categories":{
"id":1
},
"products":[
]
}
GET /api/products/:id ( Retorna um produto específico )
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"
}
}
status 404
{
"message":"Nenhum produto encontrado"
}
GET /api/products/[:product_id]/product_plans (Retorna todos os planos de um produto)
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 )
status 200
{
"plans":{
"id":1,
"product_id":1,
"name":"Hospedagem Ilimitada I"
"status":"true"
}
}
status 404
{
"message":"Nenhum plano encontrado"
}
GET /api/product_plans/[:product_plan_id]/plan_prices (Retorna todos os planos de um produto)
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
}
}
]
}
status 404
{
"plans": 1,
"prices":[
]
}