Skip to content

brunotsantos1997/pdv-react

Repository files navigation

PDV React - Sistema de Ponto de Venda

Um sistema moderno de ponto de venda (PDV) desenvolvido com React, TypeScript e Styled Components, projetado para gerenciar vendas, produtos e pagamentos em estabelecimentos comerciais.

🚀 Visão Geral

O PDV React é uma aplicação web responsiva que oferece uma interface intuitiva para operações de ponto de venda, incluindo gestão de produtos, controle de estoque, processamento de pagamentos e relatórios de vendas.

📸 Visualização do Sistema

🔐 Autenticação

Interface de login moderna e segura com controle de acesso.

Desktop Mobile
Login Desktop Login Mobile

📊 Dashboard Principal

Resumo financeiro em tempo real e PDV ágil.

Desktop Mobile
Dashboard Desktop Dashboard Mobile

📦 Gestão de Produtos (Admin)

Controle total do catálogo e níveis de estoque.

Desktop Mobile
Produtos Desktop Produtos Mobile

📑 Histórico de Vendas (Admin)

Relatórios detalhados de transações e métodos de pagamento.

Desktop Mobile
Vendas Desktop Vendas Mobile

ℹ️ Sobre o Sistema

Informações sobre a versão e equipe.

Desktop Mobile
Sobre Desktop Sobre Mobile

✨ Funcionalidades Implementadas

📊 Dashboard Principal

  • Resumo Financeiro: Visualização em tempo real de valores em dinheiro, cartão e total do caixa
  • Status do Caixa: Indicador visual de caixa aberto/fechado com data atual
  • Busca de Produtos: Consulta rápida de materiais com filtering em tempo real
  • Categorias em Carrossel: Navegação visual por categorias de produtos

🛍️ PDV e Vendas

  • Carrinho de Compras: Adicionar/remover produtos, calcular totais, atualizar quantidades
  • Processamento de Pagamentos: Múltiplos métodos (dinheiro, cartão, pix) com cálculo de troco
  • Finalização de Venda: Geração de recibos e histórico completo
  • Busca por Código: Localização rápida de produtos por código

� Gestão de Produtos

  • Catálogo Completo: Lista com imagens, nomes e preços formatados
  • Interface Administrativa: Controle total do catálogo de produtos
  • Busca e Filtragem: Busca instantânea por nome do produto

📑 Relatórios e Histórico

  • Histórico de Vendas: Relatórios detalhados com filtros por período
  • Estatísticas: Totais por método de pagamento e produtos mais vendidos
  • Exportação: Exportar dados para CSV e backup completo
  • Impressão: Geração de relatórios em PDF

🔐 Autenticação

  • Sistema de Login: Interface moderna e segura com controle de acesso
  • Proteção de Rotas: Apenas usuários autenticados podem acessar o sistema

🎨 Interface e UX

  • Design Responsivo: Adaptável a desktop e mobile
  • Componentes Reutilizáveis: Arquitetura modular e bem estruturada
  • Ícones Modernos: Interface visual consistente com Lucide React
  • Estilização Avançada: CSS-in-JS com Styled Components e TailwindCSS

🛠️ Stack Tecnológico

Frontend

  • React 18.2.0 - Biblioteca principal de UI
  • TypeScript 5.3.0 - Tipagem estática
  • React Router DOM 5.3.4 - Navegação client-side
  • Styled Components 6.1.8 - Estilização CSS-in-JS
  • TailwindCSS 4.2.2 - Framework de CSS utilitário
  • Lucide React 0.312.0 - Biblioteca de ícones
  • Pure React Carousel 1.30.1 - Componente de carrossel
  • Polished 4.2.2 - Utilitários para CSS
  • Styled Media Query 2.1.2 - Media queries simplificadas

Backend & API

  • Axios 1.6.7 - Cliente HTTP
  • JSON Server - API REST fake para desenvolvimento
  • Porta da API: 3333

Ferramentas de Desenvolvimento

  • Vite 5.1.0 - Build tool e dev server
  • Vitest 1.0.0 - Framework de testes
  • Playwright 1.59.1 - Testes E2E
  • ESLint 8.57.0 - Linting
  • TypeScript ESLint - Linting para TypeScript
  • PostCSS 8.5.8 - Processamento de CSS
  • Autoprefixer 10.4.27 - Prefixos CSS automáticos

📁 Estrutura do Projeto

