Skip to content

Repository files navigation

🏪 PDV ModernoMS

Um Sistema de Ponto de Venda moderno, modular e escalável projetado para facilitar a colaboração entre desenvolvedores.


📋 Informações do Projeto

Campo Descrição
Status ✅ Em Desenvolvimento Ativo
Versão 1.0.0
Licença MIT
Autores Paulo Dias, Maria Eliza, Iago

🎯 Sobre o Projeto

PDV ModernoMS é um sistema de ponto de venda (PDV) moderno, modular e escalável para pequenos e médios comércios. O projeto foi desenvolvido com foco em simplicidade, performance e facilidade de colaboração entre desenvolvedores.

✨ Características Principais

  • Interface Limpa: Design intuitivo baseado em Bootstrap 5.3
  • Operações Rápidas: Poucas cliques para realizar vendas
  • Controle de Estoque: Gerenciamento automático de inventário
  • Autenticação Segura: Sistema de login com roles e permissões
  • Modular: Código organizado em módulos independentes
  • Escalável: Arquitetura preparada para crescimento

🚀 Como Inicializar o Projeto

Pré-requisitos

Antes de começar, certifique-se de ter instalado:

  • PHP >= 8.2
  • Composer (Gerenciador de dependências PHP)
  • Docker e Docker Compose (para banco de dados)
  • Git (controle de versão)
  • Symfony CLI (opcional, mas recomendado)

📦 Passo 1: Clonar o Repositório

git clone https://github.com/seu-usuario/pdv-mscode-2025.git
cd pdv-mscode-2025

⚙️ Passo 2: Instalar Dependências

# Instalar dependências PHP via Composer
composer install

# Instalar asset mapper (CSS, JS, etc)
php bin/console importmap:install

🗄️ Passo 3: Configurar Banco de Dados

# Copiar arquivo .env.example para .env
cp .env.example .env

# Iniciar containers Docker (MySQL)
docker-compose up -d

# Aguarde alguns segundos para o MySQL inicializar completamente
sleep 10

# Executar migrations (criação de tabelas)
php bin/console doctrine:migrations:migrate

🌱 Passo 4: Carregar Dados de Exemplo (Opcional)

# Alguns dados de exemplo já são inseridos nas migrations
# Verifique o banco de dados para confirmar

🎮 Passo 5: Iniciar o Servidor Local

# Iniciar servidor de desenvolvimento
symfony server:start

# Ou usando PHP nativo
php -S localhost:8000 -t public

# A aplicação estará disponível em: http://localhost:8000

📝 Passo 6: Acessar o Sistema

  • URL: http://localhost:8000
  • Login Padrão: (verifique o banco de dados ou migrations)

📱 Funcionalidades

📦 Módulo de Caixa (Vendas)

Gerenciamento completo do ponto de venda em tempo real.

Funcionalidade Descrição
Nova Venda Iniciar novo carrinho de compras
Adicionar Produtos Digitar código e adicionar automaticamente
Selecionar Cliente Vincular cliente à venda
Remover Produtos Retirar itens do carrinho
Forma de Pagamento Dinheiro, Cartão, Cheque, PIX
Cálculo de Troco Automático conforme valor recebido
Cancelar Venda Desfazer venda em andamento
Histórico Visualizar todas as vendas realizadas

📊 Módulo de Produtos (Estoque)

Gerenciamento completo de inventário.

Funcionalidade Descrição
Criar Produto Nome, código único, preço, quantidade
Editar Produto Atualizar informações
Deletar Produto Soft delete (inativar)
Restaurar Produto Reativar produtos
Buscar Produtos Pesquisa por nome ou código
Status de Estoque Em Estoque / Baixo Estoque / Fora de Estoque
Listagem Filtrada Ver produtos com filtros avançados

👥 Módulo de Clientes

Gerenciamento de dados e histórico de clientes.

Funcionalidade Descrição
Criar Cliente Nome, CPF, data de nascimento, contato
Editar Cliente Atualizar informações
Deletar Cliente Soft delete (inativar)
Restaurar Cliente Reativar clientes
Detalhes Visualizar informações completas
Endereços Múltiplos endereços por cliente
Histórico de Vendas Ver todas as compras do cliente

