Skip to content

Developer Guide

Marcelo Trindade edited this page Aug 29, 2026 · 1 revision

Guia do desenvolvedor

O projeto é um aplicativo desktop local, síncrono e deliberadamente simples na infraestrutura.

Stack

  • Rust 2021;
  • Slint;
  • rusqlite com SQLite bundled;
  • serde/toml para configuração;
  • chrono;
  • rfd para seleção gráfica de arquivos;
  • webbrowser/urlencoding para consultas externas.

Camadas

ui/             interface Slint
src/app/        handlers/serviços de apresentação
src/domain/     entidades e validações
src/database/   SQLite, migrations, queries, ADIF, backup e health
src/main.rs     composition root

A UI não executa SQL e a camada de banco não depende de Slint.

Princípios

  • SQLite é a fonte de verdade;
  • migrations publicadas não são reescritas;
  • operações que exigem atomicidade permanecem transacionais;
  • campos de modo específicos ficam explícitos;
  • abstração só é adicionada quando remove duplicação real sem esconder contratos;
  • ADIF preserva unknown fields dentro do contrato;
  • UI v0.11 prefere widgets nativos antes de componentes customizados.

Começar a desenvolver

Veja Build e ambiente.

Entender o sistema

Leia:

  1. Arquitetura
  2. Arquitetura da UI
  3. Compatibilidade ADIF

Adicionar modo digital

Siga Adicionar modo digital.

Antes de enviar mudança

Execute os gates:

cargo fmt --check
cargo check --locked
cargo clippy --locked --all-targets --all-features -- -D warnings
cargo test --locked
cargo build --locked

Mudanças de release têm gates adicionais. Veja Processo de release.

Clone this wiki locally