@antelopejs/interface-dms
The public contracts of the AntelopeJS DMS: pages and components, permissions and tenancy, authentication, notifications and HTML rendering.
What it does
- Declares pages, categories, modules and page extensions (
/page), and the blocks they carry: forms, tables, charts and layouts (/base). - Registers permissions, guards routes, and scopes data to a tenant (
/permissions,/guards,/tenant-scoped-model…). - Authenticates requests and manages users, sessions and external identities (
/auth). - Declares notification categories and sends notifications (
/notifications), and renders HTML templates server-side (/html-render). - Lets a module compile against the contract rather than against the implementation,
@antelopejs/dms.
Install
Add the interface to the module that extends the DMS:
pnpm add @antelopejs/interface-dms
Depend on it with a range wide enough that every module shares one installed copy, and never bundle or vendor it: the host and every module must resolve the same installed copy, since the package holds live registries. @antelopejs/core fails at startup with Incompatible interface package resolution when a module resolves another copy.
Quick start
import { PageController, RegisterPage, pagesCategory } from "@antelopejs/interface-dms/page";
import { KpiCard } from "@antelopejs/interface-dms/base/kpi-card";
@RegisterPage()
export class SalesPage extends PageController("sales", {
displayName: "Sales",
icon: "i-ph-chart-line",
category: pagesCategory,
}) {
static revenue = KpiCard({ title: "Revenue", fetchUrl: "/api/sales/revenue" });
}
| Import | What it holds |
|---|---|
@antelopejs/interface-dms | the core surface: pages, permissions, tenancy, hooks |
@antelopejs/interface-dms/<module> | one module of it: /page, /permissions, /hooks, /db… |
@antelopejs/interface-dms/auth | authentication: users, sessions, external identities |
@antelopejs/interface-dms/base | the component library: forms, tables, charts, layouts |
@antelopejs/interface-dms/notifications | notification categories, subjects and delivery |
@antelopejs/interface-dms/html-render | server-side HTML templates |
Compatibility
| Package | Supported | Tested with |
|---|---|---|
@antelopejs/interface-api | >=0.3.0 <1.0.0 | 0.2.0 |
@antelopejs/interface-api-util | >=0.1.3 <1.0.0 | 0.3.0 |
@antelopejs/interface-core | >=0.4.0 <1.0.0 | 0.4.0 |
@antelopejs/interface-data-api | >=0.6.0 <1.0.0 | 0.6.0 |
@antelopejs/interface-database | >=0.1.11 <1.0.0 | 0.3.0 |
@antelopejs/interface-database-decorators | >=0.1.12 <1.0.0 | 0.2.0 |
@antelopejs/interface-file-storage | >=0.1.4 <1.0.0 | 0.1.4 |
A @antelopejs/dms release implements the @antelopejs/interface-dms range listed in the compatibility block of the dms README.
Documentation
- The DMS interface: the canonical consumer reference, shipped with this package and published at docs/interfaces
- Core, Auth, Base, Notifications, HTML Render
- Pages and components: the task-by-task guide
An importable file is not necessarily a supported API. Paths under internal/, symbols tagged @internal, and internal namespaces are implementation wiring, even when the wildcard export makes them reachable. Use the public declarations and contracts documented here.
Contributing
This package lives in the AntelopeJS/dms pnpm workspace, next to the runtime that implements it. Read CONTRIBUTING.md, the repository README and AGENTS.md, which covers what is public and what is internal. Release this package (Release DMS interface) before a @antelopejs/dms version that needs it.