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?
- Go to Account -> Modules (
/account/modules) - Find the Platform module on the list
- 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?
- Go to Platform -> Modules (
/platform/modules) - Click New
- 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
- Save
- 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