Document that product specs need /technical-info for labels, auto-verify admin-created business owners, and expand category color presets with Farsi aliases.
Co-authored-by: Cursor <cursoragent@cursor.com>
Also create origin HTTPS with a self-signed cert on provision so Cloudflare Full does not fall through to another site's default SSL vhost.
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>
Domain add/edit only upserts Arvan records when updateDns is true, and super-admin user PATCH now accepts firstNameEn and lastNameEn.
Co-authored-by: Cursor <cursoragent@cursor.com>
Tenant zones get an apex ANAME and CNAMEs for www, business, customer, and api without storing origin IPs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Store gateway credentials per business, initiate/verify Mellat at checkout, and resolve old CMS ids from domains in the migrate modal.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose published customer listings under /tenants/:host/user-products (list, search, details, technical-info) and document them in the website API pack.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip redundant provision on edit, harden TLS hostname checks, and issue apex/business/customer SSL from one endpoint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Edit Domain can wire deploy_slug the same way as Add Domain so existing businesses get a Deploy button without recreating the domain.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist deploy_slug on domains, call the websites agent /provision endpoint, and drop the hard-coded host map so Deploy appears from the UI.
Co-authored-by: Cursor <cursoragent@cursor.com>
List pages stay cheap by reading ssl_enabled while Nest probes apex hosts in the background; create-business now stores first/last name in both locales.
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>
Reuse the existing user as owner instead of rejecting duplicate cells, so one person can own multiple businesses.
Co-authored-by: Cursor <cursoragent@cursor.com>