Package family

24 packages, one umbrella

Products may import @ottili/foundation-framework for the standard case, or reach for individual packages when they need a narrower surface. Every number on this page is read from the repository at build time — no hand-maintained marketing figures.

24

packages

22 ship at runtime, the rest are quality gates

41 954

source lines

across 264 files, tests excluded

24 397

test lines

95 suites

58%

test-to-source ratio

by line count, not by coverage

Dependency direction · SoT §8.9

Layers, not a graph of favours

Contracts depend on nothing. Core depends on contracts and stays free of React. UI depends on contracts and core. Feature runtimes layer on top. Circular dependencies fail the architecture test suite.

@ottili/foundation-contracts (no dependencies, no DOM) └── @ottili/foundation-core (framework-agnostic logic, no React) ├── @ottili/foundation-ui (tokens, themes, components) ├── @ottili/foundation-auth · -context · -runtime │ └── feature runtimes: navigation, shell, command, │ dashboard, notifications, settings, customization, │ capabilities, integrations, extensions ├── @ottili/foundation-platform (web · pwa · tauri · electron) └── @ottili/foundation-framework (umbrella re-export)

Inventory

Every package in the family

PackageLayerResponsibilitySourceTestsSoT
@ottili/foundation-contracts
v1.0.0
ContractsPure TypeScript contracts for the Ottili Foundation Framework. No React, no browser globals — see docs/OTTILI_FOUNDATION_FRAMEWORK_SOURCE_OF_TRUTH.md §8.1.2 215
21 files
175
1 suites
§8.1.
@ottili/product-contracts
v1.0.0
ContractsStable cross-product composition contracts: product manifests, accent helpers and validation317
4 files
105
1 suites
§9 §35
@ottili/foundation-core
v1.0.0
Core logicFramework-agnostic Foundation logic: manifest validation, contribution merge, feature-state resolution, cache keys, stable ids. No React6 177
23 files
5 565
23 suites
§8.2 §8.9
@ottili/foundation-ui
v1.0.0
Design systemFoundation design system: SoT §14 tokens, themes, density, and the §47 component inventory.10 555
85 files
2 710
8 suites
§14 §47
@ottili/foundation-shell
v1.0.0
ShellTopbar, sidebar, mobile nav, inspector and switchers1 276
8 files
717
3 suites
§8.4 §15
@ottili/foundation-auth
v1.0.0
RuntimeAuth redirect, PKCE code exchange, session state machine, refresh, expiry and account switch837
6 files
579
3 suites
§8.6 §12
@ottili/foundation-context
v1.0.0
RuntimeCompany/product/locale context, context revision, cache invalidation and cross-tab coordination671
6 files
578
1 suites
§8.7 §11 §12.5
@ottili/foundation-runtime
v1.0.0
RuntimeBootstrap loader, generated-client transport, contribution assembly and error boundaries507
3 files
565
1 suites
§8.5
@ottili/unified-api-client
v1.0.0
RuntimeCanonical public client surface for the Unified API: FoundationClient re-exported from @ottili/foundation-runtime, plus response validation, cursor pagination, SSE and streaming uploads.310
6 files
403
5 suites
§10.6
@ottili/foundation-capabilities
v1.0.0
Feature runtimesShared capability runtime: AI, Files, Flows, Approvals, Activity, Jobs6 912
30 files
4 336
15 suites
§8.8 §25
@ottili/foundation-extensions
v1.0.0
Feature runtimesExtension runtime: manifest validation, compatibility, lifecycle, activation, sandboxed host and the RPC bridge2 325
10 files
1 581
6 suites
§8.8 §27 §33 §34
@ottili/foundation-command
v1.0.0
Feature runtimesSearch providers, command palette, command parser and the Ottili Workbench2 307
8 files
1 639
5 suites
§8.8 §20 §21
@ottili/foundation-dashboard
v1.0.0
Feature runtimesDashboard grid engine, widget runtime and legacy importer1 835
9 files
1 209
4 suites
§8.8 §22
@ottili/foundation-customization
v1.0.0
Feature runtimesWhite-label inheritance, draft/publish lifecycle and validation mirroring1 632
7 files
1 291
5 suites
§8.8 §18 §48
@ottili/foundation-notifications
v1.0.0
Feature runtimesNotification inbox, realtime transport and preferences1 349
7 files
1 121
4 suites
§8.8 §23
@ottili/foundation-settings
v1.0.0
Feature runtimesFoundation settings runtime with React bindings Re-exports the core settings module and adds hooks and UI components.93
3 files
157
1 suites
§24
@ottili/foundation-integrations
v1.0.0
Feature runtimesPublic surface for the Foundation integration runtime43
3 files
57
1 suites
§26
@ottili/foundation-platform
v1.0.0
DistributionDistribution adapters: web, PWA, Tauri and Electron behind one contract1 183
7 files
735
1 suites
§8.8 §29
@ottili/foundation-observability
v1.0.0
Platform servicesTelemetry and observability React bindings66
3 files
64
1 suites
§32
@ottili/extension-sdk
v1.0.0
Extension SDKStable SDK for approved Ottili extensions Exposes only contracts and core helpers — no Foundation private internals.929
6 files
187
1 suites
§27 §34
@ottili/foundation-framework
v1.0.0
UmbrellaUmbrella package that re-exports the public Foundation Framework surface31
1 files
31
1 suites
§1
@ottili/foundation-testing
v1.0.0
Quality gatesTest factories and helpers for Foundation consumers153
4 files
65
1 suites
§41
@ottili/foundation-architecture
v1.0.0
Quality gatesPackage boundary and architecture tests for the Foundation Framework7
1 files
325
2 suites
§37 §39

