DESAFIO FULLSTACK INTERMEDIÁRIO

S T O C K P R O

Gestão de Estoque Inteligente: Controle entradas, saídas e rastreabilidade com alertas automáticos.

Explorar Desafio

📌 O Problema Real

Pequenos lojistas muitas vezes perdem vendas por falta de produto ou compram itens que já têm em excesso, ficando com dinheiro parado. Planilhas falham porque não registram o histórico de quem tirou o produto ou quando ele entrou.

💡 A Solução

Você desenvolverá o StockPro, um sistema de gestão de inventário que controla:

  • Entradas: Registro de novas compras e estoque abastecido.
  • Saídas: Controle de vendas, perdas ou devoluções.
  • Alertas: destaque visual automático dos produtos com estoque baixo.

🟡 Requisitos Técnicos

1. Modelagem de Dados Relacional (SQLite)

O foco é o relacionamento entre o cadastro do produto e o seu histórico de movimentação completa.

-- 1. Categorias
CREATE TABLE categorias (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome TEXT NOT NULL
);

-- 2. Produtos
CREATE TABLE produtos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome TEXT NOT NULL,
    categoria_id INTEGER,
    preco_venda DECIMAL(10,2),
    estoque_minimo INTEGER DEFAULT 5,
    estoque_atual INTEGER DEFAULT 0,
    FOREIGN KEY (categoria_id) REFERENCES categorias(id)
);

-- 3. Movimentações (O Histórico de tudo)
CREATE TABLE movimentacoes (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    produto_id INTEGER NOT NULL,
    tipo TEXT CHECK(tipo IN ('Entrada', 'Saída')) NOT NULL,
    quantidade INTEGER NOT NULL,
    motivo TEXT, -- Ex: "Venda", "Compra", "Ajuste de Inventário", "Produto Vencido"
    data_movimento DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (produto_id) REFERENCES produtos(id) ON DELETE CASCADE
);
Bloqueio Negativo

O sistema não pode permitir uma "Saída" se a quantidade for maior que o estoque atual disponível.

Atualização Automática

Sempre que uma movimentação for registrada, o campo estoque_atual no produto deve ser atualizado automaticamente.

Alerta Visual

Destacar visualmente (ex: cor vermelha) os produtos onde o estoque atual atingiu o limite mínimo definido.

2. Consulta de Relatório (SQL Avançado)

Implemente uma query para ver o valor total do seu estoque (o capital que o lojista tem "parado" em mercadoria):

SELECT 
    p.nome, 
    p.estoque_atual, 
    (p.estoque_atual * p.preco_venda) AS valor_investido
FROM produtos p
WHERE p.estoque_atual > 0;

🎯 Funcionalidades MVP

  • Painel de Alertas: Exibir logo no início quais produtos precisam de compra urgente.
  • Gestão de Produtos: CRUD completo com integração de categorias.
  • Fluxo de Movimentação: Tela simples para registrar entradas e saídas de mercadoria.
  • Filtros Inteligentes: Localizar produtos rapidamente por nome ou categoria.

💰 Potencial de Renda Extra

Público Alvo

Vendedores de Instagram/Shopee, mercadinhos e lojas de bairro.

Diferencial

Sistemas rápidos e offline (SQLite) são preferidos por lojistas que não podem depender de internet instável.

Valores sugeridos (variam conforme região e escopo)

Setup Inicial: R$ 600 - R$ 1.200

Suporte Premium: R$ 40 - R$ 80 / mês

📦 Como Enviar (Padrão HDEV)

  • 1 Repositório: Suba o código e o banco SQLite de exemplo no GitHub.
  • 2 Vídeo: Demonstre o fluxo completo: Cadastro -> Entrada -> Saída Inválida -> Saída Válida.
  • 3 Issue: Abra uma issue usando o template 'Enviar entrega do desafio'.
  • 4 Links: Informe a URL do repositório e seu vídeo demonstrativo.

🎬 Vídeo Tutorial