Visão geral do framework
Mapa da superfície de @decocms/start — o que mora onde.
Esta página é o índice de @decocms/start . Cada seção tem link para uma referência mais profunda. Se não souber por onde começar, percorra esta página primeiro.
O que vem na caixa
@decocms/start é a camada de framework. Expõe:
- Um wrapper de worker entry (
createDecoWorkerEntry) que roda rotas de admin, cache de borda e bypass de assets antes do framework. - Uma bridge de CMS que resolve blocks em árvores React renderizadas.
- Implementação do protocolo do admin (
/live/_meta,/.decofile,/deco/render,/deco/invoke). - Um registro de sections/loaders com geração TS → JSON Schema.
- Um plugin Vite que cuida do fast-path do JSON
blocks.gene dicas de chunk. - Um SDK pequeno (cache, invoke, instrumented fetch, scripts, signals, cookies etc.).
- Scripts de geração de código (
generate-blocks,generate-schema,generate-invoke,migrate,tailwind-lint). - Três binários CLI (
deco-migrate,deco-post-cleanup,deco-htmx-analyze).
Árvore de código
deco-start/src/
├── admin/ # Handlers do protocolo do admin, composição de schema, shell de preview
├── apps/ # autoconfigApps + setupApps (wiring de apps no CMS)
├── cms/ # blocks.loader, registry, resolveDecoPage, sectionLoaders
├── daemon/ # Tunnel de dev local + auth + watcher (avançado)
├── hooks/ # DecoPageRenderer, LazySection, LiveControls, NavigationProgress
├── matchers/ # Matchers built-in + PostHog
├── middleware/ # decoState, observability, healthMetrics, hydrationContext
├── routes/ # cmsRouteConfig, cmsHomeRouteConfig, withSiteGlobals
├── sdk/ # Worker entry, cache, invoke, fetch, scripts, signals etc.
├── types/ # FnContext, App, Section, widgets
├── vite/ # decoVitePlugin (plugin Vite)
└── setup.ts # createSiteSetup (bootstrap em uma chamada)
Cada diretório tem uma página de referência abaixo.
Páginas de referência
| Página | Cobre |
|---|---|
| Worker entry | createDecoWorkerEntry , A/B, redirects, proxyHandler, segmentBuilder |
| Vite plugin | decoVitePlugin , pegadinhas de chunk, fast-path do blocks.gen |
| Setup | createSiteSetup , glob de sections, blocks, matchers, init de plataforma |
| Routes | cmsRouteConfig , cmsHomeRouteConfig , loadCmsPage , loadDeferredSection , withSiteGlobals |
| Hooks | DecoPageRenderer , LazySection , LiveControls , NavigationProgress , useDevice , useHydrated |
| Caching | Profiles de borda, cacheHeaders , cachedLoader , mergeCacheControl |
| Invoke | createInvoke , invoke , batch invoke, cliente gerado |
| Middleware & matchers | decoState , observability, hydrationContext, validateSection, builtins, PostHog |
| SDK utilities | Tudo o resto em sdk/* e os scripts de codegen |
Visão geral dos exports
@decocms/start expõe ~60 entry points. Os mais usados:
| Import | O que é |
|---|---|
@decocms/start | Barrel: re-exporta cms , admin , hooks , middleware , types |
@decocms/start/setup | createSiteSetup |
@decocms/start/cms | Carregamento de blocks, registro de section/loader, resolveDecoPage |
@decocms/start/admin | Handlers do protocolo do admin |
@decocms/start/hooks | DecoPageRenderer , LazySection etc. |
@decocms/start/routes | cmsRouteConfig , loadCmsPage etc. |
@decocms/start/middleware | Observability, decoState, hydrationContext |
@decocms/start/sdk | Cache, invoke, fetch, scripts, signals (barrel) |
@decocms/start/sdk/workerEntry | createDecoWorkerEntry |
@decocms/start/sdk/cachedLoader | createCachedLoader |
@decocms/start/vite | decoVitePlugin() |
@decocms/start/types | FnContext , Section , App |
@decocms/start/types/widgets | Tipos de widget: ImageWidget , RichText , Color etc. |
@decocms/start/matchers/builtins | MatchUserAgent , MatchDate etc. |
@decocms/start/matchers/posthog | Matcher PostHog |
A tabela completa está em Exports do package.
Subpath vs barrel. Várias utilities do SDK têm seu próprio subpath ( @decocms/start/sdk/cachedLoader , @decocms/start/sdk/encoding , @decocms/start/sdk/http etc.) que NÃO são re-exportadas do barrel @decocms/start/sdk . Use sempre o subpath. A tabela de referência indica quais são barrel-only vs subpath-only.
Arquitetura em três camadas (lembrete)
Site repo ← Components, sections, rotas, estilos, contextos
↑ depende de
@decocms/apps ← Commerce: VTEX, Shopify, Resend, types, SDK
↑ depende de
@decocms/start ← Framework: este pacote
↑ roda em
TanStack Start + React 19 + Cloudflare Workers
O que @decocms/start deliberadamente não entrega:
- Referências a Preact ou shims de compat.
- Mapas de section específicos do site.
- Chamadas a APIs de commerce (vivem em
@decocms/apps). - Componentes de UI (vivem no seu site).
Se você se pegar querendo um deles, repense — geralmente há solução em camada apropriada.
Quando você contribui
Ler a fonte é encorajado. Dois pontos de partida:
CLAUDE.mdna raiz do repo tem as decisões arquiteturais canônicas.MIGRATION_TOOLING_PLAN.mdmantém o histórico append-only de como a história de migração evoluiu.
Ambos vivem em @decocms/start .
Veja também
Found an error or want to improve this page?
Edit this page