Skip to main content

Package structure and dependencies

Core and shared (framework-agnostic)

PackageDescriptionDepends on
@c-a-f/corePrimitives: UseCase, Ploc, Pulse, ApiRequest, RouteManager, interfacesNothing
@c-a-f/validationValidation interfaces and Zod/Yup adapters@c-a-f/core
@c-a-f/workflowWorkflow and state machine on top of Ploc@c-a-f/core
@c-a-f/permissionPermission interfaces and adapters (RBAC, CASL)@c-a-f/core
@c-a-f/i18ni18n interfaces and adapters@c-a-f/core
@c-a-f/devtoolsDevTools utilities for infrastructure to plug into

Infrastructure (per-framework)

PackageDescriptionDepends on
@c-a-f/infrastructure-reactusePloc, useUseCase, CAFProvider, useRouteManager, useRouteRepository, CAFErrorBoundary, DevTools@c-a-f/core, react, react-router-dom (peer)
@c-a-f/infrastructure-vueVue composables and components@c-a-f/core, vue, vue-router (peer)
@c-a-f/infrastructure-angularRouteHandler, injectRouteManager, injectRouteRepository, Ploc/UseCase providers@c-a-f/core, @angular/core, @angular/router (peer)

Tooling

PackageDescription
@c-a-f/testingcreateMockPloc, createMockUseCase, renderWithCAF, provideTestingCAF, etc.
@c-a-f/clicaf-init, generate commands

Examples (not published)

  • @c-a-f/example-react, @c-a-f/example-vue, @c-a-f/example-angular — Framework examples with their own caf/ folder.
  • example-vue-graphql, example-angular-websocket — GraphQL and WebSocket examples.

Dependency rule: Core has no framework dependency. Infrastructure depends only on core (and optional shared packages). Examples depend on core + one or more infrastructure packages.

For the full dependency graph and locations, see PACKAGES.md in the repository.