Skip to content
Intum Help

Platform - Custom Modules in Intum

Updated at: 5 min read

What Is the Platform Module For?

The Platform module lets you create custom modules in Intum - add new sections to the system that work like native application elements. This way you can extend Intum with any functionality without modifying the source code.

Each module is a URL path (e.g., /reports, /database) linked to a content source - a CMS page, Noe app, knowledge base, or external JavaScript file.

How to Enable the Platform Module?

  1. Go to Account -> Modules (/account/modules)
  2. Find the Platform module on the list
  3. Click the toggle to enable it

After enabling, a Platform section will appear in the menu with a list of your modules.

What Can Be Connected as a Module?

Each module can be linked to one of four sources:

  • Noe::App - a single Noe application (Svelte, JS, HTML). Ideal for simple tools and dashboards. More about Noe ->
  • JavaScript file (source_url) - an external JS application (e.g., built with Svelte, React, Vue). You provide a URL to the JS file, and the module loads it in a <div id="intum_platform_module"> element. Ideal for applications built outside of Intum.
  • Cms::Site - a full CMS site with multiple pages, layouts, and Liquid templates. In CMS pages you can embed any JavaScript, Svelte, Vue, React code - this way you build interactive applications directly in CMS. Ideal for complex modules with multiple pages. More about CMS ->
  • Kb::KnowledgeBase - a knowledge base with categories, entries, and search. Ideal for internal documentation. More about the Knowledge Base ->

Module from a JavaScript File

Instead of connecting an existing CMS site or Noe app, you can provide a URL to a JS file in the Source URL field. The module will load this file and execute it on the page.

The JS application should mount itself in the #intum_platform_module element:

const target = document.getElementById("intum_platform_module")
// mount your app here

The JS file can be served from any source - from a CDN, your own server, or Intum assets. In development mode, it’s convenient to use a local dev server (e.g., http://localhost:3100/app.js) with watch mode - you change the code, refresh the page, and see the result.

This approach lets you build modules in any framework (Svelte, React, Vue, vanilla JS) with your own build process, tests, and deployment.

Module Layout

Each module can operate in one of two modes:

  • With app layout (app) - the module is displayed within Intum’s standard interface, with topbar, sidebar, and menu. It looks like a native part of the system. Useful when the module should match the rest of the application.
  • Without layout (none) - the module takes up the entire page, without Intum interface elements. Useful for standalone applications, landing pages, widgets, or modules with their own navigation.

You set the mode in the Layout field when creating or editing a module.

How to Create a New Module?

  1. Go to Platform -> Modules (/platform/modules)
  2. Click New
  3. Fill in the form:
    • Name - displayed in the menu (e.g., “Sales Reports”)
    • Code - module identifier (e.g., reports)
    • URL - the path where the module will be accessible (e.g., reports -> /reports). You can use /* at the end to catch subpaths (e.g., reports/* -> /reports/anything)
    • Source URL - optionally a URL to a JS file (instead of a CMS/Noe/KB source)
    • Source type - choose Cms::Site, Noe::App, or Kb::KnowledgeBase (when not using Source URL)
    • Layout - with app layout (sidebar, topbar) or without
    • Permission - optionally restrict access to a selected permission
  4. Save
  5. Enable the module in Account -> Modules (/account/modules) - it will appear in the menu

URL with Wildcard

A module’s URL can end with /* - it then catches the base address and all subpaths:

  • myapp/* - works at /myapp, /myapp/dashboard, /myapp/settings/profile, etc.
  • The subpath is passed to the module as navigation context

An exact URL (without /*) responds only to the exact address. If a module with an exact URL and another with a wildcard both exist - the exact match takes priority.

Extending Existing Modules

Want to add a new option to an existing module, e.g., an additional page in the Organize section or a new view in CRM? Just use / in the module URL.

Enter as the URL the name of the existing module, a slash /, and the name of the new option. The new item will automatically appear in that module’s menu, alongside the standard options.

Examples

Module URL Effect
organize/reports New Reports item in the Organize menu
crm/analysis New Analysis item in the CRM menu
helpdesk/faq New FAQ item in the Helpdesk menu

Access Control

Each module can have a permission set. If set, only users with that permission can see and open the module. If the field is empty, the module is accessible to all logged-in users.

URL Addresses

Each module is accessible at two addresses:

  • Clean URL: /module-url (e.g., /reports) - the main path
  • Fallback: /m/module-url (e.g., /m/reports) - always works, even if the URL conflicts with an existing module

Was this entry helpful?

Share

Comments