Forge
Concepts

Workspace

Understand how Forge manages your workspace

Workspace

A Forge workspace is an Nx workspace — a single repository containing multiple projects that are managed together. Forge extends Nx with plugins tailored for Codeak compliance and polyglot support.

Workspace Structure

Forge proposes a hierarchical structure based on three concepts:

  • Domain — a grouping node that can contain sub-domains or applications
  • Application — contains software components which are released together
  • Component — a software component, such as a React site, a node library, a Spring service, etc.

App repo:

repo/
└── Application1/
    ├── SpringService1/
    ├── SpringService2/
    ├── react-site/
    └── node-lib/

Mega repo:

repo/
├── Domain1/
│   └── Application1/
│       ├── SpringService1/
│       ├── SpringService2/
│       ├── react-site/
│       └── node-lib/
└── Domain2/
    └── Application2/
        ├── SpringService1/
        ├── SpringService2/
        ├── react-site/
        └── node-lib/

Key Files

nx.json

The central configuration file for your workspace. It defines:

  • Plugins — which Forge plugins are active and their options
  • Named inputs — reusable input definitions for caching
  • Conformance — conformance rules for the workspace
{
  "namedInputs": {
    "default": ["{projectRoot}/**/*", "sharedGlobals"],
    "sharedGlobals": ["{workspaceRoot}/.gitlab/**/*"]
  },
  "plugins": [
    { "plugin": "@bjb-forge/nx-js-project/nx-plugin" },
    { "plugin": "@bjb-forge/nx-devcloud-legacy-project/nx-plugin" }
  ],
  "release": {
    "groups": {
      "jbar-app": {
        "projects": ["directory:jbar-app/*"]
      }
    }
  }
}

mise.toml

Manages tool versions (Node.js, pnpm, Java, Maven, etc.) ensuring everyone on the team uses the same versions.

[tools]
"node" = "22.22.0"
"pnpm" = "10.29.3"
"java" = "zulu-17.64.17.0"
"maven" = "3.8.3"

On this page