# `assets/` Server-side runtime assets bundled by Next.js (via `outputFileTracingIncludes` in `next.config.ts`). These files are read with `fs.readFile` from `process.cwd()` at runtime, so they are NOT served as public URLs — use `public/` for that. ## `eoi-template.pdf` The source PDF used by the in-app EOI generation pathway (`src/lib/pdf/fill-eoi-form.ts`). It must be the **same** PDF that the Documenso EOI template uploads, so both pathways produce equivalent documents. The PDF must contain AcroForm fields with these exact names (mirroring the Documenso template's `formValues` keys — see `docs/eoi-documenso-field-mapping.md`): | Field name | Type | Filled with | | -------------- | -------- | ----------------------------------------------------- | | `Name` | Text | `EoiContext.client.fullName` | | `Email` | Text | `EoiContext.client.primaryEmail` | | `Address` | Text | `street, city, country` | | `Yacht Name` | Text | `EoiContext.yacht.name` | | `Length` | Text | `EoiContext.yacht.lengthFt` | | `Width` | Text | `EoiContext.yacht.widthFt` | | `Draft` | Text | `EoiContext.yacht.draftFt` | | `Berth Number` | Text | `EoiContext.berth.mooringNumber` | | `Lease_10` | Checkbox | always `false` (legacy default — Purchase, not Lease) | | `Purchase` | Checkbox | always `true` | Form fields stay interactive after generation (not flattened), so the recipient can still tweak values before signing if the in-app pathway is followed by a Documenso send. ### Override path In dev/test, set `EOI_TEMPLATE_PDF_PATH=/abs/path/to/your/template.pdf` to point at a different file (e.g. a fixture). ### How to extract this PDF The legacy flow uploads this PDF to Documenso template ID 8. To get the exact bytes: 1. In Documenso, open the EOI template. 2. Download the source PDF. 3. Drop it here as `eoi-template.pdf`.