BomLoom

Architecture

How BomLoom is structured and the principles behind it.

Repository layout

PathContent
apps/backendNestJS server: REST API, persistence, serves the web app in production.
apps/frontendVue single-page application.
packages/apiOpenAPI specification and the types and schemas generated from it.
docsThis documentation (Fumadocs), published to docs.bomloom.com.
dockerContainer image and local development services.

API first

packages/api/openapi.yaml (OpenAPI 3.1) is the single source of truth for the HTTP API. Changes start in the specification; pnpm api:generate then produces:

  • TypeScript types consumed by the frontend through openapi-fetch,
  • Zod schemas the backend uses to validate requests (ZodValidationPipe).

Generated files are committed, so changes to the API are visible in reviews.

Plugins and adapters

Integrations are implemented behind adapters so they can be added or swapped without touching the core:

  • Authentication: OIDC/OAuth providers and local users.
  • SBOM formats: CycloneDX first, SPDX later.
  • Advisory sources: OSV first, more sources later.

Multi-tenancy

Every resource belongs to an organization. Organizations are isolated from each other.

Workers

Scanners run as worker images in CI pipelines and report their results to the BomLoom server, authenticated with API tokens.

Deployment

BomLoom ships as a single container image: the backend serves the API under /api and the built frontend for all other paths. Database migrations run on startup.

On this page