From 01c17c68277ff88fab812920732d9bbe9e6bb571 Mon Sep 17 00:00:00 2001 From: murilo ijanc Date: Tue, 24 Mar 2026 21:45:05 -0300 Subject: Simplify website to single-page Remove old Zola-generated content, keep only the essential landing page with about, contact, and license sections. --- pt-br/news/phase3-api-and-apps/index.html | 167 ------------------------------ 1 file changed, 167 deletions(-) delete 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 deleted file mode 100644 index 57ea05e..0000000 --- a/pt-br/news/phase3-api-and-apps/index.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - 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