Skip to content

brunnodev50/sistema-gestao

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema de Gestão — Desktop + Mobile

Sistema completo de gestão comercial com interface desktop (Java/Swing) e aplicativo mobile (React Native/Expo), comunicando-se via API REST.


Funcionalidades

Módulo Desktop Mobile
Login
Clientes (CRUD)
Produtos (CRUD + imagem)
Fornecedores (CRUD)
Funcionários (CRUD)
PDV — Ponto de Venda
Histórico de Vendas
Cancelamento de Venda
Movimentação de Estoque
Relatório de Estoque
Relatório Financeiro
Reset de Senha (OTP e-mail)

Tecnologias

Backend / Desktop

  • Java 17+ (Swing para UI desktop, com.sun.net.httpserver para API REST)
  • SQLite via sqlite-jdbc (banco de dados local, sem servidor)
  • Servidor HTTP na porta 8080

Mobile

  • React Native 0.74 + Expo SDK 51
  • React Navigation 6 (Stack Navigator)
  • Expo Image Picker / Image Manipulator

Pré-requisitos

Para o Desktop (Java)

  • JDK 17 ou superiorDownload
    • Verifique: java -version e javac -version
  • O arquivo lib/sqlite-jdbc.jar já está incluído no repositório

Para o Mobile (React Native)


Como rodar

1. Clonar o repositório

git clone https://github.com/brunnodev50/sistema-gestao.git
cd sistema-gestao

2. Rodar o Desktop (Java)

No Windows, execute o arquivo compilar_e_executar.bat com duplo clique ou via terminal:

compilar_e_executar.bat

Isso vai:

  1. Compilar todos os arquivos .java
  2. Iniciar o sistema desktop (janela Swing)
  3. Subir a API REST na porta 8080 automaticamente

Login padrão criado na primeira execução:

Usuário: admin
Senha:   admin

⚠️ Troque a senha do admin após o primeiro acesso.


3. Rodar o App Mobile

Com o sistema desktop em execução (API na porta 8080):

cd mobile
npm install
npx expo start

Abra o Expo Go no celular e escaneie o QR Code exibido no terminal.

O endereço da API está configurado em mobile/src/config/api.js.
Para emulador Android Studio use 10.0.2.2:8080.
Para celular físico, substitua pelo IP da sua máquina na rede local (ex: 192.168.1.100:8080).


Estrutura do projeto

sistema-gestao/
├── compilar_e_executar.bat       # Script de compilação e execução (Windows)
├── lib/
│   └── sqlite-jdbc.jar           # Driver SQLite
├── src/
│   └── main/java/com/sistema/
│       ├── Main.java
│       ├── SessaoAtual.java
│       ├── api/                  # Handlers da API REST
│       │   ├── ApiServer.java
│       │   ├── ApiUtils.java
│       │   ├── AuthHandler.java
│       │   ├── ClienteHandler.java
│       │   ├── ProdutoHandler.java
│       │   ├── FornecedorHandler.java
│       │   ├── FuncionarioHandler.java
│       │   ├── VendaHandler.java
│       │   ├── MovimentacaoHandler.java
│       │   ├── RelatorioHandler.java
│       │   └── ResetSenhaHandler.java
│       ├── db/
│       │   └── Banco.java        # Conexão e criação das tabelas SQLite
│       ├── model/                # Entidades (Cliente, Produto, Venda, etc.)
│       ├── service/              # Regras de negócio
│       └── ui/                   # Interface Swing (desktop)
└── mobile/
    ├── App.js                    # Navegação principal
    ├── app.json
    ├── package.json
    └── src/
        ├── config/
        │   ├── api.js            # Configuração da URL da API
        │   └── colors.js         # Paleta de cores
        ├── screens/              # Telas do app
        │   ├── LoginScreen.js
        │   ├── HomeScreen.js
        │   ├── ResetSenhaScreen.js
        │   ├── ClientesScreen.js
        │   ├── NovoClienteScreen.js
        │   ├── ProdutosScreen.js
        │   ├── NovoProdutoScreen.js
        │   ├── FornecedoresScreen.js
        │   ├── NovoFornecedorScreen.js
        │   ├── FuncionariosScreen.js
        │   ├── NovoFuncionarioScreen.js
        │   ├── PdvScreen.js
        │   ├── VendasScreen.js
        │   ├── VendaDetalhesScreen.js
        │   ├── MovimentacaoScreen.js
        │   ├── RelatorioEstoqueScreen.js
        │   └── RelatorioFinanceiroScreen.js
        └── utils/
            └── mascaras.js       # Máscaras: CPF, CNPJ, celular, data, CEP

