Skip to main content

Packages

Shared workspace code lives in packages. Packages are wired through pnpm-workspace.yaml and run on Node ^24.0.0.

Active Packages

PackageRoleConsumers
@repo/shared-dataRuntime constants and path helpers shared by Strapi and UIapps/ui, apps/strapi
@repo/loggingServer-side structured logging (pino + OpenTelemetry)apps/ui, apps/strapi
@repo/design-systemTailwind theme, compiled CSS, editor style exportsapps/ui, apps/strapi
@repo/strapi-typesStrapi schema types and typed query helpersapps/ui
@repo/eslint-configShared flat ESLint configroot ESLint config
@repo/typescript-configShared tsconfig presetsapps and packages
@repo/semantic-release-configShared semantic-release configroot release pipeline

Empty placeholders: packages/prettier-config/ and packages/strapi-plugin-tiptap-editor/.

Monorepo Plumbing

pnpm-workspace.yaml

  • Globs: packages/*, apps/*, qa/**.
  • minimumReleaseAge: 5760 makes pnpm reject dependency versions younger than four days.
  • allowBuilds whitelists native build scripts such as sharp, esbuild, and @parcel/watcher.
  • overrides pins shared dependency versions where needed.

turbo.json

Turbo wires package builds into app workflows. Notable examples:

TaskNotes
devDepends on @repo/shared-data#build and @repo/design-system#build; persistent and uncached.
buildDepends on upstream package builds and caches app/package outputs.
sync-typesUncached, because it mirrors generated Strapi type files.

globalEnv lists environment variables that invalidate Turbo cache, including Strapi, auth, Sentry, app URL, and seed-related values.

Git Hooks

lefthook.yml defines:

  • pre-commit: branch name validation and staged-file linting.
  • commit-msg: commitlint validation for Conventional Commits.