Extending Your Platform

Mobile App, Custom Apps & Integrations

Every organization eventually outgrows the "one-size-fits-all" website — they need a native-feeling mobile experience, a custom-built tool specific to how they work, or a connection to an outside system they already rely on. Most platforms force a choice between staying locked into the vendor's box or rebuilding everything from scratch elsewhere.

The pain it solves: Bespoke needs shouldn't mean a completely separate project, a second login, or a second bill from a different vendor.

How it helps:

  • Mobile App module — configure and manage a mobile app experience for your organization directly from Backstage, previewed in a realistic device simulator so decisions about layout and content are made with real context, not guesswork.
  • Custom Apps — a dedicated installation slot for apps built specifically for your organization, so bespoke tools sit inside the same platform and licensing as everything else instead of living as an orphaned side project.
  • Integrations — connect external services and APIs (from webhooks to outside tools) so the platform can notify, or be notified by, systems your organization already depends on.
  • Paid features are gated cleanly — activation is enforced at the route level, so a module that isn't part of your plan is blocked from direct URL access too, not just hidden from the menu.

The happy workday: A new integration or a custom-built tool goes live inside the same workspace staff already know, activated with a toggle rather than a new deployment.

Why This Matters for Your Organization

Extensibility without fragmentation is the goal: your mobile experience, your bespoke tools, and your outside integrations all become part of one coherent platform rather than a patchwork of vendors, logins, and support contracts.


Technical Details

Mobile App is configured through AppDash.razor (ExireNexus.Backstage/Components/Editors/MobileApp/AppDash.razor, routed at /editors/app/dash and /editors/app/{ItemId:guid}), which renders menu items inside a device simulator using IMenuItemService and IItemService so changes can be previewed before publishing. Activation is controlled by SettingNames.ModuleMobileApp in the AppCatalog entry for "Mobile App".

Custom Apps and Integrations are both app-bar-gated features (SettingNames.AppBarCustomApps, SettingNames.AppBarIntegrations) rather than activation-gated modules, reflecting that they're extension points rather than commerce-priced features in the current catalog. The Integrations page (ExireNexus.Backstage/Components/Editors/Developer/Integrations.razor, routed at /editors/developer/integrations) surfaces connections to external services and APIs.

A concrete example of an integration already wired into the platform is IWebhookService (ExireNexus.Services/Integrations/Webhooks/WebhookService.cs): SendMessageAsync and SendPayloadAsync post messages/payloads to a configured webhook URL (resolved per-tenant via ISettingsService), giving the platform a simple, reusable pattern for pushing events to outside systems without hardcoding a specific vendor.

Paid-module gating is enforced centrally by ModuleGateLayout (ExireNexus.Backstage/Components/Layout/ModuleGateLayout.razor), which maps route prefixes (e.g. /editors/app/ModuleMobileApp) to their activation setting and blocks direct navigation to a module's pages with a FeatureNotActivated panel when the tenant hasn't activated it — closing the gap between "hidden from the app bar" and "actually inaccessible" that a simple UI-only toggle would leave open.



Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.