src/
├── assets/
│   └── images/           # Imagens estáticas (ícones de categorias)
├── components/
│   ├── ErrorBoundary/   # Tratamento de erros
│   ├── Layout/          # Layout principal da aplicação
│   ├── MenuBar/         # Barra de menu superior
│   ├── ProductList/     # Lista de produtos
│   ├── Profile/         # Componente de perfil
│   └── Sidebar/         # Menu lateral
├── pages/
│   ├── About/           # Página sobre
│   ├── Dashboard/       # Dashboard principal
│   └── Product/         # Página de produtos
├── routes/
│   └── index.tsx        # Configuração de rotas
├── services/
│   ├── api.ts           # Configuração do Axios
│   ├── CacheService.ts  # Serviço de cache
│   └── ProductService.ts # Serviço de produtos
├── styles/
│   ├── carrousel.css    # Estilos do carrossel
│   └── global.ts        # Estilos globais
├── utils/
│   └── formatPrice.ts   # Utilitário de formatação de preços
├── viewmodels/
│   ├── BaseViewModel.ts # ViewModel base
│   ├── CartViewModel.ts # ViewModel do carrinho
│   ├── DashboardViewModel.ts # ViewModel do dashboard
│   ├── MenuBarViewModel.ts # ViewModel do menu
│   └── SidebarViewModel.ts # ViewModel da sidebar
├── hooks/
│   ├── index.ts         # Exportação de hooks
│   ├── useAsync.ts      # Hook para operações assíncronas
│   ├── useDebounce.ts   # Hook para debounce
│   └── useLocalStorage.ts # Hook para localStorage
└── tests/
    └── DashboardViewModel.test.ts # Testes do ViewModel

🗄️ Modelo de Dados

Produtos

interface Product {
  id: number;
  title: string;
  price: number;
  priceFormatted?: string;
  image: string;
}

Estoque

interface Stock {
  id: number;
  amount: number;
}

Estado do Dashboard

interface DashboardState {
  products: Product[];
  isLoading: boolean;
  error: string | null;
  searchTerm: string;
  cashAmount: number;
  cardAmount: number;
  totalAmount: number;
}

🚀 Instalação e Configuração

Pré-requisitos

  • Node.js (versão 16 ou superior)
  • npm ou yarn

Passos para Instalação

  1. Clone o repositório
git clone <repository-url>
cd pdv-react
  1. Instale as dependências
npm install
# ou
yarn install
  1. Inicie a API de desenvolvimento
npm run fakeapi

A API estará disponível em http://localhost:3333

  1. Inicie a aplicação
npm run dev

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

📋 Scripts Disponíveis

  • npm run dev - Inicia o servidor de desenvolvimento
  • npm run build - Build para produção
  • npm run preview - Preview do build de produção
  • npm run test - Executa os testes unitários
  • npm run fakeapi - Inicia a API fake com JSON Server

🧪 Testes

O projeto utiliza Vitest como framework de testes unitários e Playwright para testes E2E. Os testes estão localizados na pasta src/tests/.

Executando Testes

# Testes unitários
npm run test

# Testes E2E (requiere setup do Playwright)
npx playwright test

�️ Roadmap

🚀 Versão 1.0 (Atual)

  • Dashboard com resumo financeiro
  • Listagem de produtos
  • Busca e filtragem de produtos
  • Carrossel de categorias
  • Interface responsiva
  • API fake para desenvolvimento
  • Arquitetura com ViewModels
  • Componentes reutilizáveis (Layout, MenuBar, Sidebar, ErrorBoundary)
  • Sistema de rotas com React Router
  • Testes automatizados com Vitest
  • Página de gestão de produtos
  • Página sobre (About)

🎯 Versão 1.1 (Próximo Release)

  • Carrinho de Compras
    • Adicionar/remover produtos do carrinho
    • Calcular totais
    • Visualização do carrinho
    • Atualizar quantidades no carrinho
    • Limpar carrinho
    • Sidebar com resumo da venda
    • Busca por código de produto
  • Gestão de Estoque
    • Controle automático de estoque
    • Alertas de baixo estoque
    • Atualização de quantidade

💳 Versão 1.2 (Pagamentos)

  • Interface de Pagamentos
    • Botão de finalização de venda
    • Botão de cancelamento de venda
    • Cálculo automático de totais
  • Processamento de Pagamentos
    • Simulação de pagamentos
    • Múltiplos métodos (dinheiro, cartão, pix)
    • Calculadora de troco
  • Finalização de Venda
    • Geração de recibos
    • Histórico de vendas
    • Fechamento de caixa

📊 Versão 1.3 (Relatórios)

  • Relatórios de Vendas
    • Vendas por período
    • Produtos mais vendidos
    • Relatório financeiro
  • Exportação de Dados
    • Exportar para CSV
    • Backup de dados
    • Exportar para PDF (simulado via impressão)

🔐 Versão 1.4 (Autenticação)

  • Sistema de Usuários
    • Login/logout
    • Perfis de usuário
    • Controle de permissões
  • Segurança
    • JWT tokens (simulação)
    • Proteção de rotas
  • Gestão de Usuários
    • CRUD completo de usuários
    • Permissões granulares por funcionalidade
    • Interface administrativa para gestão

🌐 Versão 2.0 (Expansão)

  • Multi-caixa
    • Múltiplos terminais
    • Sincronização em tempo real
  • Integrações
    • API externa de produtos
    • Integração com sistemas de pagamento
    • Impressora fiscal (simulada)

📱 Versão 2.1 (Mobile)

  • Aplicativo Mobile
    • Versão para mobile
    • Modo offline
    • Sincronização automática

Variáveis de Ambiente

A aplicação está configurada para usar a API local em http://localhost:3333.

� Licença

Este projeto é de uso privado e proprietário. Todos os direitos reservados.


PDV React Sistema privado de ponto de venda desenvolvido para uso comercial.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages