Este projeto é um sistema web de Enterprise Resource Planning (ERP) focado em varejo, desenvolvido para a disciplina de Programação Orientada a Objetos 3. O sistema permite o gerenciamento completo de vendas, estoque, produtos, fornecedores e usuários, com perfis de acesso distintos e auditoria de dados.
- Controle de Acesso: Níveis de permissão para Administrador, Gerente, Funcionário e Cliente.
- Gestão de Produtos: Cadastro completo com Marca, Categoria (roupas) e Fornecedor.
- Controle de Estoque: Monitoramento de entradas/saídas com alertas visuais para estoque baixo ou crítico.
- Ponto de Venda (PDV): Realização de vendas com carrinho de compras, cálculo automático e geração de recibo em PDF.
- Gestão Financeira: Controle básico de contas a pagar e categorias de despesas.
- Auditoria: Logs automáticos de ações (Criar, Atualizar, Excluir, Login) monitorando quem fez o que e quando.
- Dashboard: Gráficos interativos de faturamento e vendas por forma de pagamento.
- Segurança: Criptografia de senhas com BCrypt e recuperação de senha via e-mail.
O projeto foi construído utilizando a arquitetura MVC com as seguintes tecnologias:
-
Backend:
- Java 11 (Linguagem base).
- Java EE 8 (Servlet, CDI, JPA).
- Hibernate 5.6.15 (Persistência de dados/ORM).
- Maven (Gerenciamento de dependências e build).
- Spring Security Crypto (Hash de senhas com BCrypt).
- OpenPDF (Geração de relatórios/recibos).
-
Frontend:
- JSF 2.3 (JavaServer Faces).
- PrimeFaces 12.0.0 (Biblioteca de componentes visuais).
- OmniFaces (Utilitários para JSF).
- Chart.js (Gráficos via wrapper Java).
-
Infraestrutura:
- MySQL 8 (Banco de Dados).
- Tomcat 9 (via
webapp-runnerpara execução standalone). - Railway (Configuração pronta para deploy em nuvem).
Tela de Login: Autenticação segura com Spring Security e opção de recuperação de senha.
Painel Administrativo: Gráficos de faturamento, vendas por forma de pagamento e alertas de estoque baixo.
Frente de Caixa: Seleção de produtos, carrinho de compras dinâmico e finalização de venda com recibo.
Gestão de Produtos: Visualização rápida de níveis de estoque com indicadores de status (OK, Baixo, Crítico).
Para rodar o projeto localmente, você precisará ter instalado:
- Java JDK 11 ou superior.
- Maven 3.6+.
- MySQL Server 8.0.
- Git.
O projeto está configurado para criar as tabelas automaticamente (hbm2ddl.auto = update), mas você precisa criar o schema inicial.
-
Acesse seu MySQL e crie um banco de dados chamado
teste(ou altere o nome no arquivo de configuração):CREATE DATABASE teste;
-
Configuração Local: O arquivo de configuração principal está em
src/main/resources/config.properties. Verifique se as credenciais correspondem ao seu banco local:db.url=jdbc:mysql://localhost:3306/teste?useSSL=false&serverTimezone=America/Sao_Paulo db.username=root db.password=sua_senha_aqui
Para testar a recuperação de senha sem enviar e-mails reais, o projeto usa o Mailtrap.
- Crie uma conta em Mailtrap.io.
- Vá em "Inboxes" -> "SMTP Settings".
- Atualize o arquivo
src/main/resources/config.propertiescom suas credenciais:mailtrap.host=sandbox.smtp.mailtrap.io mailtrap.port=2525 mailtrap.username=SEU_USUARIO mailtrap.password=SUA_SENHA
O projeto utiliza o webapp-runner configurado no pom.xml, dispensando a instalação separada do Tomcat.
-
Clone o repositório:
git clone <url-do-repositorio> cd erp-varejo-v5
-
Compile o projeto:
mvn clean install
(Se houver erro nos testes unitários, use
mvn clean install -DskipTests). -
Execute a aplicação:
java -jar target/dependency/webapp-runner.jar --port 8080 target/*.war -
Acesse: Abra o navegador em
http://localhost:8080/erp-varejo-v5
Como o banco inicia vazio, execute o SQL abaixo no seu banco de dados para criar o primeiro usuário administrador (Senha padrão: admin):
INSERT INTO usuario (nome_completo, cpf, email, senha, data_cadastro, categoria_usuario, ativo)
VALUES ('Administrador', '000.000.000-00', 'admin@admin.com', '$2a$10$fWO/s7y.g.u.y.u.y.u.y.u.y.u.y.u.y.u.y.u.y.u.y.u.y', NOW(), 'ADMINISTRADOR', 1);


