No description
Find a file
Dave 99e9d947cf feat(quotes,customers): address + VAT on quotes, 30-day validity, searchable customer
A quote should look like a document from a real company, so this adds
the customer details a quote needs, gives every quote a valid-until
date, and makes the customer picker usable once there are 20+ of them.

Customer details on quotes
- The `customers` collection only had a name, so the quote PDF's
  "Customer Information" block could only ever print a name. Added
  optional address, VAT number, email and phone fields.
- The PDF block now grows to fit whatever is on file and prints the
  VAT number and contact line, so a filled-in customer produces a
  professional quote.
- The quote details dialog shows the same details.
- The customer form gained the new fields, and "Edit customer" now
  works - it was a menu item that did nothing, so there was no way
  to add a VAT number to an existing customer.
- The customers table shows Address and VAT Number columns.

Valid until
- Quotes were created with an empty validUntil, so the PDF printed
  "Valid Until: N/A". The form now defaults it to 30 days after the
  quote date and keeps it in step when the date moves. The three
  existing quotes without one were backfilled the same way.

Searchable customer picker
- The customer dropdown listed every customer in a plain select with
  no way to add one that was missing. It is now a searchable combobox
  (by name, address or VAT number) that offers to create the customer
  when nothing matches, and creates it inline.

Sidebar
- Settings moved to a gear in the corner next to the app name, and
  Logs moved into Settings as a tab. The nav is now eight items with
  no grouping - grouping them would add a layer for no gain at this
  size. The old /logs link still lands on the logs tab.

Also fixes a real PDF bug: item descriptions were cut to 40 characters,
which is wider than the description column, so long names printed on
top of the SKU column. Descriptions and SKUs are now measured against
the real column width and truncated with an ellipsis.

Live PocketBase changes (see scripts/add-customer-fields.mjs):
- customers update and delete rules were null (superusers only), so a
  member could not edit the customer they had just added. They now
  match the other collections.
2026-10-21 04:45:58 +02:00
.cursor feat(po): add MCP server, agent-friendly PO API, and PDF rendering 2026-09-07 11:12:13 +02:00
.playwright-mcp UI: style polish, charts, tables, forms, PDF fix 2026-05-16 00:07:52 +02:00
backup Fixed login 2025-09-25 00:15:35 +02:00
docs feat(po): add MCP server, agent-friendly PO API, and PDF rendering 2026-09-07 11:12:13 +02:00
n8n feat(automation): add PO-to-invoice pipeline 2026-09-06 23:40:33 +02:00
pocketbase feat(quotes,customers): address + VAT on quotes, 30-day validity, searchable customer 2026-10-21 04:45:58 +02:00
public feat(purchase-orders): add edit functionality and improve form validation 2026-01-14 09:01:49 +02:00
scripts feat(quotes,customers): address + VAT on quotes, 30-day validity, searchable customer 2026-10-21 04:45:58 +02:00
server feat(po): add MCP server, agent-friendly PO API, and PDF rendering 2026-09-07 11:12:13 +02:00
src feat(quotes,customers): address + VAT on quotes, 30-day validity, searchable customer 2026-10-21 04:45:58 +02:00
.env.example feat(automation): add PO-to-invoice pipeline 2026-09-06 23:40:33 +02:00
.gitignore chore: untrack .env and pb_data, update gitignore 2026-09-01 07:45:02 +02:00
.mcp.json feat(automation): add PO-to-invoice pipeline 2026-09-06 23:40:33 +02:00
AI_RULES.md Updated AI_RULES.md 2025-09-19 12:19:47 +02:00
app-overview.png UI: style polish, charts, tables, forms, PDF fix 2026-05-16 00:07:52 +02:00
components.json Init Dyad app 2025-09-09 00:12:47 +02:00
dashboard-updated.png UI: style polish, charts, tables, forms, PDF fix 2026-05-16 00:07:52 +02:00
eslint.config.js Init Dyad app 2025-09-09 00:12:47 +02:00
index.html Add icon generation script and new icons for PWA and favicons 2025-09-25 00:50:36 +02:00
LOGGING_IMPLEMENTATION.md Fixed login 2025-09-25 00:15:35 +02:00
login-mobile-final.png UI: style polish, charts, tables, forms, PDF fix 2026-05-16 00:07:52 +02:00
login-mobile.png UI: style polish, charts, tables, forms, PDF fix 2026-05-16 00:07:52 +02:00
login-page-final.png UI: style polish, charts, tables, forms, PDF fix 2026-05-16 00:07:52 +02:00
login-page.png UI: style polish, charts, tables, forms, PDF fix 2026-05-16 00:07:52 +02:00
nixpacks.json Update nixpacks.json 2025-12-29 14:15:05 +02:00
package-lock.json feat(po): add MCP server, agent-friendly PO API, and PDF rendering 2026-09-07 11:12:13 +02:00
package.json feat(po): add MCP server, agent-friendly PO API, and PDF rendering 2026-09-07 11:12:13 +02:00
postcss.config.js Init Dyad app 2025-09-09 00:12:47 +02:00
quote-dialog.png Add quotes feature and PO attachments 2026-05-15 07:11:07 +02:00
quote-fixed.png Add quotes feature and PO attachments 2026-05-15 07:11:07 +02:00
quote-form.png Add quotes feature and PO attachments 2026-05-15 07:11:07 +02:00
quote-page.png Add quotes feature and PO attachments 2026-05-15 07:11:07 +02:00
quote-page2.png Add quotes feature and PO attachments 2026-05-15 07:11:07 +02:00
quote-screenshot.png Add quotes feature and PO attachments 2026-05-15 07:11:07 +02:00
README.md Init Dyad app 2025-09-09 00:12:47 +02:00
setup-users.js Fixed login 2025-09-25 00:15:35 +02:00
tailwind.config.js [dyad] Changed all blue UI elements to #ffc905 with black text - wrote 2 file(s) 2025-09-11 11:16:50 +02:00
tailwind.config.ts [dyad] Updated the dashboard with a new color palette - wrote 6 file(s) 2025-09-09 01:14:51 +02:00
test-logging.js Fixed login 2025-09-25 00:15:35 +02:00
tsconfig.app.json Init Dyad app 2025-09-09 00:12:47 +02:00
tsconfig.json Init Dyad app 2025-09-09 00:12:47 +02:00
tsconfig.node.json Init Dyad app 2025-09-09 00:12:47 +02:00
vercel.json Init Dyad app 2025-09-09 00:12:47 +02:00
vite.config.ts ci(vite): add allowedHosts to preview config 2026-01-13 10:28:14 +02:00

Welcome to your Dyad app