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 ID | Purpose | Features Included |
|---|---|---|
| landing | Marketing & Conversion | Glowy wave hero, comparison tables, interactive rollout checklists |
| auth | Access Control | Multi-tenant session validation, Clerk SSO integrations, route middleware |
| dashboard | Product Core | Telemetry graphs, database query lists, transactions overview |
| ai | Cognitive Operations | Local models (Ollama, LM Studio), cloud models (OpenAI, Anthropic), audit logs |
| users | Directory & Profiles | Role management (admin, member), edit forms, activity logs |
| settings | System Config | Visual layout controls, developer toggle visibility settings |
| help | Support Interface | Interactive 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]