# Controle de Bebidas - TODO

## Backend / Schema
- [x] Tabela `products` (id, name, imageUrl, quantity, minStock, costPrice, createdAt, updatedAt)
- [x] Tabela `stock_movements` (id, productId, type, quantity, note, userId, createdAt)
- [x] Migration SQL gerada e aplicada
- [x] Query helpers em server/db.ts
- [x] tRPC routers: products (list, create, update, delete, seed)
- [x] tRPC routers: movements (list por produto, add entrada, add saída)
- [x] Seed automático dos 8 produtos pré-cadastrados no primeiro acesso

## Frontend
- [x] Design system: paleta elegante dark/gold, tipografia refinada
- [x] DashboardLayout com sidebar navegação
- [x] Página: Dashboard com cards visuais de todas as bebidas
- [x] Alerta visual de estoque baixo nos cards
- [x] Página: Catálogo / Lista de produtos com edição e exclusão
- [x] Modal: Cadastro de novo produto (nome, imagem URL/upload, quantidade, preço, estoque mínimo)
- [x] Modal: Edição de produto existente
- [x] Modal: Entrada de estoque (adicionar unidades)
- [x] Modal: Saída de estoque (dar baixa)
- [x] Página: Histórico de movimentações por produto
- [x] Página: Relatório de estoque (valor por produto, total geral)

## Qualidade
- [x] Testes vitest para routers principais
- [x] Estados de loading, vazio e erro em todas as páginas
- [x] Responsividade mobile

## Melhorias Identificadas
- [x] Adicionar tratamento de erro visível nas páginas (estados de erro com retry)
- [x] Melhorar responsividade mobile das tabelas (scroll horizontal)
- [x] Upload de imagem via URL implementado (upload de arquivo é melhoria futura)

## Correções Solicitadas
- [x] Substituir imagem de Água com Gás e Água sem Gás pela Água da Pedra correta
- [x] Corrigir layout dos cards: imagem e informações na mesma linha (horizontal)

## Correção de Imagens (Fundo)
- [x] Substituir imagem da Heineken por PNG com fundo transparente
- [x] Substituir imagem da Coca-Cola por PNG com fundo transparente

## Novo Campo: Preço de Venda
- [x] Adicionar coluna salePrice na tabela products (decimal, opcional)
- [x] Atualizar seed com preço de venda dos 8 produtos
- [x] Atualizar router: incluir salePrice em create, update e list
- [x] Exibir preço de venda nos cards do Dashboard
- [x] Adicionar campo salePrice no modal de cadastro/edição
- [x] Exibir preço de venda e margem no Relatório

## Controle de Acesso por Perfil (Admin vs Usuário)
- [x] Proteger routers: create, update, delete e entrada de estoque só para admin
- [x] Usuário comum: só pode registrar saída de estoque
- [x] Usuário comum: NÃO vê preço de custo (apenas preço de venda)
- [x] Usuário comum: NÃO vê botão "Novo Produto", "Editar" e "Excluir"
- [x] Usuário comum: NÃO vê botão "Entrada" nos cards do dashboard
- [x] Usuário comum: NÃO acessa página de Relatório (redirecionar)
- [x] Admin: acesso total a todas as funcionalidades
- [x] Página de login obrigatória para todos os usuários
- [x] Exibir badge de perfil na sidebar (Admin / Usuário)

## Sistema de Login Próprio (sem Manus OAuth)
- [x] Adicionar coluna `passwordHash` na tabela users
- [x] Remover dependência do Manus OAuth do backend
- [x] Implementar rota POST /api/local-auth/login com e-mail + senha + JWT próprio
- [x] Implementar rota POST /api/local-auth/logout
- [x] Implementar rota GET /api/local-auth/me via JWT cookie
- [x] Criar usuário admin padrão no seed (admin@bebidas.com / senha configurável)
- [x] Router tRPC: gerenciar usuários (listar, criar, editar role, excluir) — só admin
- [x] Tela de login com e-mail e senha (substituir tela Manus)
- [x] Página de Gerenciamento de Usuários (admin): listar, criar, editar perfil e excluir
- [x] Remover botões e referências ao Manus OAuth do frontend
- [x] Exportar ZIP completo com instruções de deploy (README-DEPLOY.md)
