AppCore Runtime

dnetto, rustruntimelocal-firstsecuritysync
Back

AppCore não é uma aplicação. É a camada de runtime reutilizável que construí para que aplicações local-first não precisem reinventar ciclo de vida, manifests, storage, segurança, sync, supervisão, peer RPC e updates.

20crates documentados na auditoria RC 1.0
3artefatos exigidos: application manifest, deployment manifest e business code
1.0.1-rc.8linha release-candidate indicada no README

O problema

Aplicações local-first acumulam os mesmos problemas: descrever a aplicação sem fixar detalhes de deployment, rodar commands e queries de forma consistente, armazenar dados locais em formatos recuperáveis, sincronizar sem fingir ser um database multi-master e manter fronteiras de segurança visíveis.

AppCore existe porque essa infraestrutura não deveria ser reescrita dentro de cada aplicação de negócio.

O contrato

O contrato 1.0 reduz uma aplicação a três artefatos:

  1. application.toml com identidade e requisitos portáveis.
  2. deployment.toml com providers, paths, rede e referências de secrets.
  3. Código de negócio implementando appcore_bin::application::Application.

O runtime assume as decisões de infraestrutura atrás desses artefatos. Mudar de um notebook offline para um cluster muda o deployment manifest, não a regra de negócio.

Arquitetura

External application
  -> appcore-bin facade
  -> API, core and managed runtime services
  -> provider implementations
  -> contracts and foundational types

A regra importante é controle de vocabulário. Crates do runtime não devem conter conceitos de produto, empresa, cliente ou domínio. Regras de negócio e integrações ficam fora do AppCore.

Módulos

ÁreaCrates
Fundaçãoappcore-contracts, appcore-types, appcore-transport, appcore-dnt
Ciclo de vidaappcore-supervisor, appcore-core, appcore-bin
APIappcore-api
Segurança e storageappcore-security, appcore-storage
Distribuiçãoappcore-distributed-contracts, appcore-control-plane, appcore-capabilities, appcore-peer-rpc, appcore-gateway
Operaçõesappcore-ops, appcore-scheduler, appcore-sync, appcore-update
Providersappcore-provider, appcore-provider-vercel-neon

make architecture.check valida dependências, vocabulário, tamanho de módulos e mapa de módulos. A arquitetura vira gate, não só diagrama.

Decisões e trade-offs

AppCore não entrega RAFT, dados multi-master, OAuth, vault de produção embutido, database engine genérico, TLS inbound ou workflows de negócio. São fronteiras intencionais.

A linha RC aceita apenas manifests V1, protocolo 1, rotas HTTP /v1/* e formatos persistentes V1. Inputs removidos são rejeitados em vez de convertidos silenciosamente.

Segurança

O runtime protege contratos de infraestrutura. O deployment protege host, rede, TLS inbound, conta do sistema operacional e backend de secrets. A aplicação protege dados e autorização de negócio.

Na prática:

O que foi difícil

O difícil não foi criar crates chamados sync ou security. Foi impedir que o runtime virasse framework de negócio. Cada capacidade útil tenta puxar vocabulário de domínio para a fundação. A resposta do AppCore é layering, manifests, providers e non-goals explícitos.

O aprendizado

AppCore mostra meu estilo de engenharia: congelar contratos antes de adicionar conveniência, documentar o que o sistema recusa fazer, transformar exemplos em fixtures executáveis e tratar release como evidência.

Daniel Netto Logo2026 © Daniel Netto. Todos os direitos reservados.
Hospedado por Verceldnetto.dev