Skip to content

OvictorVieira/stock-management-api

Repository files navigation

Gerenciador de estoque de produtos

Documentação da API Gerenciador de estoque de produtos

Aplicação no Heroku

Tópicos

🔹 Descrição do projeto

🔹 Features

🔹 Pré-requisitos

🔹 Como subir a aplicação

🔹 Como executar os testes

Descrição do Projeto

Desenvolver uma API para realizar a gestão de estoque de produtos.

Features

  • Cadastrar uma loja

  • Login/Logout com a loja

  • Listar produtos de sua loja

  • Visualizar os detalhes de um produto

  • Atualizar um produto

  • Remover um produto

  • Adicionar itens a um produto

  • Remover itens de um produto

Status do Projeto: Concluido ✔️

Pré-requisitos

⚠️ Docker 🐳

⚠️ Docker compose 🐙

Como rodar a aplicação local ▶️

No terminal, clone o projeto:

https://github.com/OvictorVieira/stock-management-api.git

Entre na pasta do projeto:

cd stock-management-api/

Vamos criar nosso arquivo .env com as variáveis de ambiente necessárias:

PS.: O arquivo credentials do projeto está criptografado, para ter a chave, entre em contato.

RAILS_MASTER_KEY=

Para facilitar a construção dos containers da aplicação, nós criamos um script para você executar em seu terminal.

Execute o comando abaixo:

No final da execução do script, você estará dentro do container da aplicação stock-management-api:

bash ./docker-setup.sh

Para acessar o container e desenvolver dentro do mesmo no seu dia a dia, basta executar o script a seguir:

bash ./initiate-work.sh

Fora do container, para verificar se as imagens estão executando rode o comando:

docker ps

Aparacerá três containers: pgadmin, postgres e stock-management-api.

PS.: Você pode instalar o gerenciador de containers Portainer se quiser, é um gerenciador visual dos containers.

Assim como o script de criação da aplicação, criamos um para instalar as dependências da aplicação e configuração do banco de dados.

Dentro do container, rode o script através do comando abaixo:

bash ./application-setup.sh

Para configurar o banco de dados, em seu browser acesse o Pgadmin, usaremos as seguintes credenciais:

email senha
[email protected] SmA2020!

Em Serves clique com o botão direito do mouse e clique na opção Create ➡️ Servers

Abrirá uma tela e devemos colocar as seguintes informações:

Campo Valor Aba
Name Stock Management Api General
Host name/connection postgres Connection
Username user Connection
Password SmA2020! Connection

Clicar no botão 💾 Save

Em seguida clique em cima de Databases, serão carregados os bancos da aplicação, tanto de teste quanto de desenvolvimento.

A aplicação utiliza o puma como server, então para subir a aplicação, execute o comando abaixo:

puma -p 3000

E acesse a url: localhost:3000

Como executar os testes

Basta executar o RSPEC através do comando:

$ rspec

CI/CD

A aplicação está hospedada no Heroku e o deploy foi feito através das Actions do Github.

Arquitetura do Banco de Dados

Inicialmente seria adotado um modelo de relacionamento 1 x 1 entre as tabelas de Store e Products, porém isso iria levar a um problema de concorrência, pois teriamos muitos tratamentos no código para evitar a concorrência. Com isso, foi adotado um modelo diferente de relacionamento, um modelo N x N, onde temos uma loja com seus produtos e uma tabela gerada pelo relacionamento n x n que contém o estoque dos produtos. Para evitar a concorrência neste modelo, adicionei uma "tag" em cada movimentação de item do produto, teriamos a quantidade de itens que foram adicionados e quantos itens foram removidos, mantendo um histórico da movimentação dos itens do produto e calculamos a quantidade de itens em tempo real.

Linguagens, dependencias e libs utilizadas 📚

Licença

The MIT License (MIT)

Copyright ©️ 2020 - Gerenciador de estoque

About

API para gerenciamento de estoque de lojas

Resources

Stars

Watchers

Forks

Packages

No packages published