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"