BoardKitBackend
Module Setup
BoardModule.register() configuration and options
BoardModule.register()
The BoardModule is a NestJS dynamic module. Register it with BoardModule.register(options) in your application module.
import { Module } from '@nestjs/common';
import { BoardModule } from '@hfu.digital/boardkit-nestjs';
@Module({
imports: [
BoardModule.register({
// Required
storage: myBoardStorage,
assetStorage: myAssetStorage,
eventLogStorage: myEventLogStorage,
authGuard: myAuthGuard,
// Optional
limits: { maxElementsPerPage: 5000 },
sync: { batchPersistIntervalMs: 2000 },
deployment: { mode: 'self-hosted' },
}),
],
})
export class AppModule {}BoardModuleOptions
interface BoardModuleOptions {
// Required
storage: BoardStorage;
assetStorage: AssetStorage;
eventLogStorage: EventLogStorage;
authGuard: BoardAuthGuard;
// Optional
realtimeTransport?: RealtimeTransport;
limits?: Partial<{
maxElementsPerPage: number;
maxPagesPerBoard: number;
maxAssetSizeMb: number;
maxBoardSizeMb: number;
}>;
sync?: Partial<{
batchPersistIntervalMs: number;
presenceTtlMs: number;
reconnectWindowMs: number;
maxMessageRatePerUser: number;
}>;
deployment?: {
mode: 'self-hosted' | 'managed';
syncServiceUrl?: string;
};
}Required Options
| Option | Type | Description |
|---|---|---|
storage | BoardStorage | Board, page, element, member, and share link persistence |
assetStorage | AssetStorage | File upload and retrieval |
eventLogStorage | EventLogStorage | Event logging and snapshot management |
authGuard | BoardAuthGuard | Authentication for HTTP and WebSocket requests |
limits
| Option | Default | Description |
|---|---|---|
maxElementsPerPage | 10,000 | Maximum elements allowed on a single page |
maxPagesPerBoard | 100 | Maximum pages per board |
maxAssetSizeMb | 25 | Maximum file size for a single upload (MB) |
maxBoardSizeMb | 100 | Maximum total asset storage per board (MB) |
sync
| Option | Default | Description |
|---|---|---|
batchPersistIntervalMs | -- | Interval for flushing pending mutations to storage |
presenceTtlMs | -- | Time-to-live for presence data |
reconnectWindowMs | -- | Window for accepting reconnections with delta sync |
maxMessageRatePerUser | -- | Maximum WebSocket messages per user per second |
deployment
| Option | Default | Description |
|---|---|---|
mode | 'self-hosted' | Deployment mode |
syncServiceUrl | -- | URL of external sync service (managed mode only) |
realtimeTransport
Override the default Socket.IO transport with a custom RealtimeTransport implementation (e.g., for custom WebSocket servers or message brokers).
What Gets Registered
Calling BoardModule.register() registers:
Providers:
BoardService— Board and page CRUDPermissionService— Role-based access controlAssetService— Upload with validationExportService— PNG/SVG/PDF export- All four storage/auth adapters as injectable providers
Controllers:
BoardController—/boardsendpointsPageController—/boards/:boardId/pagesendpointsAssetController—/boards/:boardId/assetsendpointsExportController—/boards/:boardId/exportendpointShareController—/boards/:boardId/sharesendpoints
Exports: All services and adapters are exported for use in other modules.