# AntelopeJS DMS > AntelopeJS DMS is an open-source (Apache 2.0), code-first Dashboard Management System built on AntelopeJS. Pages are TypeScript classes composed of backend-described blocks; you can build them in code, with the visual builder or with the AI assistant, and every change stays editable code in your repository. It ships roles and permissions down to the component, a Vue dashboard served by `@antelopejs/dms-frontend` and optional modules (AI assistant, builder, database, API, automation, SaaS, translation, mailing, marketing, media). It can be self-hosted or deployed to AntelopeJS Cloud. ## Documentation Sets - [Full documentation](https://dms.antelopejs.com/llms-full.txt): Every page of the DMS documentation (core guide, Frontend and modules) as one Markdown file. ## Getting started - [Introduction](https://dms.antelopejs.com/docs/getting-started/introduction): What the AntelopeJS DMS is, what ships out of the box, who it is for, and what to know before you start. - [Installation](https://dms.antelopejs.com/docs/getting-started/installation): Prepare Node, pnpm, and a development database before running the demo template. - [Quickstart](https://dms.antelopejs.com/docs/getting-started/quickstart): Run the existing demo template, create your first administrator, and explore working pages before writing your own. - [Tutorial](https://dms.antelopejs.com/docs/getting-started/tutorial): A guided build that chains the core concepts — schema, models, DataControllers, related tables, pages, a KPI dashboard, and permissions. - [Architecture](https://dms.antelopejs.com/docs/getting-started/architecture): Why the backend describes the UI, how the two processes fit together, and how a page reaches the screen. - [Built-in dashboard](https://dms.antelopejs.com/docs/getting-started/built-in-dashboard): What the DMS ships before you write a single page — the shell, onboarding, auth screens, user settings, team management, and the platform housekeeping. - [Run the DMS inside AdonisJS](https://dms.antelopejs.com/docs/getting-started/adonisjs): Start the DMS and its dashboard from an AdonisJS 6 application with template-dms-adonis, add DMS modules in code, and know what embedded mode leaves out. ## Building - [Overview](https://dms.antelopejs.com/docs/building/overview): Everything you do when you build on the DMS — set up the project, declare pages and navigation, wire actions and services, translate, ship custom Vue, package and deploy. - [Project setup](https://dms.antelopejs.com/docs/building/project-setup): Set up a normal AntelopeJS project that loads the DMS as a dependency and registers its own pages. - [Configuration](https://dms.antelopejs.com/docs/building/configuration): Every option the DMS module accepts in antelope.config.ts — URLs, auth token lifetimes, HTML rendering, realtime driver, and dashboard presentation. - [Pages & components](https://dms.antelopejs.com/docs/building/pages-and-components): Declare a page as a class and attach components to it as static fields — the shared frontend renders them, no Vue. - [Navigation](https://dms.antelopejs.com/docs/building/navigation): How the dashboard sidebar is built — the Pages/Modules/Settings root groups, categories for your own screens, page URLs, and the command-palette quick actions. - [Actions & reactivity](https://dms.antelopejs.com/docs/building/actions-and-reactivity): The behavioral side of the component DSL — permissioned actions, the events components emit, action targets, and the watch-actions that make components react to each other from backend configuration. - [Backend services](https://dms.antelopejs.com/docs/building/backend-services): Cross-cutting DMS services a module can use — hooks, notifications, realtime publishing, HTML rendering, and the export-job engine. - [Localization](https://dms.antelopejs.com/docs/building/localization): How the DMS resolves $-prefixed i18n keys, how your layer ships locales, and the runtime translation editor. - [Frontend layer](https://dms.antelopejs.com/docs/building/frontend-layer): Author a custom Vue frontend module and understand the machine that loads it — the dms.frontend.ts entry, component registration, overrides, configuration, localization, the materialized workspace, and the catch-all renderer. - [Frontend CLI](https://dms.antelopejs.com/docs/building/frontend-cli): The ajs dms commands that run, build and serve the DMS frontend, in short — the full reference lives in the dms-frontend documentation. - [Distributable module](https://dms.antelopejs.com/docs/building/distributable-module): Package a DMS extension module other projects install. - [Deployment](https://dms.antelopejs.com/docs/building/deployment): Run the DMS in production — build both processes, start them in the right order, and check off the secrets and multi-instance requirements. - [Troubleshooting](https://dms.antelopejs.com/docs/building/troubleshooting): A symptom index — map what you see to its cause and the section that explains the fix. - [Settings pages](https://dms.antelopejs.com/docs/building/settings-pages): Add your own pages to the settings area — workspace settings, personal settings every member reaches, their order, badges and frame. ## Auth & tenancy - [Overview](https://dms.antelopejs.com/docs/auth-and-tenancy/overview): Who may sign in, what each user may see and do, and whose data they reach — the auth, permission and tenancy model of the DMS. - [Built-in authentication](https://dms.antelopejs.com/docs/auth-and-tenancy/authentication): The complete auth system the DMS ships — sessions and token rotation, invite-based signup, login with tenant selection, two-factor, email validation, and password recovery. - [Auth & permissions](https://dms.antelopejs.com/docs/auth-and-tenancy/auth-and-permissions): Authenticate routes and pages, then gate them with the DMS hierarchical RBAC layer. - [Multi-tenant data](https://dms.antelopejs.com/docs/auth-and-tenancy/multi-tenant): Scope models to a tenant, query across tenants, manage memberships, and invite users into a tenant. - [SaaS mode](https://dms.antelopejs.com/docs/auth-and-tenancy/saas-mode): Turn the dashboard into a sellable product with dms-saas — Stripe configuration, public owner registration, plans that gate permissions, and the billing operations on both sides. ## Components - [Overview](https://dms.antelopejs.com/docs/components/overview): Choose DMS blocks for your screen, with examples, previews and option references. - [Block fundamentals](https://dms.antelopejs.com/docs/components/block-fundamentals): What every DMS block shares — how blocks nest, read their data, write their texts in the reader's language, and carry their own permission. - [Layout & containers](https://dms.antelopejs.com/docs/components/layout-and-containers): The blocks that arrange other blocks on a page — grids, stacks, cards, tabs, guards and placeholders. - [Layout & containers › Grid](https://dms.antelopejs.com/docs/components/layout-and-containers/grid): A responsive grid of rows and columns that drops columns on narrow screens — the layout of every dashboard. - [Layout & containers › Stacks](https://dms.antelopejs.com/docs/components/layout-and-containers/stacks): HStack, VStack and Spacer — flexbox rows and columns for toolbars, side-by-side panels and page scaffolds. - [Layout & containers › Card](https://dms.antelopejs.com/docs/components/layout-and-containers/card): A titled card that frames several blocks, with a count, head actions, a footer band and two slots. - [Layout & containers › Tabs](https://dms.antelopejs.com/docs/components/layout-and-containers/tabs): A tab strip whose panels hold their own blocks, with counts per tab, deep links and keyboard shortcuts. - [Layout & containers › Guard](https://dms.antelopejs.com/docs/components/layout-and-containers/guard): Shows its blocks, or one empty state in their place when a route says there is nothing to show yet or the record is gone. - [Layout & containers › Placeholder](https://dms.antelopejs.com/docs/components/layout-and-containers/placeholder): A dashed box standing in for a block that does not exist yet, to block out a layout. - [Charts & widgets](https://dms.antelopejs.com/docs/components/charts-and-widgets): Dashboard blocks — KPI cards, chart cards, rankings, the period selector that scopes them, and the live toggle. - [Charts & widgets › KPI card](https://dms.antelopejs.com/docs/components/charts-and-widgets/kpi-card): One headline figure with its variation versus the comparison period and an optional sparkline. - [Charts & widgets › Chart card](https://dms.antelopejs.com/docs/components/charts-and-widgets/chart-card): A framed chart with its headline value, variation and comparison legend — the dashboard-ready version of a bare chart. - [Charts & widgets › Top list](https://dms.antelopejs.com/docs/components/charts-and-widgets/top-list-card): A ranked leaderboard card — rows with a value, a delta, a bar and an optional sparkline. - [Charts & widgets › Period selector](https://dms.antelopejs.com/docs/components/charts-and-widgets/period-selector): A date range picker whose period, kept in the page URL, drives every widget that names its scope. - [Charts & widgets › Live toggle](https://dms.antelopejs.com/docs/components/charts-and-widgets/live-toggle): The Live / Pause switch of a live page, with the time since the page last read its data. - [Charts & widgets › Charts](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts): Thirteen chart blocks drawn with ApexCharts — how to pick one, the options they share, colors, reference lines and synced crosshairs. - [Charts & widgets › Charts › Line chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/line): A trend over time, one line per series, with reference lines and a synced crosshair. - [Charts & widgets › Charts › Area chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/area): A filled trend whose volume matters, stacked or overlaid. - [Charts & widgets › Charts › Range area chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/range-area): A filled band between a low and a high per point — percentiles, confidence intervals, forecasts. - [Charts & widgets › Charts › Bar chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/bar): Horizontal bars comparing categories, stacked or grouped. - [Charts & widgets › Charts › Column chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/column): Vertical columns comparing periods or categories, stacked or grouped. - [Charts & widgets › Charts › Scatter chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/scatter): Points placing each item on two measures, with optional labels. - [Charts & widgets › Charts › Mixed chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/mixed): Lines, areas, columns and range bands sharing one axis, one type per series. - [Charts & widgets › Charts › Radar chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/radar): Several measures of a few items on spokes, one polygon per series. - [Charts & widgets › Charts › Candlestick chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/candlestick): Open, high, low and close per period, for prices and other ranged values. - [Charts & widgets › Charts › Donut chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/donut): Parts of a whole on a ring, with a central label. - [Charts & widgets › Charts › Pie chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/pie): Parts of a whole as slices, each labelled. - [Charts & widgets › Charts › Radial bar chart](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/radial-bar): Progress of a few measures towards 100 %, as concentric rings. - [Charts & widgets › Charts › Heatmap](https://dms.antelopejs.com/docs/components/charts-and-widgets/charts/heatmap): Intensity across two dimensions, such as hours by weekday. - [Display blocks](https://dms.antelopejs.com/docs/components/display-blocks): The summary and notice blocks around a page's data — stat groups, key / value facts, navigation cards, empty states, banners and code. - [Display blocks › Stat group](https://dms.antelopejs.com/docs/components/display-blocks/stat-group): Several figures or states read at a glance, joined in one card or as one compact card each. - [Display blocks › Key / value list](https://dms.antelopejs.com/docs/components/display-blocks/key-value-list): Label and value rows, each value drawn by its type — text, status pill, money, date, link or identifier — with copy buttons. - [Display blocks › Navigation cards](https://dms.antelopejs.com/docs/components/display-blocks/nav-card-grid): A grid of cards linking to other pages, each with an icon, a description and the target's live state. - [Display blocks › Empty state](https://dms.antelopejs.com/docs/components/display-blocks/empty-state): Says why there is nothing here and what to do next — with a tone, link buttons and an optional code snippet. - [Display blocks › Banner](https://dms.antelopejs.com/docs/components/display-blocks/banner): A notice with a tone, link buttons and a remembered dismiss — static, or fetched from a route that decides whether to show it. - [Display blocks › Code block](https://dms.antelopejs.com/docs/components/display-blocks/code-block): Read-only code with syntax highlighting, a copy button and a height cap — static, or read from a route. - [Lists & settings](https://dms.antelopejs.com/docs/components/lists-and-settings): What overviews and settings screens are made of — activity feeds, quota meters, and the sections and field rows of a settings page. - [Lists & settings › Activity feed](https://dms.antelopejs.com/docs/components/lists-and-settings/activity-feed): Recent events grouped by day, from a list or a route — with counts, badges, folding and unread markers. - [Lists & settings › Meter](https://dms.antelopejs.com/docs/components/lists-and-settings/meter): An x-of-y bar for seats, quotas and coverage — one fill or stacked segments, with warning and error thresholds. - [Lists & settings › Section & field row](https://dms.antelopejs.com/docs/components/lists-and-settings/section): Section and FieldRow compose a settings page from the backend — titled cards of labelled rows, forms that become rows, save bars and instant save. - [Forms](https://dms.antelopejs.com/docs/components/forms): Declare fields, validation, and fetch/submit URLs; the frontend renders the inputs and the submit flow. - [Forms › Form sections](https://dms.antelopejs.com/docs/components/forms/sections): Split a long form into titled cards on one page, with a section navigation, per-section states and a summary of the fields to fix. - [Forms › Saving a form](https://dms.antelopejs.com/docs/components/forms/saving): Pick how a form saves — a save bar, a footer, nothing, or each field on its own — and what it sends to its submit route. - [Forms › Field notes](https://dms.antelopejs.com/docs/components/forms/field-notes): Help lines, pending changes, module defaults and read-only values under a form field's control. - [Forms › Field types](https://dms.antelopejs.com/docs/components/forms/field-types): Choice cards, segmented and radio selects, boolean cards, repeaters, key-value pairs, secrets, copyable values, code and tags. - [Forms › Table form](https://dms.antelopejs.com/docs/components/forms/resource-form): ResourceForm — a form over one table's rows that creates, edits or shows a row with the fields, routes and methods the table declares. - [Tables](https://dms.antelopejs.com/docs/components/tables): Render a paginated, filterable, sortable CRUD table from a DataController with TableView. - [Tables › Views](https://dms.antelopejs.com/docs/components/tables/views): Declare named states of a whole table view — filters, search, sort, columns, display, density — open them from the URL, and let users save their own. - [Tables › Grouped display](https://dms.antelopejs.com/docs/components/tables/grouped-display): Offer the grouped display — the grid's own columns, with a header row before each group of rows sharing a value, a day or a week. - [Tables › Cell displays](https://dms.antelopejs.com/docs/components/tables/cell-displays): Draw a column's cells another way with a typed display class — identity, two lines, pills, relative dates, status pills, progress bars, sparklines, durations, sizes, ids, toned text — with composed sub-lines, or register your own. - [Tables › Cards](https://dms.antelopejs.com/docs/components/tables/cards): Pick what the kanban board and the cards display show for each row with one card option, or draw the whole card with a component of your own. - [Tables › Pagination](https://dms.antelopejs.com/docs/components/tables/pagination): Page a table view with a pager, a "Load more" button or infinite scroll, and pick its page size. - [Tables › Source tables](https://dms.antelopejs.com/docs/components/tables/source-tables): List the rows of a module's own route in a read-only table view with TableView.fromSource, without a data controller. - [Tables › Bulk actions](https://dms.antelopejs.com/docs/components/tables/bulk-actions): Run a table view's custom action on the selected rows, or on every row its filters match. - [Tables › Row drawers](https://dms.antelopejs.com/docs/components/tables/row-drawers): Open a row in a module's own drawer, modal or side panel, step through the rows with J and K, and link to it. - [Tables › Footer summaries](https://dms.antelopejs.com/docs/components/tables/footer-summaries): Show the row count, figures computed by the server over every listed row, and a legend in a table view's footer. - [Tables › Empty states](https://dms.antelopejs.com/docs/components/tables/empty-states): Word a table view's empty body in the module's terms, or draw it with a component of your own. - [Tables › Rows ordered by hand](https://dms.antelopejs.com/docs/components/tables/reorder): Let users order a table view's rows, or its cards, with a drag handle, saved through the edit route. - [Tables › Confirmations](https://dms.antelopejs.com/docs/components/tables/confirmations): Ask before an action runs with one ConfirmDialog — fixed, or worded by the server for the row — with fields whose values go with the request. - [Custom component](https://dms.antelopejs.com/docs/components/custom-component): Build only the block the catalog is missing — a Vue component of your own, declared on the backend with its name, icon and description so roles can grant it. - [Data types](https://dms.antelopejs.com/docs/components/data-types): One typed-data primitive that drives a form field, a table column, and its filters. - [Data controller](https://dms.antelopejs.com/docs/components/data-controller): Declare a data shape and its CRUD operations once — route generators, field decorators, and model wiring. - [Derived controllers](https://dms.antelopejs.com/docs/components/derived-controller): Show the same data in two writing screens by deriving a data controller for the second one. - [File storage](https://dms.antelopejs.com/docs/components/file-storage): Configure native file and image fields, understand page/component authorization, and handle staged uploads and save retries. ## Extending the dashboard - [Overview](https://dms.antelopejs.com/docs/extending-the-dashboard/overview): How a custom frontend module plugs into the DMS dashboard — the registration model and the catalog of extension points. - [Dashboard chrome](https://dms.antelopejs.com/docs/extending-the-dashboard/dashboard-chrome): The registries a frontend layer calls to add header buttons, command-palette groups and an assistant mode, app widgets, sidebar widgets, docked side panels, global overlays, footer links, and auth-page links to the dashboard shell, and the backend registry behind layout banners. - [Theming & branding](https://dms.antelopejs.com/docs/extending-the-dashboard/theming-and-branding): Put your logo and palette on the dashboard — the branding app-config surface (sidebar, email and browser-tab logos), Nuxt UI color tokens, CSS variables, fonts, and interface scale. - [Custom data types](https://dms.antelopejs.com/docs/extending-the-dashboard/custom-data-types): Register your own DataType — a backend type declaration paired with the frontend Vue that renders its values. - [TableView displays](https://dms.antelopejs.com/docs/extending-the-dashboard/table-view-displays): Register an alternate TableView body renderer — grid, kanban, cards, calendar — that inherits the table's search, filters, sort, tabs, pagination, selection, and row actions. - [Component events](https://dms.antelopejs.com/docs/extending-the-dashboard/component-events): The window-CustomEvent bus that lets DMS components react to one another, plus the named-function registry that backend watch-actions invoke. - [Period filtering](https://dms.antelopejs.com/docs/extending-the-dashboard/period-filtering): The producer / consumer / registry that links a PeriodSelector to data widgets by a shared string scope id. ## Frontend composables - [Overview](https://dms.antelopejs.com/docs/frontend-composables/overview): The composables a custom frontend module's Vue calls to integrate with the DMS. - [Auth requests & permissions](https://dms.antelopejs.com/docs/frontend-composables/authenticated-requests): The composables a layer's Vue uses to call the backend with auth, gate UI by permission, switch accounts, and recover expired sessions. - [Realtime & notifications](https://dms.antelopejs.com/docs/frontend-composables/realtime-and-notifications): Consume SSE topic updates through the realtime composables and the notification-center store they feed. - [Page context](https://dms.antelopejs.com/docs/frontend-composables/page-context): Composables exposing the dashboard's nav tree, current module, ownership, and per-user preferences — plus the page setup functions a backend page can name. - [UI toolkit](https://dms.antelopejs.com/docs/frontend-composables/ui-toolkit): The helpers a frontend layer builds screens with — programmatic drawers and modals, confirm dialogs, error toasts, export-job progress, page header actions, the record card, the required-fields legend, the code snippet, scrolling to a block, and shortcut declarations. - [Utilities](https://dms.antelopejs.com/docs/frontend-composables/utilities): i18n key resolution, composed texts, unsaved-changes leave guarding, and onboarding state for layer authors. ## AI & coding agents - [Overview](https://dms.antelopejs.com/docs/ai-and-claude-code/overview): The AntelopeJS skill suite teaches coding agents (Claude Code, Codex) and the dms-ai assistant how to build on the DMS — what it contains, where each skill lives, and how it reaches your agent. - [Install the plugin](https://dms.antelopejs.com/docs/ai-and-claude-code/install): Add the antelopejs plugin to Claude Code or Codex once — or let a DMS template prompt for it — and every installed package's skills are linked into your project. - [Skill catalog](https://dms.antelopejs.com/docs/ai-and-claude-code/skill-catalog): Every skill of the AntelopeJS suite, grouped by the package that ships it, with when the agent reaches for it and the page that covers the same ground. - [In the dms-ai assistant](https://dms.antelopejs.com/docs/ai-and-claude-code/dms-ai): The dms-ai module runs a coding agent next to your dashboard that loads the skills of every loaded module and previews DMS blocks in the chat. - [Best practices](https://dms.antelopejs.com/docs/ai-and-claude-code/best-practices): The rules every DMS page follows, and that the dms-best-practices skill makes agents follow — pages as backend blocks, custom only for the missing block, metadata on every custom block, and a custom block proposed rather than built silently. - [Design fidelity](https://dms.antelopejs.com/docs/ai-and-claude-code/design-fidelity): What an agent does with your mockup — one framing question, then component by component, a preview of the DMS block next to a sketch of the custom one, and the choice between keeping, adjusting or replacing the block. - [Block preview page](https://dms.antelopejs.com/docs/ai-and-claude-code/block-preview-page): The hidden /dms-preview page renders any tree of registered DMS blocks from a URL or a postMessage — what powers the live previews of these docs. - [Ship a skill with your module](https://dms.antelopejs.com/docs/ai-and-claude-code/module-skills): Teach coding agents (Claude Code, Codex) and the dms-ai assistant how to use your module by shipping a SKILL.md next to its code, declared in package.json. ## Interfaces - [Interfaces](https://dms.antelopejs.com/docs/interfaces): One public package, @antelopejs/interface-dms, holds every contract a module uses — its subpaths, domain by domain. - [Core › Introduction](https://dms.antelopejs.com/docs/interfaces/core/introduction): The core contract of the DMS: pages and modules, components, permissions, tenancy, invites, hooks, realtime, quick actions and layout banners. - [Core › Pages and Modules](https://dms.antelopejs.com/docs/interfaces/core/pages-and-modules): Pages are controller classes registered into a navigation tree of modules and categories, with their own routes, layouts and extensions. - [Core › Components](https://dms.antelopejs.com/docs/interfaces/core/components): A component is a serializable description of a piece of UI, not a live object. - [Core › Permissions](https://dms.antelopejs.com/docs/interfaces/core/permissions): Permission ids are hierarchical strings built from the page tree: a page's `fullId`, then every component id in the position's path, then the action id when present. - [Core › Tenancy](https://dms.antelopejs.com/docs/interfaces/core/tenancy): The DMS serves several tenants from one backend. - [Core › Invites](https://dms.antelopejs.com/docs/interfaces/core/invites): An invite brings a person into a tenant by email. - [Core › Hooks](https://dms.antelopejs.com/docs/interfaces/core/hooks): A hook is a named platform event with a typed argument list and a typed result. - [Core › Realtime](https://dms.antelopejs.com/docs/interfaces/core/realtime): Publish events on topics from the backend, and how page-bound topics reach the browsers viewing the page. - [Core › Quick Actions](https://dms.antelopejs.com/docs/interfaces/core/quick-actions): A quick action is a shortcut the backend contributes to the dashboard's command palette: a labelled entry, grouped under a category, that points at a registered page, a table creation form, a table toolbar button, or… - [Core › Layout Banners](https://dms.antelopejs.com/docs/interfaces/core/layout-banners): A layout banner is a global message the backend adds under the dashboard header: a colored strip carrying a line of text and its link buttons, or a component of your frontend layer. - [Auth › Introduction](https://dms.antelopejs.com/docs/interfaces/auth/introduction): The auth domain answers who is calling: authentication decorators, tokens and sessions, users and external identities. - [Auth › Authentication](https://dms.antelopejs.com/docs/interfaces/auth/authentication): Authentication turns an incoming HTTP request into a `User` row. - [Auth › Tokens and Sessions](https://dms.antelopejs.com/docs/interfaces/auth/tokens-and-sessions): The interface issues four kinds of token, and it records a login as a row in the `sessions` table. - [Auth › Users](https://dms.antelopejs.com/docs/interfaces/auth/users): The `User` table is the identity record every other part of this interface points at: the authentication decorators resolve a request to one, the token generators sign for one, and `Session` rows reference one. - [Auth › External Identities](https://dms.antelopejs.com/docs/interfaces/auth/external-identities): An external identity binds an account a user owns on a login provider — GitHub, Google, whichever the deployment configures — to a `User` row, so that signing in through that provider resolves to the same account… - [Base › Introduction](https://dms.antelopejs.com/docs/interfaces/base/introduction): The base domain is the component vocabulary of the DMS: forms, tables, charts and cards, layout containers, data types and shared prop types. - [Base › Shared Types](https://dms.antelopejs.com/docs/interfaces/base/types): The `types` subpath holds the vocabulary every other part of the `base` domain is built from: the base props interface every component's props extend, the colour and size scales, the action targets a button or a row… - [Base › Forms](https://dms.antelopejs.com/docs/interfaces/base/forms): The Form builder, its fields and field groups, sections, validation and the save modes. - [Base › Tables](https://dms.antelopejs.com/docs/interfaces/base/tables): TableView over a data controller: columns, routes, row actions, displays, filters and the forms it opens. - [Base › Charts and Widgets](https://dms.antelopejs.com/docs/interfaces/base/charts-and-widgets): The chart module and the three card modules cover dashboard surfaces: a chart of a series, a single figure with a delta, a ranked list, and the period selector the others read their date range from. - [Base › Layout and Containers](https://dms.antelopejs.com/docs/interfaces/base/layout): Grid, stacks, tabs, guard, placeholder and the page layouts that hold every other component. - [Base › Data Types](https://dms.antelopejs.com/docs/interfaces/base/data-types): A data type is the single object that answers everything the DMS needs to know about one value: which input component edits it, which Zod schema validates it, which comparison modes its filter offers, and whether the… - [Base › Helpers](https://dms.antelopejs.com/docs/interfaces/base/helpers): A few small surfaces sit beside the components and support them: the `@Searchable` decorator that tells a list route which columns free-text search covers, the export-job runner behind every long download, the… - [Base › Display Blocks](https://dms.antelopejs.com/docs/interfaces/base/display-blocks): Seven builders cover the summaries and notices around a page's data: `StatGroup`, `KeyValueList`, `NavCardGrid`, `EmptyState`, `Banner`, `Card` and `CodeBlock`. - [Notifications › Introduction](https://dms.antelopejs.com/docs/interfaces/notifications/introduction): How backend code puts a message in a user's notification list: categories, subjects and sending. - [Notifications › Categories and Subjects](https://dms.antelopejs.com/docs/interfaces/notifications/categories-and-subjects): Every notification is filed under a subject, and every subject belongs to a category. - [Notifications › Sending Notifications](https://dms.antelopejs.com/docs/interfaces/notifications/sending): Build a notification, then send it to users, roles or everyone, with delivery rules and send options. - [HTML render › Introduction](https://dms.antelopejs.com/docs/interfaces/html-render/introduction): Turn a named template and a props object into an HTML string, rendered by the frontend and delivered by your code — as an email, a file or a response. - [HTML render › Built-in Emails](https://dms.antelopejs.com/docs/interfaces/html-render/built-in-emails): The DMS sends seven emails of its own. ## Frontend - [Introduction](https://dms.antelopejs.com/docs/frontend/introduction): What @antelopejs/dms-frontend is, how the frontend server sits between the browser and the DMS backend, and which release goes with which DMS. - [Installation](https://dms.antelopejs.com/docs/frontend/installation): Add the ajs dms CLI to a DMS project, wire the project scripts, and run the dashboard against a local backend. - [CLI › Overview](https://dms.antelopejs.com/docs/frontend/cli/overview): The ajs dms commands, the options every command accepts, and how the CLI prints, exits and checks for updates. - [CLI › dev](https://dms.antelopejs.com/docs/frontend/cli/dev): Run the dashboard with hot reload against a backend on the same machine, and what each kind of edit reloads. - [CLI › build](https://dms.antelopejs.com/docs/frontend/cli/build): Build the production frontend from the modules a backend serves, with the secrets it needs and the cache it never uses silently. - [CLI › start](https://dms.antelopejs.com/docs/frontend/cli/start): Serve the production build for a backend, with the session secret it was built with. - [CLI › prepare](https://dms.antelopejs.com/docs/frontend/cli/prepare): Generate the workspace, the module registry and the types without ever failing an install, or strictly before a CI type check. - [CLI › workspaces](https://dms.antelopejs.com/docs/frontend/cli/workspaces): List the generated workspaces with their backend, key, size and last use, as a table, tab-separated lines or JSON. - [CLI › clean](https://dms.antelopejs.com/docs/frontend/cli/clean): Remove the workspace of one backend, or every workspace after a confirmation. - [CLI › verify-source](https://dms.antelopejs.com/docs/frontend/cli/verify-source): Build and type-check unpublished frontend modules against this loader release and the DMS core layer, without a backend. - [Configuration](https://dms.antelopejs.com/docs/frontend/configuration): How the CLI loads .env files, the secrets it needs and where they come from, and every environment variable the CLI and the frontend server read. - [Frontend modules › Anatomy](https://dms.antelopejs.com/docs/frontend/frontend-modules/anatomy): The files of a frontend module, where each one runs, and how dms.frontend.ts registers pages, components, plugins and middleware. - [Frontend modules › App config](https://dms.antelopejs.com/docs/frontend/frontend-modules/app-config): How every layer's app/app.config.ts is merged before the modules set up, in which order, and how dev applies an edit without a reload. - [Frontend modules › Components](https://dms.antelopejs.com/docs/frontend/frontend-modules/components): How registered components get their global name, how a module prefix avoids collisions, how to replace another module's component, and the SVG caveat. - [Frontend modules › Auto-imports](https://dms.antelopejs.com/docs/frontend/frontend-modules/auto-imports): Declare which directories of a module are auto-imported across the application, in dms.frontend.build.ts. - [Frontend modules › Server routes](https://dms.antelopejs.com/docs/frontend/frontend-modules/server-routes): Serve routes from the frontend server in dms.server.ts, next to the session, with the event API, the defaults every route gets, and how to test them. - [Frontend modules › Sessions and sign-in](https://dms.antelopejs.com/docs/frontend/frontend-modules/sessions-and-sign-in): The auth hooks the module that owns sign-in registers, how page props and the interface language follow the session, and how a module flow opens a session through /auth/establish. - [Frontend modules › Route rules](https://dms.antelopejs.com/docs/frontend/frontend-modules/route-rules): Declare how a module's pages are cached, whether they are server-rendered, and which headers they carry. - [Frontend modules › Supported releases](https://dms.antelopejs.com/docs/frontend/frontend-modules/supported-releases): Declare the @antelopejs/dms-frontend releases a module runs on, and what the CLI does with that range. - [Frontend modules › E-mails](https://dms.antelopejs.com/docs/frontend/frontend-modules/emails): Register server-rendered e-mail templates in dms.email.ts, how their app config and translations are merged, and what a production build ships for them. - [Frontend modules › Testing](https://dms.antelopejs.com/docs/frontend/frontend-modules/testing): Test a frontend module outside the generated workspace, with the layer aliases, the module-route test server, and verify-source in CI. - [Rendering › Rendering model](https://dms.antelopejs.com/docs/frontend/rendering/model): How a page is server-rendered, hydrated and then navigated with Inertia, following a request from the browser to the backend and back. - [Rendering › Navigation](https://dms.antelopejs.com/docs/frontend/rendering/navigation): How the site layout travels as an Inertia once prop, which navigations skip the server, and how DmsLink prefetches. - [Rendering › Data loading](https://dms.antelopejs.com/docs/frontend/rendering/data-loading): useDmsAsyncData, useDmsFetch, useDmsPagedData and useDmsState, how a server render waits for and transfers their data, and how the browser revalidates it. - [Rendering › Icons](https://dms.antelopejs.com/docs/frontend/rendering/icons): How icons reach the page without a third-party request, how the server render draws them, and how to add an icon collection. - [Deployment › Production](https://dms.antelopejs.com/docs/frontend/deployment/production): Build and serve the dashboard for real traffic, with the secrets it needs, behind a TLS reverse proxy, and how to scale it out. - [Deployment › Workspaces and cache](https://dms.antelopejs.com/docs/frontend/deployment/workspaces-and-cache): How the CLI keys a workspace on a backend URL or a project, what a workspace holds, and when the cached manifest is used. - [Deployment › Routing and the backend proxy](https://dms.antelopejs.com/docs/frontend/deployment/routing-and-proxy): The order in which the frontend server picks the owner of a path, how modules declare backend prefixes, and what the proxy adds and relays. - [Deployment › Public endpoints](https://dms.antelopejs.com/docs/frontend/deployment/public-endpoints): Let callers outside the dashboard, such as a provider's webhook, reach a backend route through the frontend server without a session or an Origin. - [Deployment › Security](https://dms.antelopejs.com/docs/frontend/deployment/security): [object Object] - [Troubleshooting](https://dms.antelopejs.com/docs/frontend/troubleshooting): The errors and warnings the CLI and the frontend server print most often, what causes them, and how to fix them. ## Modules - [Modules](https://dms.antelopejs.com/docs/modules): Official modules add whole workspaces to the same dashboard. Install the ones your product needs; each one is documented by the repository that ships it. - [AI assistant › Introduction](https://dms.antelopejs.com/docs/modules/ai/introduction): An AI development assistant inside the DMS dashboard that builds pages, tables and code in your project, with every change reviewable and undoable. - [AI assistant › Installation](https://dms.antelopejs.com/docs/modules/ai/installation): Add the AI assistant to a DMS project, give it an agent, and open the chat. - [AI assistant › Configuration](https://dms.antelopejs.com/docs/modules/ai/configuration): The dms-ai module option, its environment variables, agent providers and remote access. - [AI assistant › Usage › Chat](https://dms.antelopejs.com/docs/modules/ai/usage/chat): Ask the assistant for a change from any page, approve what it asks, and review or undo each change set from the conversation. - [AI assistant › Usage › Overview](https://dms.antelopejs.com/docs/modules/ai/usage/overview): Check the assistant's status, what it did over a period, how each action was allowed, and the latest change sets. - [AI assistant › Usage › Changes](https://dms.antelopejs.com/docs/modules/ai/usage/changes): Review each change set the assistant made, with its diff, and undo or redo it. - [AI assistant › Usage › Activity](https://dms.antelopejs.com/docs/modules/ai/usage/activity): Audit every tool call the assistant made, who allowed it and what came out, and export it. - [AI assistant › Usage › Skills](https://dms.antelopejs.com/docs/modules/ai/usage/skills): See the skills loaded into the agent, where each comes from, and spot name conflicts. - [AI assistant › Usage › Settings](https://dms.antelopejs.com/docs/modules/ai/usage/settings): [object Object] - [AI assistant › Extending](https://dms.antelopejs.com/docs/modules/ai/extending): Teach the assistant about your module with skills, give it the Builder, and read its owner-only routes. - [AI assistant › FAQ](https://dms.antelopejs.com/docs/modules/ai/faq): Answers to common questions about the AI assistant. - [AI assistant › Preview constraints](https://dms.antelopejs.com/docs/modules/ai/preview-constraints): Payload limits, image handling and the security boundary of AI block previews and custom sketches. - [Builder › Introduction](https://dms.antelopejs.com/docs/modules/builder/introduction): Edit the pages, tables and data sources of a DMS project from the dashboard, with every change written as TypeScript that compiles. - [Builder › Installation](https://dms.antelopejs.com/docs/modules/builder/installation): Add the builder to a DMS project and open the editor on any page. - [Builder › Configuration](https://dms.antelopejs.com/docs/modules/builder/configuration): Every option of the dms-builder module. - [Builder › Usage › Page editor](https://dms.antelopejs.com/docs/modules/builder/usage/page-editor): Open the builder on a page, add blocks from the catalog, arrange them on the live canvas and set them up in the inspector. - [Builder › Usage › Pages and menu](https://dms.antelopejs.com/docs/modules/builder/usage/pages): Create pages from a layout, move them in the menu, and organise categories. - [Builder › Usage › Tables](https://dms.antelopejs.com/docs/modules/builder/usage/tables): Create a table with its fields and API, tune what each field does, and see which pages read it. - [Builder › Usage › Data sources](https://dms.antelopejs.com/docs/modules/builder/usage/data-sources): Give a chart, a KPI or a top list its numbers by describing them, and let the builder write the query and its route. - [Builder › Usage › Save, review and access](https://dms.antelopejs.com/docs/modules/builder/usage/saving-and-access): Review every unsaved change in plain words, understand what Save checks, and see who will see each block. - [Builder › Extending](https://dms.antelopejs.com/docs/modules/builder/extending): Drive the builder from another module through @antelopejs/interface-dms-builder, or from any client through its HTTP API. - [Builder › FAQ](https://dms.antelopejs.com/docs/modules/builder/faq): Answers to common questions about the builder. - [Builder › Interface reference › DMS Builder Documentation](https://dms.antelopejs.com/docs/modules/builder/reference/introduction): Use @antelopejs/interface-dms-builder to create and edit DMS pages from a backend module or a tool. The operations write ordinary TypeScript into your project; there is no separate database of page definitions. - [Builder › Interface reference › Addressing and Structure](https://dms.antelopejs.com/docs/modules/builder/reference/addressing-and-structure) - [Builder › Interface reference › Catalog](https://dms.antelopejs.com/docs/modules/builder/reference/catalog) - [Builder › Interface reference › Page Operations](https://dms.antelopejs.com/docs/modules/builder/reference/page-operations) - [Builder › Interface reference › Resources](https://dms.antelopejs.com/docs/modules/builder/reference/resources) - [Builder › Interface reference › Queries](https://dms.antelopejs.com/docs/modules/builder/reference/queries) - [Builder › Interface reference › Value Encodings](https://dms.antelopejs.com/docs/modules/builder/reference/values) - [Builder › Interface reference › Results and Errors](https://dms.antelopejs.com/docs/modules/builder/reference/results-and-errors) - [Builder › Interface reference › Drafts and Preview](https://dms.antelopejs.com/docs/modules/builder/reference/drafts-and-preview): Use PreviewLayout to inspect a page draft without writing files, then SetPageBlocks to save its complete block tree in one transaction. A successful preview does not mean the draft compiles: the write performs that check. - [Builder › Interface reference › A Chart Without Code](https://dms.antelopejs.com/docs/modules/builder/reference/a-chart-without-code): Build an editor that lets someone choose a table, a measure and a grouping, then save a chart without writing its data route by hand. This walkthrough follows the interface calls behind the visual builder; it is not a standalone script. - [Database › Introduction](https://dms.antelopejs.com/docs/modules/database/introduction): Inspect, browse, query and fix the data of every schema your modules register, from the DMS dashboard. - [Database › Installation](https://dms.antelopejs.com/docs/modules/database/installation): Add the Database console to an AntelopeJS project that already runs the DMS and a database. - [Database › Configuration](https://dms.antelopejs.com/docs/modules/database/configuration): Every option of the dms-database module, set in antelope.config.ts. - [Database › Usage › Overview](https://dms.antelopejs.com/docs/modules/database/usage/overview): Check the database connection, see every schema at a glance and jump to the largest tables and the latest queries. - [Database › Usage › Schemas](https://dms.antelopejs.com/docs/modules/database/usage/schemas): List every table your modules register, filter them, and inspect columns, indexes, relations and a sample row. - [Database › Usage › Diagram](https://dms.antelopejs.com/docs/modules/database/usage/diagram): See the tables and relations of a schema, arrange them, and leave notes for the team. - [Database › Usage › Data browser](https://dms.antelopejs.com/docs/modules/database/usage/data-browser): Browse the rows of any table in any instance, stage edits, review them and save with a short undo window. - [Database › Usage › Query console](https://dms.antelopejs.com/docs/modules/database/usage/query-console): Write and run AQL against any schema, keep a history, save and share queries, and confirm every write after a dry run. - [Database › Extending](https://dms.antelopejs.com/docs/modules/database/extending): How your tables show up in the console, the Table watch automation trigger, and how roles and links reach the module's pages. - [Database › FAQ](https://dms.antelopejs.com/docs/modules/database/faq): Answers to common questions and problems with the Database console. - [API › Introduction](https://dms.antelopejs.com/docs/modules/api/introduction): Monitor, explore and test the HTTP API of your AntelopeJS project from the DMS dashboard. - [API › Installation](https://dms.antelopejs.com/docs/modules/api/installation): Add the API console to an AntelopeJS project that runs the DMS, an API provider and a database. - [API › Configuration](https://dms.antelopejs.com/docs/modules/api/configuration): Every option of the dms-api module, its default, and how the API settings page overrides it. - [API › Usage › Overview](https://dms.antelopejs.com/docs/modules/api/usage/overview): Read the health verdict of your API, the routes needing attention, the slowest routes, errors and traffic for a period. - [API › Usage › Request logs](https://dms.antelopejs.com/docs/modules/api/usage/request-logs): Search and filter every captured request, then open one to read its error, timing, headers and bodies, or replay it. - [API › Usage › Routes](https://dms.antelopejs.com/docs/modules/api/usage/routes): Browse every registered route with its health, read its statistics and inferred contract, and call it from the Tester. - [API › Usage › API settings](https://dms.antelopejs.com/docs/modules/api/usage/settings): Choose which routes the console watches, how long it keeps data, what a request log captures and when a route needs attention. - [API › Extending](https://dms.antelopejs.com/docs/modules/api/extending): Automation nodes, role permissions on the console's blocks, and how routes from your modules are classified and documented. - [API › FAQ](https://dms.antelopejs.com/docs/modules/api/faq): Answers to common questions about the API console. - [Automation › Introduction](https://dms.antelopejs.com/docs/modules/automation/introduction): Build procedures as node graphs that react to schedules, webhooks and DMS events, and watch every run from the dashboard. - [Automation › Installation](https://dms.antelopejs.com/docs/modules/automation/installation): Add the automation module to an AntelopeJS DMS project. - [Automation › Configuration](https://dms.antelopejs.com/docs/modules/automation/configuration): Every option of the dms-automation module, from run retention to clustering. - [Automation › Usage › Overview](https://dms.antelopejs.com/docs/modules/automation/usage/overview): See at a glance which procedures fail, how runs went over a period, and start a new procedure from a recipe. - [Automation › Usage › Procedures](https://dms.antelopejs.com/docs/modules/automation/usage/procedures): List every procedure with its state, what starts it, its last runs and success rate; create, import, pause and duplicate them. - [Automation › Usage › Builder](https://dms.antelopejs.com/docs/modules/automation/usage/builder): Draw a procedure as a graph of triggers, actions, flow and data nodes, test it on a payload and save it. - [Automation › Usage › Run history and trace](https://dms.antelopejs.com/docs/modules/automation/usage/runs): Browse every run, open one to see its failure, path, payload and logs, re-run it, and read its trace step by step. - [Automation › Usage › Library](https://dms.antelopejs.com/docs/modules/automation/usage/library): Browse every trigger, action, data node, flow helper and template, see where each is used, and turn types on or off. - [Automation › Extending](https://dms.antelopejs.com/docs/modules/automation/extending): Declare your own triggers, actions and data nodes from any module with @antelopejs/interface-dms-automation, ship procedures as code, and start them from code. - [Automation › FAQ](https://dms.antelopejs.com/docs/modules/automation/faq): Answers to common questions about procedures, webhooks, runs and clustering. - [Automation › Interface reference](https://dms.antelopejs.com/docs/modules/automation/reference): Register triggers, asynchronous actions and synchronous data nodes, ship procedures as code, and invoke saved procedures. - [SaaS › Introduction](https://dms.antelopejs.com/docs/modules/saas/introduction): Turn a DMS project into a SaaS, with self-service sign-up, plans, Stripe billing, workspace settings and a back office for the platform owner. - [SaaS › Installation](https://dms.antelopejs.com/docs/modules/saas/installation): Add the SaaS module to a DMS project, connect Stripe, and run the playground with its data set. - [SaaS › Configuration](https://dms.antelopejs.com/docs/modules/saas/configuration): Every option of the SaaS module, how registration asks for a card, and which plan a workspace falls back to. - [SaaS › Usage › Public screens](https://dms.antelopejs.com/docs/modules/saas/usage/public-screens): The pricing, registration, sign-in completion and legal pages visitors see before they have a workspace. - [SaaS › Usage › Workspace settings](https://dms.antelopejs.com/docs/modules/saas/usage/workspace-settings): What workspace owners and members see in Settings › Workspace, the workspace switcher, billing and plan changes. - [SaaS › Usage › Dashboard](https://dms.antelopejs.com/docs/modules/saas/usage/dashboard): The platform owner's overview of recurring revenue, workspace health and billing issues. - [SaaS › Usage › Workspaces](https://dms.antelopejs.com/docs/modules/saas/usage/workspaces): Every customer workspace with its subscription, and the operator actions on one workspace. - [SaaS › Usage › Users and segments](https://dms.antelopejs.com/docs/modules/saas/usage/users-and-segments): Every account of the platform, and rule-based user segments. - [SaaS › Usage › Plans and features](https://dms.antelopejs.com/docs/modules/saas/usage/plans): The plan catalogue, the plan editor, features and limits, and plan migrations. - [SaaS › Usage › Invoices and credit notes](https://dms.antelopejs.com/docs/modules/saas/usage/invoices): Every invoice and credit note issued across workspaces. - [SaaS › Usage › Billing rules & legal](https://dms.antelopejs.com/docs/modules/saas/usage/billing-rules): What happens when a payment fails, free workspace limits, tax, refund policy and the legal documents customers accept. - [SaaS › Extending](https://dms.antelopejs.com/docs/modules/saas/extending): Plug your modules into dms-saas through its interface, replace the public screens, capture sign-up data, bill usage, preview invoices and add workspace pages. - [SaaS › FAQ](https://dms.antelopejs.com/docs/modules/saas/faq): Answers to the common questions and problems with the SaaS module, and the database fixes an upgrade needs. - [SaaS › Stripe](https://dms.antelopejs.com/docs/modules/saas/stripe): The Stripe API version and webhooks, how a workspace starts a paid plan, and how plans stay in sync with Stripe products and prices. - [SaaS › Operations](https://dms.antelopejs.com/docs/modules/saas/operations): How operator actions, plan migrations, checkouts, webhooks and workspace creation stay safe under retries and crashes, and how to reconcile them. - [SaaS › Interface reference](https://dms.antelopejs.com/docs/modules/saas/reference): Supported backend imports and side-effect boundaries for modules extending DMS SaaS. - [SaaS › Interface reference › Billing](https://dms.antelopejs.com/docs/modules/saas/reference/billing): Authorized customer balances and invoice previews, and republishing derived billing state after direct writes. - [SaaS › Interface reference › Lifecycle and usage](https://dms.antelopejs.com/docs/modules/saas/reference/lifecycle-and-usage): Registration extras, durable tenant lifecycle consumers and idempotent invoice usage providers. - [SaaS › Interface reference › Pages, plans and data](https://dms.antelopejs.com/docs/modules/saas/reference/pages-plans-data): Stable page extension anchors, plan projections and safe use of the canonical data exports. - [Translation › Introduction](https://dms.antelopejs.com/docs/modules/lang/introduction): Manage every translation of your DMS and of the apps around it, from one place, with coverage at a glance. - [Translation › Installation](https://dms.antelopejs.com/docs/modules/lang/installation): Add the Lang module to an AntelopeJS DMS project and open it in the dashboard. - [Translation › Configuration](https://dms.antelopejs.com/docs/modules/lang/configuration): Every option of the Lang module, and the frontend flag that makes your app's translations writable. - [Translation › Usage › Overview](https://dms.antelopejs.com/docs/modules/lang/usage/overview): See how complete each language of a workspace is and where the gaps are. - [Translation › Usage › Translation matrix](https://dms.antelopejs.com/docs/modules/lang/usage/translation-matrix): Edit every key side by side across languages, filter the gaps and export the workspace. - [Translation › Usage › Translation queue](https://dms.antelopejs.com/docs/modules/lang/usage/translation-queue): Translate one language one key at a time, with context and keyboard shortcuts. - [Translation › Usage › Workspaces](https://dms.antelopejs.com/docs/modules/lang/usage/workspaces): Compare every translation workspace, create new ones for your apps and import backups. - [Translation › Usage › Workspace settings](https://dms.antelopejs.com/docs/modules/lang/usage/workspace-settings): Rename a workspace, manage its languages and copy ready-made snippets to load it in your app. - [Translation › Extending](https://dms.antelopejs.com/docs/modules/lang/extending): Ship translations from your own module, load a workspace in another app, and call the Lang HTTP API. - [Translation › FAQ](https://dms.antelopejs.com/docs/modules/lang/faq): Answers to the common questions and problems with the Lang module. - [Mailing › Introduction](https://dms.antelopejs.com/docs/modules/mailing/introduction): Transactional e-mail for the DMS, with a block editor, drafts and versions, a send log and delivery metrics. - [Mailing › Installation](https://dms.antelopejs.com/docs/modules/mailing/installation): Add the Mailing module and an e-mail provider to an AntelopeJS DMS project. - [Mailing › Configuration](https://dms.antelopejs.com/docs/modules/mailing/configuration): The module option in antelope.config.ts and every workspace setting of the Settings page. - [Mailing › Usage › Overview](https://dms.antelopejs.com/docs/modules/mailing/usage/overview): Read delivery and engagement figures for every e-mail your workspace sends. - [Mailing › Usage › Templates](https://dms.antelopejs.com/docs/modules/mailing/usage/templates): Browse your e-mail templates by category, create them from starters and manage their lifecycle. - [Mailing › Usage › Editor](https://dms.antelopejs.com/docs/modules/mailing/usage/editor): Design a template with blocks, typed variables and test data, then test it and publish a version. - [Mailing › Usage › Sends](https://dms.antelopejs.com/docs/modules/mailing/usage/sends): Follow every e-mail your workspace sent, see what the provider reported and fix problems. - [Mailing › Usage › Settings](https://dms.antelopejs.com/docs/modules/mailing/usage/settings): Set the sender, the delivery guards, the provider webhook, the log retention and the template categories. - [Mailing › Usage › Suppression list](https://dms.antelopejs.com/docs/modules/mailing/usage/suppression-list): The addresses that receive nothing any more, and how they get on and off the list. - [Mailing › Extending](https://dms.antelopejs.com/docs/modules/mailing/extending): Send templates from code, ship templates as code, import past sends, report provider events, relay a provider webhook, and plug Mailing into automations. - [Mailing › FAQ](https://dms.antelopejs.com/docs/modules/mailing/faq): Answers to the common questions and problems with the Mailing module. - [Mailing › Interface reference](https://dms.antelopejs.com/docs/modules/mailing/reference): Consumer contract for sending templates and recording provider events with the DMS mailing interface. - [Marketing › Introduction](https://dms.antelopejs.com/docs/modules/marketing/introduction): First-party, cookieless marketing analytics for the DMS, with traffic dashboards, conversion funnels, A/B tests and click heatmaps. - [Marketing › Installation](https://dms.antelopejs.com/docs/modules/marketing/installation): Install the module in a DMS project, embed the tracker on a visitor site, and run the development playground. - [Marketing › Configuration](https://dms.antelopejs.com/docs/modules/marketing/configuration): Every module option in antelope.config.ts, the DMS and API settings the module relies on, and the runtime Settings page. - [Marketing › Usage › Overview](https://dms.antelopejs.com/docs/modules/marketing/usage/overview): Traffic volume, session quality, devices and top lists for one website over a chosen period. - [Marketing › Usage › Acquisition](https://dms.antelopejs.com/docs/modules/marketing/usage/acquisition): [object Object] - [Marketing › Usage › Pages & heatmaps](https://dms.antelopejs.com/docs/modules/marketing/usage/pages-and-heatmaps): Clicks and scroll depth drawn over a snapshot of any tracked page. - [Marketing › Usage › Funnels & A/B tests](https://dms.antelopejs.com/docs/modules/marketing/usage/funnels): Conversion journeys with per-step drop-off, optionally split into server-assigned variations scored with significance. - [Marketing › Usage › Websites](https://dms.antelopejs.com/docs/modules/marketing/usage/websites): Register the sites to track, follow their state, and install the tracker with the guided three-step guide. - [Marketing › Usage › Settings](https://dms.antelopejs.com/docs/modules/marketing/usage/settings): The collection switch, the retention periods and the heatmap sampling, for every website of the deployment. - [Marketing › Usage › Tracker & custom events](https://dms.antelopejs.com/docs/modules/marketing/usage/tracking): What the cookieless tracker records, and its JavaScript API for custom events and A/B variations. - [Marketing › Extending](https://dms.antelopejs.com/docs/modules/marketing/extending): Read heatmaps and ship websites, funnels and history from another module, report events and variations from page code, and call the marketing HTTP API. - [Marketing › FAQ](https://dms.antelopejs.com/docs/modules/marketing/faq): Answers to the common questions and problems with the Marketing module. - [Marketing › Architecture](https://dms.antelopejs.com/docs/modules/marketing/architecture): Data flow, tenancy, auth model, event contract, HTTP surface, snapshot and assignment contracts, and phasing. - [Marketing › Interface reference](https://dms.antelopejs.com/docs/modules/marketing/reference): Read a tenant-scoped click heatmap, declare websites and funnels, and import historical analytics from another backend module. - [Media › Introduction](https://dms.antelopejs.com/docs/modules/media/introduction): An asset library for the DMS, with folders, per-folder permissions, direct-to-storage uploads, stable delivery URLs, image sizes and light image editing. - [Media › Installation](https://dms.antelopejs.com/docs/modules/media/installation): Add the Media module to a DMS project, give it a file storage, and allow the dashboard's origin for direct uploads. - [Media › Configuration](https://dms.antelopejs.com/docs/modules/media/configuration): Every option of the Media module, the image size presets, and the upload refusals they produce. - [Media › Usage › Overview](https://dms.antelopejs.com/docs/modules/media/usage/overview): What is new in the library, what needs attention, and how much space it uses. - [Media › Usage › Library](https://dms.antelopejs.com/docs/modules/media/usage/library): Browse, search, upload and organise files in the Finder-style explorer. - [Media › Usage › Uploads](https://dms.antelopejs.com/docs/modules/media/usage/uploads): Follow uploads in progress and the recent upload batches. - [Media › Usage › File](https://dms.antelopejs.com/docs/modules/media/usage/file): The page of one file, with its details, delivery links, history and usage. - [Media › Usage › Image editor](https://dms.antelopejs.com/docs/modules/media/usage/image-editor): Crop and rotate an image on the server, save it in place or as a copy, and revert to the original. - [Media › Usage › Activity](https://dms.antelopejs.com/docs/modules/media/usage/activity): Everything that happened in the library lately. - [Media › Usage › Image sizes](https://dms.antelopejs.com/docs/modules/media/usage/image-sizes): The named image sizes rendered on first request and served from stable links. - [Media › Usage › Asset field](https://dms.antelopejs.com/docs/modules/media/usage/asset-field): How members pick and upload files from your own pages, through the AssetType field. - [Media › Extending](https://dms.antelopejs.com/docs/modules/media/extending): Add asset fields to your pages, bind them to folders with the right permissions, ship folders and files as code, and use the media HTTP API and delivery URLs. - [Media › FAQ](https://dms.antelopejs.com/docs/modules/media/faq): Answers to the common questions and problems with the Media module, and its current limits. - [Media › Interface reference](https://dms.antelopejs.com/docs/modules/media/reference): Asset fields, folder binding lifecycle, declared content and permission contracts for DMS consumers. ## Optional - [DMS modules](https://dms.antelopejs.com/modules): overview of the optional modules - [AntelopeJS Framework](https://framework.antelopejs.com) - [AntelopeJS Cloud](https://cloud.antelopejs.com) - [GitHub](https://github.com/antelopejs)