docs: README completo com Tauri, downloads, stack
Build Fechamento de Caixa / build (macos-14, app) (push) Has been cancelled
Build Fechamento de Caixa / build (ubuntu-22.04, deb) (push) Has been cancelled
Build Fechamento de Caixa / build (windows-2022, msi) (push) Has been cancelled

This commit is contained in:
root
2026-07-02 22:28:55 +00:00
parent c2c9a29247
commit 1dc278dbbd
+61 -5
View File
@@ -87,11 +87,13 @@ fechamento-caixa/
O mesmo código gera 3 binários diferentes conforme a variável de ambiente `DOBRADO_LOJA`: O mesmo código gera 3 binários diferentes conforme a variável de ambiente `DOBRADO_LOJA`:
| Binário | Loja | Como buildar | ## Downloads
|---------|------|-------------|
| `fc-uniao.exe` | **Travada: UNIÃO** | `DOBRADO_LOJA=Uniao cargo build --release --target x86_64-pc-windows-gnu` | | Binário | Loja | Download |
| `fc-alianca.exe` | **Travada: ALIANÇA** | `DOBRADO_LOJA=Alianca cargo build --release --target x86_64-pc-windows-gnu` | |---------|------|----------|
| `fc-ambos.exe` | **Livre (União / Aliança)** | `cargo build --release --target x86_64-pc-windows-gnu` (sem env) | | `fc-uniao.exe` | **Travada: UNIÃO** | [Baixar](https://git.ofrangao.com.br/filipe/fechamento-caixa/releases/download/v2.0.0-uniao/fc-uniao.exe) |
| `fc-alianca.exe` | **Travada: ALIANÇA** | [Baixar](https://git.ofrangao.com.br/filipe/fechamento-caixa/releases/download/v2.0.0-alianca/fc-alianca.exe) |
| `fc-ambos.exe` | **Seletor livre** | [Baixar](https://git.ofrangao.com.br/filipe/fechamento-caixa/releases/download/v2.0.0-ambos/fc-ambos.exe) |
Quando a loja é fixa, o seletor de loja no formulário é **escondido via JavaScript** e tentativas de mudar via API retornam erro. Quando a loja é fixa, o seletor de loja no formulário é **escondido via JavaScript** e tentativas de mudar via API retornam erro.
@@ -129,6 +131,60 @@ Quando a loja é fixa, o seletor de loja no formulário é **escondido via JavaS
--- ---
## Tauri — o runtime desktop
O app roda como **Tauri 2**, um runtime que embute um navegador WebView2 (Windows) dentro de um processo Rust.
### O que o Tauri fornece
| Recurso | Como é usado |
|---------|-------------|
| **Janela nativa** | A janela do app com barra de título, controls de redimensionar, ícone |
| **Sistema de arquivos** | Lê/escreve `config.json` e `fechamento.db` em `%LOCALAPPDATA%/FechamentoCaixa/` |
| **Invocação de comandos Rust** | Frontend JS chama `invoke('nome_comando', args)` → Rust executa e retorna |
| **HTTP client** | Plugin `supabase.rs` usa `reqwest` para falar com o Supabase |
| **Shell** | Abre diálogo de impressoras, executa `cmd /C copy` para impressão |
| **Diálogos nativos** | `tauri_plugin_dialog` para escolher arquivos, pastas, impressora |
### Comandos Tauri (Rust → JS)
O frontend **nunca acessa** Supabase, SQLite ou impressora diretamente. Tudo passa por `invoke`:
```javascript
// Salvar fechamento (SQLite + Supabase)
await invoke('salvar_fechamento', { estado });
// Sync com Supabase
await invoke('sb_salvar_fechamento', { estado });
// Detectar impressora
await invoke('detectar_impressora');
// Imprimir
await invoke('imprimir_recibo', { html: reciboHTML });
```
### Estrutura dos plugins Rust
```
src-tauri/src/plugins/
├── app.rs — Config da app (loja, operador default, sync)
├── storage.rs — SQLite local (fonte primária offline)
├── supabase.rs — Cliente HTTP para Supabase (service_role JWT)
├── printer.rs — Detecção EPSON TM-T20, fallback para window.print()
└── escpos.rs — Helpers ESCPOS (alinhamento, negrito, corte)
```
### Onde os dados ficam
| Dado | Local |
|------|-------|
| Config (SUPABASE keys, loja default) | `%LOCALAPPDATA%/FechamentoCaixa/config.json` |
| Banco SQLite (fechamentos) | `%LOCALAPPDATA%/FechamentoCaixa/fechamento.db` |
| Rascunho auto-save | `%LOCALAPPDATA%/FechamentoCaixa/fechamento_rascunho.db` |
---
## Autores & Contexto ## Autores & Contexto
- **Desenvolvedor:** Filipe.Tavares - **Desenvolvedor:** Filipe.Tavares