Documentation Menu

Module Map

Included blocks and where they fit in the base architecture.

The codebase is organized into self-contained modules located under src/modules/*. This modular setup makes it easy to add new features or remove unused modules.

Registry Mechanism

Modules register with the application by exposing an AppModuleManifest object. This manifest defines their routes, navigation structure, dependencies, and widget components. The core kernel (src/modules/core) reads these manifests to dynamically configure layouts, sidebars, and widgets.

Codebase Modules Catalog

The following modules are built into the template:

Module IDPurposeFeatures Included
landingMarketing & ConversionGlowy wave hero, comparison tables, interactive rollout checklists
authAccess ControlMulti-tenant session validation, Clerk SSO integrations, route middleware
dashboardProduct CoreTelemetry graphs, database query lists, transactions overview
aiCognitive OperationsLocal models (Ollama, LM Studio), cloud models (OpenAI, Anthropic), audit logs
usersDirectory & ProfilesRole management (admin, member), edit forms, activity logs
settingsSystem ConfigVisual layout controls, developer toggle visibility settings
helpSupport InterfaceInteractive diagnostic logs, connection testing helpers

Manifest Syntax

Each module declares its configuration in a manifest.ts file. For example:

import { IconSearch } from '@tabler/icons-react'
import type { AppModuleManifest } from '@/modules/core/types'

export const aiModule: AppModuleManifest = {
  id: 'ai',
  title: 'AI Workspace',
  description: 'Local and cloud provider AI models.',
  routes: [
    { path: '/api/ai/chat', kind: 'api' },
    { path: '/api/ai/search', kind: 'api' }
  ],
  navigation: [
    {
      id: 'core',
      title: 'Core',
      kind: 'main',
      order: 10,
      items: [
        {
          id: 'ai-search',
          titleKey: 'sidebar.secondary.search',
          fallbackTitle: 'Search',
          icon: IconSearch,
          order: 10
        }
      ]
    }
  ]
}

Module Resolution Flow

The diagram below shows how the application resolves dependencies and loads modules dynamically:

graph TD
  EnvVars[VITE_ENABLED_MODULES] --> CoreReg[core/registry.ts]
  CoreReg --> LoadManifests[Load Module Manifests]
  LoadManifests --> ResolveDeps[Resolve Dependencies]
  ResolveDeps --> FilterDisabled[Filter Out Disabled Modules]
  FilterDisabled --> GenerateRoutes[Compile Route Map]
  FilterDisabled --> GenerateSidebar[Construct Sidebar Navigation]