The everyday screen - open a project, fill in its form, generate a PDF.
Opening a project
From the Projects list, tap a project (or its preview icon) to open it straight into its form. The app remembers the last project you had open and reopens it directly on next launch.
If the project fails to load (missing/invalid form.json, for example), you'll see an
error with a button back to the Projects list rather than a blank or broken screen.
The form
Fields render top to bottom in the order they're defined. Depending on type:
| Field type | What you see |
|---|---|
| Text | A text box, with length/pattern validation if the form defines it |
| Number | A text box restricted to numeric entry, with min/max validation if defined |
| Currency | A text box formatted as currency |
| Date | A text box you can type a date directly into, plus a calendar-picker icon |
| Dropdown | A picklist of the options the form defines |
| Checkbox | A simple on/off switch |
| File | A file/photo picker (e.g. a vehicle photo) |
| Signature | A signature capture panel - see below |
| Repeating Group | An "Add row" list of sub-fields - see below |
Autocomplete. Some fields (marked by whoever built the form) suggest values as you
type, drawn from that project's autocomplete.json - a list the form's author curates
ahead of time (see the Form Editor), not
something that grows from what people type in. Pick a suggestion or keep typing your
own value - either is fine.
Validation. Two layers can reject a submission:
- Field-level errors (required, out of range, wrong format) show inline under the field.
- Cross-field errors (rules that compare multiple fields against each other) show as a banner at the top of the form after you hit Generate.
Fix what's flagged and try again - nothing is generated until every check passes.
Signature fields
Tap a signature field to open the capture panel. Two modes:
- Type - type your name, pick a script font from the dropdown, and it's rendered as a signature-style image.
- Draw - sign with your finger, stylus, or mouse on a blank canvas.
Either way, use Clear to start over, and confirm to apply it to the field. Both modes preserve the signature's proportions - nothing gets stretched or cropped to fit.
Repeating groups
Fields like a list of installed options or line items are repeating groups - an "Add {label}" button appends a new row, each with its own set of sub-fields, and every row gets a Remove button. There's no fixed number of rows; add or remove as needed.
Generating the PDF
The Generate action (however the form's layout exposes it - commonly a button or the primary action) runs, in order:
- Static validation - the required/min/max/format rules from the form itself.
- Cross-field validation - any custom script logic the project defines.
- Layout assembly - the project decides which layout pieces to include (for example, only showing a "Certified" badge when that checkbox is on).
- Render - the assembled layout is drawn onto the page and saved to the
project's
output/folder.
If it succeeds, you land on PDF Preview.
Nothing about the submission itself is saved anywhere - the generated PDF is the
record. Nothing is added to autocomplete.json either; that list only ever changes
when the form's author edits it directly.
Other actions on this screen
- Reset form (refresh icon in the app bar) - clears everything you've entered back to blank.
- The overflow menu (⋮) - see Overflow Menu.