Sistema corporativo de Faturação e Ponto de Venda (POS), construído como uma aplicação nativa para Desktop focada em Resiliência Offline e Alta Performance.
Este projeto utiliza uma arquitetura híbrida de múltiplos processos:
- Frontend (Renderer): Next.js (React), TailwindCSS, Zustand (State Management).
- Backend (Main Process): Electron, Node.js.
- Persistência Offline:
better-sqlite3rodando diretamente no processo nativo do Electron via ponte IPC. Garante que os dados (Faturas, Clientes, Produtos) nunca se percam mesmo em caso de falha de energia. - Motores de Documentos: Microserviço local em Python (FastAPI) dedicado à geração de PDFs complexos (A4, Talão, SAF-T) quando o sistema está offline.
Certifique-se de ter instalado em sua máquina:
- Node.js (v18 ou superior)
- pnpm (Gerenciador de pacotes rápido)
- Python (v3.10 ou superior) - Necessário para o microserviço de PDFs e compilação do SQLite nativo.
Para inicializar o ambiente de desenvolvimento pela primeira vez, siga estes passos:
-
Clone o repositório e acesse a pasta raiz:
cd mindgest-pos-desktop -
Instale as dependências. Como este projeto compila módulos nativos C++ (
better-sqlite3), é essencial usar o comando completo para reconstruir os binários para a arquitetura local:pnpm install npx electron-builder install-app-deps manual: node node_modules/.pnpm/electron@33.2.1/node_modules/electron/install.js
-
Inicie o servidor de desenvolvimento:
pnpm dev
A aplicação POS precisa deste serviço rodando localmente para emitir documentos quando a internet cair.
- Abra uma nova janela no terminal e acesse a pasta do microserviço:
cd python-microservice - Instale as dependências (cria o ambiente virtual automaticamente):
.\setup.bat - Inicie o servidor localmente (Porta 3002):
.\start.bat
A aplicação comunica com este serviço na porta 5001 para gerar recomendações, checar fraudes e comunicar com a IA do Chat.
-
Abra uma nova janela no terminal e acesse a pasta do microserviço:
cd mind-microservice -
Ative o ambiente virtual e instale as dependências:
# No Windows (PowerShell/CMD): .\venv\Scripts\activate # Em seguida, instale os pacotes: pip install -r requirements.txt
-
Inicie o servidor localmente (Porta 5001):
uvicorn main:app --port 5001 --reload
O Assistente MIND AI no frontend precisa que o Ollama esteja ativado na máquina como motor LLM.
- Baixe e instale do site oficial Ollama.
- Abra um terminal e inicie o modelo base escolhido (ex:
llama3):ollama run llama3
- A API do Ollama deve ficar a escutar automaticamente na porta (11434) onde o
mind-microservicese conectará em background.
Esta aplicação foi desenhada para nunca parar de facturar:
- Se a internet falhar (
navigator.onLinee ping a servidores reais), a UI muda silenciosamente para o modo Offline. - Faturas, Proformas e Recibos são gravados de forma assíncrona no SQLite nativo.
- A impressão de PDFs é interceptada e enviada para o Microserviço Python Local.
- Quando a internet volta, o Sync Handler envia a fila de documentos estocada no SQLite para o servidor da Nuvem na ordem correta, em background.
Para criar o instalador .exe (ou .dmg no Mac) para distribuir aos clientes:
- Certifique-se de estar na raiz do projeto (
mindgest-pos-desktop). - Rode o comando de compilação do Nextron:
pnpm build
- Atenção: O comando acima criará, por padrão, as pastas
dist/ourelease/contendo o instalador compilado do sistema, empacotando junto o banco de dados nativo do SQLite. O microserviço Python precisa ser distribuído paralelamente no ambiente de produção do cliente caso desejem geração local autônoma.
Este projeto está configurado com GitHub Actions para automatizar o processo de versionamento, build e publicação.
Windows:
scripts\release.bat patch
scripts\release.bat minor
scripts\release.bat majormacOS/Linux:
chmod +x scripts/release.sh
./scripts/release.sh patch
./scripts/release.sh minor
./scripts/release.sh major-
Atualizar versão em
package.json:npm version patch # 1.0.0 → 1.0.1 npm version minor # 1.0.0 → 1.1.0 npm version major # 1.0.0 → 2.0.0
-
Fazer push para
main:git push origin main
-
Criar e fazer push da tag:
git tag -a v1.0.1 -m "Release v1.0.1" git push origin v1.0.1
Quando uma tag v* é feita push:
- ✅ CI Checks: Lint, testes e build validação
- 🔨 Multi-Platform Build: Gera instaladores para Windows, macOS e Linux
- 📦 Publish Release: Publica assets (
.exe,.dmg,.AppImage, etc.) no GitHub - 🔄 Auto-Update: O arquivo
latest.ymlé publicado para permitir auto-updates
- Ir para: GitHub Actions
- Ver o workflow
Releaseem execução - Verificar assets publicados: Releases
Para mais detalhes sobre distribuição automática, link estável de download e auto-update seguro em balcão, consulte docs/releases.md.
- Windows (Instalador NSIS):
https://github.com/dev-mindware/mindgest-pos-desktop/releases/latest/download/Mindgest-POS-Setup.exe(Consulte docs/releases.md para detalhes sobre distribuição pública caso o repositório seja privado).
Uso exclusivo MindGest. Proibida distribuição não autorizada.