From f186b71ca51e83837db60de13322394bb5e6d348 Mon Sep 17 00:00:00 2001 From: murilo ijanc Date: Tue, 24 Mar 2026 21:41:06 -0300 Subject: Initial commit Import existing tesseras.net website content. --- pt-br/news/phase3-api-and-apps/index.html | 167 ++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 pt-br/news/phase3-api-and-apps/index.html (limited to 'pt-br/news/phase3-api-and-apps/index.html') diff --git a/pt-br/news/phase3-api-and-apps/index.html b/pt-br/news/phase3-api-and-apps/index.html new file mode 100644 index 0000000..57ea05e --- /dev/null +++ b/pt-br/news/phase3-api-and-apps/index.html @@ -0,0 +1,167 @@ + + + + + + Fase 3: Memórias nas Suas Mãos — Tesseras + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ + + Tesseras + +

+ + +
+ +
+ +
+

Fase 3: Memórias nas Suas Mãos

+

2026-02-14

+

As pessoas agora podem segurar suas memórias nas próprias mãos. A Fase 3 entrega +o que as fases anteriores construíram: um app mobile onde alguém baixa o +Tesseras, cria uma identidade, tira uma foto, e aquela memória entra na rede de +preservação. Sem contas na nuvem, sem assinaturas, sem nenhuma empresa entre +você e suas memórias.

+

O que foi construído

+

tesseras-embedded — Um nó P2P completo que roda dentro de um app mobile. A +struct EmbeddedNode é dona de um runtime Tokio, banco SQLite, transporte QUIC, +engine Kademlia DHT, serviço de replicação e serviço de tessera — a mesma stack +do daemon desktop, compilada como biblioteca compartilhada. Um padrão singleton +global (Mutex<Option<EmbeddedNode>>) garante um único nó por ciclo de vida do +app. Ao iniciar, ele abre o banco de dados, executa migrações, carrega ou gera +uma identidade Ed25519 com proof-of-work para o node ID, faz bind QUIC numa +porta efêmera, conecta DHT e replicação, e inicia o loop de reparo. Ao parar, +envia um sinal de shutdown e drena graciosamente.

+

Onze funções FFI são expostas para Dart via flutter_rust_bridge: ciclo de vida +(node_start, node_stop, node_is_running), identidade (create_identity, +get_identity), memórias (create_memory, get_timeline, get_memory) e +status da rede (get_network_stats, get_replication_status). Todos os tipos +que cruzam a fronteira FFI são structs planas com apenas String, +Option<String>, Vec<String> e primitivos — sem trait objects, sem generics, +sem lifetimes.

+

Quatro módulos adaptadores fazem a ponte entre as ports do core e as +implementações concretas: Blake3HasherAdapter, +Ed25519SignerAdapter/Ed25519VerifierAdapter para criptografia, +DhtPortAdapter para operações DHT, e ReplicationHandlerAdapter para RPCs de +fragmentos e atestação recebidos.

+

A feature flag bundled-sqlite compila o SQLite a partir do código-fonte, +necessário para Android e iOS onde a biblioteca do sistema pode não estar +disponível. A configuração do Cargokit passa essa flag automaticamente em builds +de debug e release.

+

App Flutter — Uma aplicação Material Design 3 com gerenciamento de estado +Riverpod, direcionada para Android, iOS, Linux, macOS e Windows a partir de uma +única base de código.

+

O fluxo de onboarding são três telas: uma tela de boas-vindas explicando o +projeto em uma frase ("Preserve suas memórias através dos milênios. Sem nuvem. +Sem empresa."), uma tela de criação de identidade que dispara a geração do par +de chaves Ed25519 em Rust, e uma tela de confirmação mostrando o nome do usuário +e a identidade criptográfica.

+

A tela de timeline exibe memórias em ordem cronológica reversa com previews de +imagem, texto de contexto e chips para tipo de memória e visibilidade. +Pull-to-refresh recarrega a partir do nó Rust. Um floating action button abre a +tela de criação de memória, que suporta seleção de foto da galeria ou câmera +via image_picker, texto de contexto opcional, dropdowns de tipo de memória e +visibilidade, e tags separadas por vírgula. Criar uma memória chama o FFI Rust +sincronamente, depois retorna à timeline.

+

A tela de rede mostra dois cards: status do nó (contagem de peers, tamanho da +DHT, estado de bootstrap, uptime) e saúde da replicação (total de fragmentos, +fragmentos saudáveis, fragmentos em reparo, fator de replicação). A tela de +configurações exibe a identidade do usuário — nome, node ID truncado, chave +pública truncada e data de criação.

+

Três providers Riverpod gerenciam o estado: nodeProvider inicia o nó embarcado +ao abrir o app usando o diretório de documentos e para ao fazer dispose; +identityProvider carrega o perfil existente ou cria um novo; +timelineProvider busca a lista de memórias com paginação.

+

Testes — 9 testes unitários Rust em tesseras-embedded cobrindo ciclo de vida +do nó (start/stop sem panic), persistência de identidade entre reinícios, ciclos +de reinício sem corrupção do SQLite, streaming de eventos de rede, recuperação +de estatísticas, criação de memória e recuperação da timeline, e busca de +memória individual por hash. 2 testes Flutter: um teste de integração +verificando inicialização do Rust e startup do app, e um smoke test de widget.

+

Decisões de arquitetura

+ +

O que vem a seguir

+ +

A infraestrutura está completa. A rede existe, a replicação funciona, e agora +qualquer pessoa com um celular pode participar. O que resta é fortalecer o que +temos e abrir para o mundo.

+ +
+ +
+ + + + -- cgit v1.2.3