Creating a Project
on this page
The easiest way to set up a new Launchpad project (or add Launchpad to an existing one) is with the create-launchpad project generator.
Quick Start
npm create @bluecadet/launchpadThis command will:
- Ask which directory to set up Launchpad in (defaults to the current directory)
- Ask which plugins you need (content, monitor, scheduler, and optional observability)
- Ask which content sources and transforms to configure
- Generate or update the necessary files
Then install the dependencies it added:
npm installWhat Gets Generated
launchpad.config.ts
The main configuration file. If a launchpad.config.ts already exists it will not be overwritten — the tool skips it and you can update it manually.
Optional observability
Observability is not selected by default. If you opt in, the generated config sends logs and metrics to an OTLP endpoint only when LAUNCHPAD_OBSERVABILITY_ENDPOINT is set:
LAUNCHPAD_OBSERVABILITY_ENDPOINT=https://telemetry.example.com
# Optional: leave blank for unauthenticated requests.
LAUNCHPAD_OBSERVABILITY_TOKEN=The token is optional: if it is missing, empty, or contains only whitespace, requests are sent without authentication. A nonblank token is passed through unchanged.
The generator does not create an environment file, secrets, or a Bluecadet endpoint. Treat the endpoint and token as deployment secrets. If the endpoint is absent, the generated config omits the observability plugin rather than sending data to a default service.
The generated destination uses OTLP/HTTP JSON by default. It includes a commented encoding: 'protobuf' option for selecting binary OTLP/HTTP protobuf when your recipient supports it; this is not gRPC. Enabling protobuf does not require another environment variable or generator prompt.
Once the endpoint is set, logs use the controller’s retained canonical JSONL with per-destination checkpoints by default. A new destination starts at the oldest retained record: this backfill can increase ingestion costs, and the backend may reject old timestamps. The generated configuration includes a commented logStorage: { type: 'memory' } opt-out for ephemeral delivery. The plugin still requires LAUNCHPAD_OBSERVABILITY_ENDPOINT before it is added. Review the delivery configuration before enabling export.
No client, project, installation, environment, or organization value is required. The generated config includes a commented example that you can edit when you want a custom service name:
resource: { 'service.name': 'my-launchpad-service' },You can add other flat string, finite number, or boolean resource attributes to that record when your deployment policy requires them. If resource is omitted, Launchpad defaults service.name to launchpad and generates service.instance.id at runtime. See Observability for the data sent and privacy limits.
package.json
If no package.json exists, one is created with the appropriate dependencies (plus @types/node as a dev dependency) and scripts.
If one already exists, the tool merges into it:
- Adds any missing dependencies, including
@types/nodeas a dev dependency (without changing existing version pins) - Adds
content,start, andstopscripts (without overwriting scripts you already have)
tsconfig.json
If no tsconfig.json exists, a minimal ESM-compatible one is generated:
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true
}
}If one already exists, the tool validates it for ESM compatibility and patches any easily-fixable gaps (like a missing esModuleInterop). It will warn you if it finds settings it cannot safely auto-fix (e.g. a "module": "CommonJS" setting that Launchpad is not compatible with).
.gitignore
With your confirmation, the tool adds Launchpad-specific entries (node_modules/, dist/, .launchpad/, .downloads/, .logs/) to your .gitignore. If entries are already present, they are not duplicated.
Re-running
You can run npm create @bluecadet/launchpad again in the same directory to add more plugins. package.json and tsconfig.json will be merged as described above. The existing launchpad.config.ts will be left untouched — add the new plugins manually.
Manual Setup
Prefer to set things up by hand? See Getting Started for step-by-step installation instructions.