Skip to content

Module System and Registry

src/utils/moduleRegistry.ts defines:

  • ModuleKey
  • module metadata (label, icons, lazy component)
  • optional add-on relationships (addOns)

src/context/ModulesProvider.tsx:

  • Receives raw module keys for current user
  • Applies permission filtering and add-on logic
  • Produces UI-ready buttons for navigation
  • Exposes mutable modules, sortOrder, and setters
  1. Route hits /app or /app/[module]
  2. Handle validates module against accessible button tree
  3. MainView renders RenderComponent
  4. RenderComponent resolves module entry from registry and lazy-loads module

Parent modules may contain add-ons.

Filtering rules:

  • Parent is shown when parent is accessible
  • Parent may still appear when only child add-ons are accessible
  • Child button list is reduced to accessible add-ons

For every module key in moduleRegistry, docs should include:

  • module purpose
  • route entry behavior
  • permission expectations
  • critical components/hooks/services
  • known failure modes