Skip to main content

Modules & Rails

What are modules

A Module is a section of your workspace, displayed as an icon in the vertical navigation rail on the far left of the screen. Modules organize your application into logical areas — like departments, functions, or categories.

Examples: An inventory management workspace might have modules for "Products", "Orders", "Suppliers", and "Reports", each with its own icon and set of rails.

Module properties

PropertyDescription
NameInternal identifier
LabelDisplay name shown on hover
IconMaterial or Cupertino icon, selected from a visual picker. Defaults to a folder icon if not set.
Default railThe rail that opens automatically when entering the module (optional)
Rail orderCustom ordering of rails within the module

Creating a module

  1. In the Admin panel, go to Modules.
  2. Click Add module.
  3. Fill in the display name and internal name.
  4. Click the icon field to open the icon picker — search and select from Material and Cupertino icon libraries.
  5. Optionally select a default rail (available after creating rails).
  6. Click Save.

How modules appear

On desktop, modules appear as a narrow vertical rail (40px wide) on the far left. Each module is represented by its icon with a highlight indicator on the selected module. Hovering shows the module label as a tooltip.

On mobile, modules appear in a slide-out drawer accessible via the hamburger menu.

What are rails

A Rail is a navigation entry within a module. Each rail links to a configured view and appears in the sidebar panel when its parent module is selected.

Rails are not containers — they are links to views. A rail's configuration defines which view type to render and how to display the data.

Rail properties

PropertyDescription
LabelDisplay name shown in the sidebar
PathOptional URL path segment (e.g., "/tasks")
CategoryOptional grouping label for hierarchical organization
ConfigView configuration — defines what the rail displays

Creating a rail

  1. In the Admin panel, go to Modules.
  2. Expand the module you want to add a rail to.
  3. Click Add rail.
  4. Enter the display label.
  5. Optionally set a path and category.
  6. Click Save.

After creating the rail, configure it with a view through the Views admin section.

Organizing your navigation

Categories

Rails can be grouped into categories for better organization. When a rail has a category set, it appears under a section label, with that category's rails slightly indented beneath it in the sidebar.

Example layout:

Products Module
├── Daily Report (no category)
├── Catalog (category)
│ ├── All Products
│ ├── New Arrivals
│ └── Discontinued
└── Stock (category)
├── Current Inventory
└── Low Stock Alert

Categories are extracted from each rail's configuration. Rails without a category appear directly in the list without a section header.

Ordering

Both modules and rails support custom ordering:

  • Module order is stored at the workspace level. Modules appear in the configured sequence; any modules not in the order list are appended alphabetically.
  • Rail order is stored at the module level. Same logic — configured order first, then alphabetical.

If no custom order is set, both modules and rails sort alphabetically by label.

Module configuration

Default rail

Each module can have a default rail — the rail that loads automatically when the user enters the module. This is useful for setting a "home" screen for each module.

To set a default rail:

  1. Edit the module in the Admin panel.
  2. In the Default Rail dropdown, select the desired rail.
  3. Click Save.

If the selected default rail is later deleted, the setting is automatically cleared. If no default is set, OutDo loads the first rail in the configured order.

When a user clicks a module icon, OutDo:

  1. Checks for a default rail on the module.
  2. If found, navigates to that rail's view.
  3. If not found, navigates to the first rail in the ordered list.
  4. The rail's configured view loads in the main content area.

The full URL path follows the pattern: /organization/{orgId}/workspace/{wsId}/module/{moduleId}/view/{railId}