Internal edges

Who depends on whom

Only @ottili/* dependencies are listed. Third-party dependencies are deliberately few — the framework does not want a transitive dependency to decide how an Ottili product renders.

@ottili/foundation-auth

@ottili/foundation-contracts@ottili/foundation-core

@ottili/foundation-capabilities

@ottili/foundation-context@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-runtime@ottili/foundation-ui

@ottili/foundation-command

@ottili/foundation-context@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-runtime@ottili/foundation-ui

@ottili/foundation-context

@ottili/foundation-contracts@ottili/foundation-core

@ottili/foundation-core

@ottili/foundation-contracts

@ottili/foundation-customization

@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-ui

@ottili/foundation-dashboard

@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-ui

@ottili/extension-sdk

@ottili/foundation-contracts@ottili/foundation-core

@ottili/foundation-extensions

@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-ui

@ottili/foundation-framework

@ottili/extension-sdk@ottili/foundation-auth@ottili/foundation-capabilities@ottili/foundation-command@ottili/foundation-context@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-customization@ottili/foundation-dashboard@ottili/foundation-extensions@ottili/foundation-integrations@ottili/foundation-navigation@ottili/foundation-notifications@ottili/foundation-observability@ottili/foundation-platform@ottili/foundation-runtime@ottili/foundation-settings@ottili/foundation-shell@ottili/foundation-testing@ottili/foundation-ui@ottili/product-contracts@ottili/unified-api-client

@ottili/foundation-integrations

@ottili/foundation-contracts@ottili/foundation-core

@ottili/foundation-navigation

@ottili/foundation-context@ottili/foundation-contracts@ottili/foundation-core

@ottili/foundation-notifications

@ottili/foundation-context@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-runtime@ottili/foundation-ui

@ottili/foundation-observability

@ottili/foundation-core

@ottili/foundation-platform

@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-ui

@ottili/product-contracts

@ottili/foundation-contracts@ottili/foundation-core

@ottili/foundation-runtime

@ottili/foundation-contracts@ottili/foundation-core

@ottili/foundation-settings

@ottili/foundation-contracts@ottili/foundation-core

@ottili/foundation-shell

@ottili/foundation-context@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-navigation@ottili/foundation-ui

@ottili/foundation-testing

@ottili/foundation-contracts

@ottili/foundation-ui

@ottili/foundation-contracts@ottili/foundation-core

@ottili/unified-api-client

@ottili/foundation-contracts@ottili/foundation-core@ottili/foundation-runtime