@revenexx/studio-integrations

Integration Studio (core: workflows, node editor, runs, schedules, credentials, secrets, audit) as a standalone, publishable Nuxt module.
6,181
Install
npm install @revenexx/studio-integrations
Latest Version:3.0.3
Vue:3
License:Custom
Last Updated:Oct 22, 2026
Links: npm

@revenexx/studio-integrations

The revenexx Integration Studio (core: Dashboard, Workflows + node editor, Runs, Schedules, Credentials, Secrets, Audit) as a distributable Nuxt module. Registers its /integrations/* pages, components and composables. Data/auth flow through the usePlatformAuth / usePlatformTenant seam (from @revenexx/studio-shared).

Install

Public on npm — no registry config or token needed:

pnpm add @revenexx/studio-integrations @revenexx/studio-shared @revenexx/studio

Use

// nuxt.config.ts
export default defineNuxtConfig({
  // studio-shared is a Nuxt MODULE since 0.2.0 (shell primitives by their
  // bare names + the platform provider) — do NOT `extends` it anymore.
  modules: ['@solar-icons/nuxt', '@revenexx/studio-shared', '@revenexx/studio-integrations'],
})

Point it at your Integrations backend via NUXT_PUBLIC_INTEGRATIONS_API and supply a token/tenant through the platform provider (override usePlatformAuth / usePlatformTenant, or the standalone defaults read NUXT_PUBLIC_DEV_TOKEN / NUXT_PUBLIC_DEV_TENANT).

Language

The studio speaks English and German. That covers both halves of a screen: the text node packages publish (names, descriptions, settings) and the studio's own chrome — headings, buttons, tabs, empty states, toasts. Both fall back to English. The studio has no switcher of its own, so hand the choice over one of two ways:

// nuxt.config.ts — a language that does not change
export default defineNuxtConfig({
  studioIntegrations: { locale: 'de' }, // or NUXT_PUBLIC_STUDIO_INTEGRATIONS_LOCALE
})
// a host plugin — a language the user switches while the app is running
const { setLocale } = useIntegrationsLocale()
watch(hostLocale, l => setLocale(l), { immediate: true })

A switch reaches surfaces that are already open; nothing is refetched. With neither wired, the studio is English. The module carries its own message catalogue (runtime/i18n/messages/*.json) — it never reads the host's, and needs no i18n library installed in the host. See docs/interface-language.md.

⚠️ Tailwind: you MUST scan this package

The module ships its runtime as source-ish .vue; Tailwind generates the classes from your build. Scan both this module and studio-shared, or component styling silently breaks:

@import "tailwindcss";
@import "@revenexx/studio/tokens";
@import "@revenexx/studio/fonts";
@source "../node_modules/@revenexx/studio-shared/dist/runtime";
@source "../node_modules/@revenexx/studio-integrations/dist/runtime";

Adjust the relative paths to reach node_modules from your CSS file.

Peers

@revenexx/studio ^0.2.3, @revenexx/studio-shared ^0.3.2 (module form), nuxt ^4, vue ^3.5, @vue-flow/* + @dagrejs/dagre (workflow editor), lucide-vue-next; register @solar-icons/nuxt in the host.

Develop

This repo is the source of truth for the module (it used to live in the cockpit monorepo under packages/studio-integrations).

pnpm install     # runs the module `prepare` (nuxt-module-build)
pnpm test        # vitest
pnpm lint        # eslint — `pnpm lint --fix` fixes what has a fix, layout above all
pnpm build       # dist/
pnpm changeset   # record what your change does to the version

Branch off main as feature/<desc>, fix/<desc> or chore/<desc> — GitHub refuses the first push of any other name, and main itself takes a reviewed pull request with CI green: docs/branch-protection.md. A separate, non-blocking Security Scan reports secrets and dependency advisories: docs/security-scanning.md.

Hosts to develop against:

  • Playground (playground/, in this repo): thin standalone Nuxt host that loads the module from src/ — see playground/README.md for the full runbook against a local integrations service (docker compose -f playground/docker-compose.dev.yml up).
  • Cockpit (../revenexx-cockpit): its dev server loads this module from the sibling checkout's src/module.ts automatically (dev-from-source, see the cockpit's nuxt.config.ts). Edit src/** here, the cockpit HMRs.
  • Integrations service (../integrations): the studio-ui dev host consumes a packed tarball — studio-ui/scripts/pack-vendor.sh builds and packs this repo into studio-ui/vendor/.

Release

Versioning is driven by Changesets, so version in package.json is never edited by hand. Every pull request records what it does to the version — CI fails without it:

pnpm changeset          # pick patch/minor/major, then write the note
pnpm changeset --empty  # …for a PR that intentionally releases nothing

Releasing is then merging a pull request. Pushes to main that carry changesets make CI open a "Version Packages" PR with the bump and CHANGELOG.md applied; merging that PR publishes to npm (Trusted Publishing over OIDC, no token) and notifies the cockpit.

Full policy, the SemVer contract, and why publishing is deliberately not changeset publish: docs/versioning.md.

Related Packages

@revenexx/studio-commerce

Commerce Studio (manifest-driven AppRenderer: list/detail/form/widgets over inst...

1,428
@revenexx/storage-nuxt-image

Nuxt Image provider for the revenexx Storage CDN. Build optimized, on-the-fly im...

663 0
@revenexx/consent-manager-nuxt

Server-rendered cookie consent for Nuxt without a third-party script: an SSR con...

520 0
@revenexx/tag-manager-nuxt

Consent-gated tag manager for Nuxt, built on @nuxt/scripts: loads the tags publi...

495 0
@revenexx/cover

Cover — revenexx design system for Nuxt. Distributed as a Nuxt layer: generic UI...

15,376

Version History

Version Released License
3.0.3 Custom
3.0.2 Custom
3.0.1 Custom
3.0.0 Custom
2.10.0 Custom