API REST — Endpoints

Todos os endpoints usam Content-Type: application/json e rodam em http://localhost:8080.

Método Rota Descrição
POST /api/login Autenticação
GET /api/clientes Listar clientes
POST /api/clientes Criar cliente
PUT /api/clientes/{id} Editar cliente
GET /api/produtos Listar produtos
POST /api/produtos Criar produto
PUT /api/produtos/{id} Editar produto
GET /api/fornecedores Listar fornecedores
POST /api/fornecedores Criar fornecedor
PUT /api/fornecedores/{id} Editar fornecedor
GET /api/funcionarios Listar funcionários
POST /api/funcionarios Criar funcionário
PUT /api/funcionarios/{id} Editar funcionário
GET /api/vendas Listar vendas
GET /api/vendas/{id} Detalhes da venda (com itens)
POST /api/vendas Finalizar venda
POST /api/vendas/{id}/cancelar Cancelar venda
GET /api/movimentacoes Listar movimentações
POST /api/movimentacoes Registrar movimentação
GET /api/relatorios/estoque Relatório de estoque
GET /api/relatorios/financeiro Relatório financeiro
POST /api/reset/solicitar Solicitar código OTP
POST /api/reset/verificar Verificar código OTP
POST /api/reset/confirmar Confirmar nova senha

Banco de Dados

O banco SQLite (sistema.db) é criado automaticamente na pasta raiz na primeira execução. Não é necessário instalar nenhum servidor de banco de dados.

Tabelas criadas automaticamente:

  • clientes
  • funcionarios
  • fornecedores
  • produtos
  • vendas
  • itens_venda
  • movimentacoes_estoque

Configuração de E-mail (opcional)

O reset de senha por e-mail requer configuração SMTP. No sistema desktop, acesse Configurações → E-mail e preencha:

Campo Exemplo (Gmail)
Host smtp.gmail.com
Porta 587
SSL Não (usa STARTTLS)
Usuário seu@gmail.com
Senha Senha de app do Google

Para Gmail, gere uma Senha de App em: Conta Google → Segurança → Verificação em duas etapas → Senhas de app.

As configurações são salvas em email.properties (arquivo ignorado pelo Git por segurança).


Dependências Mobile

Instaladas automaticamente com npm install:

"@react-navigation/native": "^6.1.9",
"@react-navigation/native-stack": "^6.9.17",
"@react-navigation/bottom-tabs": "^6.5.11",
"expo": "~51.0.0",
"expo-image-picker": "~15.0.7",
"expo-image-manipulator": "~12.0.5",
"expo-status-bar": "~1.12.1",
"react": "18.2.0",
"react-native": "0.74.5",
"react-native-safe-area-context": "4.10.5",
"react-native-screens": "3.31.1",
"@react-native-picker/picker": "2.7.5"

Observações

  • O banco de dados e as credenciais de e-mail (sistema.db e email.properties) estão no .gitignore e nunca são versionados.
  • O sistema foi desenvolvido para uso em rede local — o celular e o computador precisam estar na mesma rede Wi-Fi.
  • Para produção, recomenda-se migrar a API para um servidor com HTTPS.

About

java swing sqlite react-native expo pdv gestao-comercial rest-api android mobile

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors