Projects
Build artifacts
What a build writes to disk, and which file goes to a generation endpoint.
Building a document writes plain JSON into build.outDir inside the document’s own
directory — documents/offer-of-admission/build/ with the default config.
documents/offer-of-admission/build/
manifest.json
preview.json
document.json
derivers.js (only when the document uses derivers)
manifest.json
The index. It records what was built, when, and where the other files are:
{
"schemaVersion": "docxcelerate.project-manifest/v0",
"id": "offer-of-admission",
"name": "Offer of Admission",
"version": "1.0.0",
"title": "Offer of Admission",
"entrypoint": "document.project.ts",
"builtAt": "2026-08-13T09:15:00.000Z",
"previewDocument": "preview.json",
"engineDocument": "document.json",
"style": { "...": "the project's DocumentStyle" }
}
deriverNames and derivers appear only when the document invokes derivers.
preview.json
The document resolved against previewData, with dynamic nodes rendered to their
placeholders. This is the local development artifact — it is what the
preview app shows, and it never needs a service.
document.json
The upload artifact. It is the same tree, but request-time values are kept as tokens rather than baked in:
{
"kind": "paragraph",
"mode": "static",
"id": "greeting",
"text": "Dear {{data.applicantName}},"
}
Dynamic nodes carry their prompts instead of text. This is the file you send to the engine, which substitutes real data and resolves the prompts.
The distinction matters when you are debugging. If a document looks right in preview but wrong in production, compare
preview.jsonanddocument.json— the difference is exactly the set of values that are resolved elsewhere.
derivers.js
Derivers are named functions a node can invoke to compute a value before it renders — a currency format, a date difference, a lookup. A node declares them:
{
output: "monthsRemaining",
name: "monthsBetween",
inputs: [dataRef("startDate"), ctxRef("today")]
}
Because the endpoint resolves nodes remotely, the functions have to travel with
the document. derivers.js is that bundle, containing only the derivers the
document actually references. Documents that use none don’t get the file.