Avançado

Arquitetura

Como o daemon, os clientes, a biblioteca e a rede se integram.

O WingDrive segue uma arquitetura cliente-daemon. Um único processo wing-daemon gerencia todo o estado. Cada cliente é uma interface leve que se comunica com ele por JSON-RPC 2.0.

Desktop app (Tauri + React) ┐
wing CLI                    ├─ JSON-RPC ─▶ wing-daemon ─▶ actions / queries ─▶ services ─▶ SQLite
wing-server + web UI        ┘

O aplicativo móvel é a exceção: ele incorpora o mesmo núcleo Rust como biblioteca, em vez de se comunicar com um daemon.

A pilha

Camada Tecnologia
Núcleo Rust, Tokio
Banco de dados SQLite com SeaORM
Rede Iroh sobre QUIC
Identidade de conteúdo BLAKE3
Armazenamento na nuvem OpenDAL
Desktop Tauri 2 e React 19

Dentro do núcleo

O núcleo separa substantivos de verbos:

  • Domínio: arquivos, dispositivos, volumes, localizações, etiquetas e endereçamento.
  • Operações: cada verbo disponível ao usuário é uma ação (escrita) ou uma consulta (leitura), registrada em tempo de compilação. A mesma operação atende ao aplicativo desktop, à CLI e à web.
  • Tarefas: operações longas persistem seu progresso e continuam após uma reinicialização.
  • Serviços: subsistemas de longa duração, como rede, sincronização, monitoramento do sistema de arquivos e monitoramento de volumes.

Indexação

Adicionar uma localização inicia uma tarefa de indexação que percorre a pasta, registra as entradas na biblioteca e, dependendo do modo, calcula a identidade de conteúdo e dados de mídia, como miniaturas. Um monitor mantém o índice atualizado conforme os arquivos mudam.

A identidade de conteúdo usa BLAKE3. Arquivos pequenos são processados integralmente; arquivos com mais de 100 KB são amostrados (58 KB no total), o que mantém a indexação na nuvem rápida e previsível.

Endereçamento

Cada arquivo tem um WingPath:

  • Físico: um dispositivo e um caminho nele.
  • Nuvem: um serviço, um bucket ou unidade e um caminho.
  • Conteúdo: um ID de conteúdo que aponta para qualquer cópia disponível.

É isso que permite copiar e mover da mesma forma entre um notebook, uma unidade externa e um bucket.

Privacidade desde a concepção

A indexação, as miniaturas e a pesquisa são executadas localmente. O tráfego entre dispositivos emparelhados é criptografado. As credenciais de nuvem são criptografadas em repouso no chaveiro do sistema operacional. Nenhum dado é enviado de volta ao projeto.

Saiba mais

O repositório contém a documentação técnica completa: docs/ no GitHub.