🔐 Módulo de Usuários

Gerenciamento de acesso e permissões.

Funcionalidade Descrição
Criar Usuário Nome, email, telefone, senha
Editar Usuário Atualizar dados
Deletar Usuário Inativar usuário
Restaurar Usuário Reativar usuário
Roles ROLE_USER, ROLE_ADMIN
Autenticação Login com email e senha
Autorização Permissões baseadas em roles

📤 Módulo de Movimentações

Rastreamento de entrada e saída de estoque.

Funcionalidade Descrição
Registrar Movimentação Entrada, Saída, Ajuste, Devolução
Histórico Completo Rastreamento total de movimentações
Tipos Entrada, Saída, Ajuste, Devolução

📈 Dashboard

Visualização de dados em tempo real.

Funcionalidade Descrição
Resumo de Vendas Total do dia/período
Estoque Baixo Alertas de produtos com pouca quantidade
Produtos Mais Vendidos Ranking de vendas
Gráficos Visualização intuitiva de dados

🏗️ Arquitetura e Estrutura

Padrão de Design: MVC + Service Layer

O projeto segue a arquitetura MVC (Model-View-Controller) com uma camada de Services para lógica de negócio complexa.

┌─────────────────────────────────────────┐
│        Frontend (Templates - Twig)      │
└────────────────┬────────────────────────┘
                 │
┌────────────────▼────────────────────────┐
│     Controllers (Requisições HTTP)      │
└────────────────┬────────────────────────┘
                 │
┌────────────────▼────────────────────────┐
│    Services (Lógica de Negócio)         │
└────────────────┬────────────────────────┘
                 │
┌────────────────▼────────────────────────┐
│  Repositories (Acesso ao Banco)         │
└────────────────┬────────────────────────┘
                 │
┌────────────────▼────────────────────────┐
│  Entities (Modelos de Dados)            │
└──────────────────────────────────────────┘

📂 Estrutura de Pastas

pdv-mscode-2025/
│
├── 📁 assets/                    # Arquivos estáticos (CSS, JS)
│   ├── app.js                    # JavaScript principal
│   ├── bootstrap.js              # Configuração Bootstrap
│   ├── controllers/              # Stimulus Controllers
│   └── styles/                   # Estilos CSS
│
├── 📁 bin/                       # Binários executáveis
│   └── console                   # CLI do Symfony
│
├── 📁 config/                    # Configuração da aplicação
│   ├── packages/                 # Configuração dos bundles
│   ├── routes/                   # Definição de rotas
│   ├── services.yaml             # Serviços (DI)
│   └── routes.yaml               # Mapeamento de rotas
│
├── 📁 migrations/                # Versionamento do banco de dados
│   └── Version*.php              # Migrations numeradas
│
├── 📁 public/                    # Raiz acessível ao público
│   └── index.php                 # Ponto de entrada
│
├── 📁 src/                       # Backend (Código principal)
│   ├── Controller/               # Controladores da aplicação
│   │   ├── Caixa/                # Módulo de vendas
│   │   ├── Cliente/              # Módulo de clientes
│   │   ├── Produto/              # Módulo de produtos
│   │   ├── Usuarios/             # Módulo de usuários
│   │   ├── Movimentacao/         # Módulo de movimentações
│   │   ├── Dashboard/            # Dashboard
│   │   └── Seguranca/            # Autenticação
│   │
│   ├── Entity/                   # Modelos de dados
│   │   ├── Produtos.php
│   │   ├── Usuarios.php
│   │   ├── Clientes.php
│   │   ├── Vendas.php
│   │   ├── VendasItem.php
│   │   ├── Enderecos.php
│   │   └── Movimentacoes.php
│   │
│   ├── Repository/               # Acesso ao banco de dados
│   │   ├── ProdutosRepository.php
│   │   ├── UsuariosRepository.php
│   │   ├── ClientesRepository.php
│   │   ├── VendasRepository.php
│   │   ├── VendasItemRepository.php
│   │   ├── EnderecosRepository.php
│   │   └── MovimentacoesRepository.php
│   │
│   ├── Services/                 # Lógica de negócio
│   │   ├── Authorization/        # Autorização
│   │   ├── Cliente/              # Serviços de cliente
│   │   ├── Produto/              # Serviços de produto
│   │   ├── Usuario/              # Serviços de usuário
│   │   ├── Venda/                # Serviços de venda
│   │   ├── Movimentacao/         # Serviços de movimentação
│   │   ├── Dashboard/            # Serviços do dashboard
│   │   └── Utils/                # Utilitários
│   │
│   ├── Enums/                    # Enumerações
│   │   ├── ProdutosStatusEnum.php
│   │   ├── VendasStatusEnum.php
│   │   ├── VendasPagamentoEnum.php
│   │   └── TipoMovimentacoesEnum.php
│   │
│   ├── Exceptions/               # Exceções customizadas
│   └── Kernel.php                # Núcleo da aplicação
│
├── 📁 templates/                 # Templates Twig (Views)
│   ├── base.html.twig            # Template base
│   ├── index.html.twig           # Página inicial
│   ├── caixa/                    # Templates de vendas
│   ├── clientes/                 # Templates de clientes
│   ├── produtos/                 # Templates de produtos
│   ├── usuarios/                 # Templates de usuários
│   ├── movimentacoes/            # Templates de movimentações
│   ├── dashboard/                # Templates do dashboard
│   ├── seguranca/                # Templates de autenticação
│   └── components/               # Componentes reutilizáveis
│
├── 📁 tests/                     # Testes automatizados
│   └── bootstrap.php
│
├── 📁 translations/              # Arquivos de localização
│
├── 📁 var/                       # Cache e logs (gerado automaticamente)
│
├── 📄 .env.example               # Template de variáveis de ambiente
├── 📄 .editorconfig              # Configuração de editor
├── 📄 composer.json              # Dependências PHP
├── 📄 composer.lock              # Lock file de dependências
├── 📄 docker-compose.yml         # Orquestração Docker
├── 📄 phpunit.dist.xml           # Configuração de testes
└── 📄 README.md                  # Você está aqui!

