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:

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.