Arquitetura
Como Android, Desktop, Relay e as libs compartilhadas se conectam, e como a sincronização entre dispositivos funciona.
O Acerola é um monorepo: cada plataforma vive isolada, com sua própria stack, e nenhuma depende diretamente de outra. Todas consomem as bibliotecas compartilhadas em lib/ via dependência de caminho local — uma mudança em lib/p2p/ já reflete direto nos consumidores.
Como as peças se conectam
acerola/android/ e acerola/desktop/ nunca se enxergam diretamente — cada um implementa sua própria FFI/binding para consumir lib/p2p/. Toda comunicação entre dispositivos é P2P direta (LAN via mDNS) ou via relay quando fora da mesma rede.
Como a sincronização funciona
A biblioteca, o histórico e o progresso de leitura sincronizam diretamente entre os dispositivos do usuário — sem conta e sem banco de dados central. A forma como a conexão acontece depende de onde os dispositivos estão e do que foi configurado:
Os quatro formatos de conexão:
Nos quatro casos o handshake e o transporte são os mesmos (QUIC + TLS 1.3 via iroh) — só muda quem intermedeia a conexão quando os dispositivos não estão na mesma rede. Detalhes sobre quais metadados cada modo expõe estão na Política de Privacidade.