@ba-sharks/platform-bootstrapper
v2.6.1
Published
Reusable Platform Bootstrap with configurable data path and UI parameters
Readme
@sharks/platform-bootstrapper
Reusable PAE (Platform Application Engine) bootstrap library with configurable data path and UI parameters.
Installation
npm install @sharks/platform-bootstrapperUsage
import { join } from 'node:path';
import { bootstrapApp } from '@bluealba/platform-bootstrapper';
import { name, version } from '../package.json';
bootstrapApp({
dataPath: join(process.cwd(), 'src', 'data'),
packageName: name,
packageVersion: version,
});This starts an Express server on the configured port, waits a configurable delay, then synchronizes the platform using the provided data path.
Health check
The server exposes a health endpoint at GET /health that returns { "healthy": "ok" }.
API
bootstrapApp(config: BootstrapAppConfig): Express
Creates and starts the bootstrap application.
| Parameter | Type | Required | Description |
| ---------------- | ---------- | -------- | -------------------------------------------------------- |
| dataPath | string | Yes | Absolute path to the data folder with bootstrap config |
| packageName | string | Yes | Package name used for logging |
| packageVersion | string | Yes | Package version used for logging |
| excludeModules | string[] | No | Module names to exclude from bootstrapping (default [])|
Environment Variables
| Variable | Default | Description |
| ----------------------- | ------------- | --------------------------------------------------------------------------- |
| PORT | 3303 | Port the server listens on |
| WAIT_TIME | 1000 | Milliseconds to wait before starting the bootstrap sync |
| CATALOG_OVERRIDES_FILE| "" | Path to a JSON file with module overrides (merged by module name) |
| SYNC_STRATEGY | "" | Set to DESTRUCTIVE to use destructive sync strategy |
| UI_MODULE_NAME | "" | Module name that receives UI_CONFIG_* environment variables |
| SERVICE_ACCESS_NAME | "bootstrap" | Module owner name used for scoped platform access |
Module overrides via CATALOG_OVERRIDES_FILE
Point CATALOG_OVERRIDES_FILE to a JSON file containing an array of partial module objects. Each entry is deep-merged into the matching module by name:
[
{
"name": "my-module",
"ui": {
"url": "http://localhost:3000"
}
}
]UI config injection via UI_CONFIG_*
Any environment variable matching UI_CONFIG_<KEY> is parsed as JSON and injected into ui.customProps.config.<KEY> of the module identified by UI_MODULE_NAME.
UI_MODULE_NAME=shell-app
UI_CONFIG_apiUrl='"https://api.example.com"'
UI_CONFIG_featureFlags='{"darkMode":true}'Requirements
- Node.js >= 22
License
PolyForm Noncommercial 1.0.0
