A document project is a self-contained folder - a form definition, a page layout,
some optional scripts, and assets like images and fonts. Yatate reads that folder
directly; there's no central database of form templates. Copy the folder (or export it
as a .yatate file, see Quick Start) and you've moved the whole
document to another device.
my-project/
base.pdf ← the page canvas: size, page count, background art
project.json ← (optional) generated-canvas settings, used instead of base.pdf
form.json ← the form: fields, validation, computed values
overlay.json ← the layout: where things get drawn on the page
validate.js ← (optional) cross-field validation logic
process.js ← (optional) which layout files to include, and any presentation data prep
assets/ ← images/logos referenced by the layout
fonts/ ← (optional) custom fonts for this project only
autocomplete.json ← (optional) author-curated key -> [values] suggestion lists
presets.json ← (optional) named full-form-snapshot presets, saved from the fill-out screen
output/ ← generated PDFs land here (created automatically)
Two ways to build
You can build all of this two ways, and mix them freely:
- In the app - the Project Files screen, a form builder, and a drag-and-drop canvas editor cover most of what you need without ever touching raw JSON.
- By hand - every project file is plain JSON or JavaScript. The built-in text editor (or any external editor) works fine for anything the in-app tools don't cover yet (repeating-group sub-fields, computed formulas, script logic).
See Scripting & Processing and Layout JSON for what happens with all of this at generation time.
Portability
A project folder is completely self-contained - nothing about it lives outside that
folder except the app-level projects-path setting pointing at where to find it (see
Settings). Copying a project folder directly (rather than
exporting/importing as .yatate) works too, and brings output/ along with it,
unlike a .yatate export, which deliberately excludes it.