Expose Organization/LocalBusiness and Product/BlogPosting jsonLd, optional seoMeta fields on content/categories, and continue mass SMS after per-recipient failures.
Co-authored-by: Cursor <cursoragent@cursor.com>
Charge ceil(len/64)*400 IRT per recipient across OTP, customer, and partner SMS; seed new businesses with 500k IRT; default partner sends to the advertising line.
Co-authored-by: Cursor <cursoragent@cursor.com>
Business SMS uses optional settings.sms.senderNumber (else advertising shortcode) with SendQuick for one recipient and SendBulk for quantity.
Co-authored-by: Cursor <cursoragent@cursor.com>
Includes SQL migrations, Prisma models, dashboard CRUD, registration status workflow, and website OpenAPI updates for workshop listing and signup.
Co-authored-by: Cursor <cursoragent@cursor.com>
Dashboard can download grouped product variants and re-upload to update price and stock. Also expose Content-Disposition for downloads and keep related product/customer API docs in sync.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public invoices need branding defaultLocale for RTL viewers; customer create aligns with the business add-customer form.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce invoices.user_id, business template/invoice APIs, and tenant-domain public URLs so business dashboards can issue invoices without platform-scope template mismatches.
Co-authored-by: Cursor <cursoragent@cursor.com>
Super-admins can assign Admin; owners/admins manage Editor/Viewer via team/access, and the customers list supports all/customers/managers filtering.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose branding.defaultLocale, optional user EN name fields, and lightweight dual daily activity for orders/customers; update project context and rules.
Co-authored-by: Cursor <cursoragent@cursor.com>