Projects
Understanding projects in Forge
Projects
A project is the fundamental unit of organization in Forge. Each project represents a buildable unit within your repository.
Project Inference
Forge automatically infers projects from files in your repository. When Forge detects certain files, it recognizes them as project roots:
| File | Project Type |
|---|---|
package.json | JavaScript/TypeScript |
pom.xml | Java (Maven) |
build.gradle | Java (Gradle) |
go.mod | Go |
openapi.yaml | API |
Chart.yaml | Helm |
Dockerfile | Container |
You don't need to manually register projects. Forge discovers them automatically by scanning for these files.
Project Graph
Forge builds a dependency graph between projects based on their imports and dependencies. This enables smart features like affected detection and parallel execution.
In this example:
- frontend depends on backend and api
- backend depends on api
When api changes, Forge knows to rebuild and test both backend and frontend.
Project Types
Forge supports various project types:
- Application - Deployable applications (web apps, services)
- Library - Shared code libraries
- Container - Docker/OCI container images
- Helm - Helm charts for Kubernetes deployments
Affected Detection
Because Forge understands the project graph, it can determine which projects are affected by a change:
nx affected -t build testThis only builds and tests projects that are impacted by your changes, saving time in CI and local development.