Build dmsforall
At the end of this page, you can build every package, export the API contract, and build the two container images.
Prerequisites
Section titled “Prerequisites”- Node.js 22 or later.
- pnpm 11, as pinned in
package.json. - Docker with Compose v2, for the database and the images.
Install the dependencies
Section titled “Install the dependencies”pnpm install --frozen-lockfileThe --frozen-lockfile flag makes the install fail if pnpm-lock.yaml does not match package.json.
Build the packages
Section titled “Build the packages”pnpm --filter @dfa/shared buildpnpm buildBuild @dfa/shared first. The API and the web interface use its compiled output.
Export the API contract and generate the web types
Section titled “Export the API contract and generate the web types”After you change a controller or a DTO, regenerate the OpenAPI document and the web types:
pnpm api:openapipnpm web:typesDo not run pnpm api:openapi while pnpm dev is running. Both write to the same build folder.
Build the container images
Section titled “Build the container images”To build the images of the stack from source, use the override file:
docker compose -f docker-compose.yml -f docker-compose.build.yml buildTo build one image by hand, run from the repository root, because the Dockerfiles copy the workspace packages:
docker build -f apps/api/Dockerfile -t dmsforall:local .docker build -f apps/web/Dockerfile -t dmsforall-web:local .The API image also contains the mdbtools programs, which the data import needs.
Check the result
Section titled “Check the result”pnpm typecheckpnpm lintpnpm format:checkFor the full list of checks that CI runs, read Testing and Contributing.