🛠️ Stack Tecnológico

Backend

Tecnologia Versão Descrição
Symfony 7.3 LTS Framework PHP moderno
Doctrine 3.5 ORM para banco de dados
Twig 3.0 Template engine
PHP >= 8.2 Linguagem principal

Banco de Dados

Tecnologia Versão Descrição
MySQL 8.0.32 Banco relacional

Frontend

Tecnologia Versão Descrição
Bootstrap 5.3 Framework CSS
Bootstrap Icons 1.x Conjunto de ícones
Stimulus JS Interatividade
Turbo JS Navegação rápida

DevOps

Tecnologia Versão Descrição
Docker - Containerização
Docker Compose - Orquestração

📋 Padrões de Código

📝 Padrões de Commit

Todos os commits devem seguir o padrão abaixo:

<tipo>: <descrição breve>

<corpo detalhado (opcional)>

Tipos de Commit

Tipo Descrição Exemplo
feat Nova funcionalidade feat: Adicionar módulo de movimentações
refac Refatoração de código refac: Melhorar estrutura de services
fix Correção de bug fix: Corrigir cálculo de troco
chore Tarefas de manutenção chore: Atualizar dependências
docs Documentação docs: Atualizar README

🔀 Padrões de Pull Request (PR)

Título:

[#CODIGO_TASK] [TIPO] Descrição breve

Exemplos:

  • [#40] [FEAT] Implementar módulo de movimentações
  • [#35] [BUG] Corrigir cálculo de estoque
  • [#42] [REFAC] Melhorar validações de usuário

Descrição PR:

## Descrição
Breve explicação do que foi implementado.

## Screenshots (se aplicável)
Adicione prints da funcionalidade.

## Tipo de Mudança
- [ ] Nova funcionalidade
- [ ] Correção de bug
- [ ] Refatoração
- [ ] Documentação

## Checklist
- [ ] Testado localmente
- [ ] Não há conflitos de merge
- [ ] Segue os padrões do projeto

🎯 Padrões de Task

Tasks são criadas no repositório para organizar o trabalho. Devem conter:

  • ✅ Descrição clara e detalhada
  • ✅ Critérios de aceitação
  • ✅ Screenshots/mockups (quando aplicável)
  • ✅ Prioridade
  • ✅ Estimativa de esforço (opcional)

🔑 Conceitos Importantes

Controllers

Controllers são responsáveis por receber requisições HTTP e retornar respostas.

Estrutura: App\Controller\[Modulo]\[Acao]\Controller

Exemplo: App\Controller\Produto\Criar\Exibir\Controller

Entities

Entidades mapeiam tabelas do banco de dados usando Doctrine ORM.

Principais Entidades:

  • Usuarios - Usuários do sistema
  • Produtos - Produtos disponíveis
  • Clientes - Clientes cadastrados
  • Vendas - Vendas realizadas
  • VendasItem - Itens de cada venda
  • Enderecos - Endereços de clientes
  • Movimentacoes - Movimentações de estoque

Repositories

Repositories encapsulam queries e operações com o banco de dados.

Responsabilidades:

  • Buscar dados (SELECT)
  • Criar dados (INSERT)
  • Atualizar dados (UPDATE)
  • Deletar dados (DELETE - soft delete)

Services

Services contêm a lógica de negócio complexa.

Padrão: App\Services\[Modulo]\[Acao]\[NomeService]Service

Responsabilidades:

  • Validações de negócio
  • Orquestração de operações
  • Lançamento de exceções customizadas
  • Cálculos complexos

Enums

Enums definem valores fixos e permitidos.

Disponíveis:

  • ProdutosStatusEnum - Em Estoque, Baixo Estoque, Fora de Estoque
  • VendasStatusEnum - Em Andamento, Finalizada, Cancelada
  • VendasPagamentoEnum - Dinheiro, Cartão, Cheque, PIX
  • TipoMovimentacoesEnum - Entrada, Saída, Ajuste, Devolução

🚀 Comandos Úteis do Symfony

# Limpar cache
php bin/console cache:clear

# Criar nova entidade
php bin/console make:entity

# Criar nova migration
php bin/console make:migration

# Executar migrations
php bin/console doctrine:migrations:migrate

# Criar novo controller
php bin/console make:controller

# Gerar CRUD completo
php bin/console make:crud Produto

# Listar todas as rotas
php bin/console debug:router

# Criar novo serviço
php bin/console make:service

🔐 Segurança

Autenticação

  • Sistema de Login: Email + Senha
  • Hash: PASSWORD_DEFAULT (bcrypt)
  • Sessões: Gerenciadas por Symfony

Autorização

  • Roles: ROLE_USER, ROLE_ADMIN
  • Permissões: Baseadas em roles
  • Proteção de Rotas: Middleware de autenticação
  • Validação de Propriedade: Usuários só acessam seus dados

Boas Práticas

  • ✅ Nunca armazene senhas em texto plano
  • ✅ Sempre valide entrada do usuário
  • ✅ Use CSRF tokens em formulários
  • ✅ Escape output no Twig
  • ✅ Use prepared statements (Doctrine)

📦 Dependências Principais

Produção

symfony/framework-bundle: 7.3
symfony/security-bundle: 7.3
doctrine/orm: ^3.5
doctrine/doctrine-bundle: ^2.18
symfony/validator: 7.3
symfony/twig-bundle: 7.3
twig/twig: ^3.0

Desenvolvimento

phpunit/phpunit: ^12.4
symfony/maker-bundle: ^1.0
symfony/web-profiler-bundle: 7.3

🐛 Troubleshooting

Erro de Conexão com Banco de Dados

# Verificar se containers Docker estão rodando
docker-compose ps

# Reiniciar containers
docker-compose restart

# Ver logs do MySQL
docker-compose logs mysql

Erro ao Executar Migrations

# Resetar banco (cuidado!)
php bin/console doctrine:database:drop --force
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate

Cache Corrompido

# Limpar cache completamente
rm -rf var/cache/*
php bin/console cache:clear --no-warmup

📄 Licença

Este projeto está licenciado sob a MIT License.


✨ Agradecimentos

Agradecemos a todos os contribuidores e à comunidade por apoiar este projeto!

Autores

👨‍💻 Paulo Dias 👩‍💻 Maria Eliza 👨‍💻 Iago


⭐ Se este projeto foi útil, considere dar uma estrela!

Desenvolvido com ❤️ pelos alunos da MSCODE

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages