Loading...
Loading...
Guides development of Fusion portal shells — scaffolding, module configuration, app loading, routing, header/context integration, analytics, and deployment using the Fusion Framework CLI portal commands. USE FOR: create portal, scaffold portal, configure portal modules, portal app loading, portal routing, portal header, context selector, portal analytics, portal telemetry, portal manifest, ffc portal dev, portal deployment, embed apps in portal. DO NOT USE FOR: app-level feature development (use fusion-app-react-dev), backend service changes, Fusion Help Center integration, skill authoring.
npx skill4agent add equinor/fusion-skills fusion-developer-portalportal.manifest.tsffc portal dev/apps/:appKey/*ApploaderuseApploaderffc portal buildffc portal uploadfusion-app-react-devfusion-help-integrationfusion-skill-authoringfusion-issue-authoringApploadermcp_fusion_search_framework"portal manifest definePortalManifest ffc portal""createFrameworkProvider PortalModuleInitiator portal configure"mkdir my-fusion-portal && cd my-fusion-portal
pnpm init
pnpm add -D @equinor/fusion-framework-cliportal.manifest.tsimport { definePortalManifest } from '@equinor/fusion-framework-cli/portal';
export default definePortalManifest((env, { base }) => ({
name: 'my-portal',
version: '1.0.0',
entry: './src/index.tsx',
}));portal.schema.tssrc/index.tsxpnpm fusion-framework-cli portal dev
# or: ffc portal devFrameworkConfiguratorAppModuleInitiatorimport type { FrameworkConfigurator } from '@equinor/fusion-framework';
import { enableAppModule } from '@equinor/fusion-framework-module-app';
import { enableNavigation } from '@equinor/fusion-framework-module-navigation';
import { enableAnalytics } from '@equinor/fusion-framework-module-analytics';
const configure = (configurator: FrameworkConfigurator) => {
enableAppModule(configurator);
enableNavigation(configurator, '/');
enableAnalytics(configurator, { /* ... */ });
};FrameworkConfiguratorportal-analytics/apps/:appKey/*Apploaderimport { Apploader } from '@equinor/fusion-framework-react-app/apploader';
<Apploader appKey="my-app" />Warning:is an experimental POC. Embedded apps may have routing and context issues. Best for simple apps like PowerBI or PowerApps views.Apploader
useFramework<[AppModule]>()fusion.modules.app.current$app.initialize()react-router-domconst Router = () => {
const framework = useFramework();
const router = framework.modules.navigation.router;
return <RouterProvider router={router} />;
};useCurrentContextuseContextSelectorimport { enableAnalytics } from '@equinor/fusion-framework-module-analytics';
import { ConsoleAnalyticsAdapter } from '@equinor/fusion-framework-module-analytics/adapters';
import { AppLoadedCollector, AppSelectedCollector } from '@equinor/fusion-framework-module-analytics/collectors';
enableAnalytics(configurator, (builder) => {
builder.addAdapter(new ConsoleAnalyticsAdapter());
builder.addCollector(new AppLoadedCollector());
builder.addCollector(new AppSelectedCollector());
});# Build the portal template
ffc portal build
# Upload to the Fusion portal service (authenticate via `az login` or FUSION_TOKEN env var)
ffc portal upload --portal-id <id>
# Tag a specific version
ffc portal tag --portal-id <id> --tag latest --version <version>Never paste tokens directly into commands. Usefor interactive auth or set theaz loginenvironment variable for CI pipelines.FUSION_TOKEN
ffc portal dev/apps/:appKeyFrameworkConfiguratorfusion-app-react-devfusion-researchfusion-code-conventionsmcp_fusion_search_frameworkApploader