My App
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

OptionTypeDescription
storageBoardStorageBoard, page, element, member, and share link persistence
assetStorageAssetStorageFile upload and retrieval
eventLogStorageEventLogStorageEvent logging and snapshot management
authGuardBoardAuthGuardAuthentication for HTTP and WebSocket requests

limits

OptionDefaultDescription
maxElementsPerPage10,000Maximum elements allowed on a single page
maxPagesPerBoard100Maximum pages per board
maxAssetSizeMb25Maximum file size for a single upload (MB)
maxBoardSizeMb100Maximum total asset storage per board (MB)

sync

OptionDefaultDescription
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

OptionDefaultDescription
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 CRUD
  • PermissionService — Role-based access control
  • AssetService — Upload with validation
  • ExportService — PNG/SVG/PDF export
  • All four storage/auth adapters as injectable providers

Controllers:

  • BoardController/boards endpoints
  • PageController/boards/:boardId/pages endpoints
  • AssetController/boards/:boardId/assets endpoints
  • ExportController/boards/:boardId/export endpoint
  • ShareController/boards/:boardId/shares endpoints

Exports: All services and adapters are exported for use in other modules.

On this page