Commit Graph
59 Commits
Author SHA1 Message Date
Alireza HassaniandCursor 1b16e79d3f Add tag filter to blogs, portfolios, and videos list APIs.
Storefronts can filter published content by metadata.tags the same way as products; website API docs are updated to match.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 21:14:42 +03:30
Alireza HassaniandCursor e0e122ed57 Add name filter to business store-items list.
Lets the dashboard specials picker search store items without loading the full catalog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 20:38:58 +03:30
Alireza HassaniandCursor 24ce75c2e6 Expand website AI prompt with on-page SEO requirements for every public page.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 19:58:53 +03:30
Alireza HassaniandCursor 2e8d7c1cfd Add backend-generated sitemap with website manifest sync and nginx SEO proxy support.
Stores synced route config from /meshkee/sitemap-config.json, serves sitemap.xml and robots.txt per tenant, and invalidates cache on CMS writes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 15:15:32 +03:30
Alireza HassaniandCursor c7d5204b49 Add workshops CMS API with schedule, registrations, and public storefront routes.
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>
2026-08-22 12:22:24 +03:30
Alireza HassaniandCursor 9d56ec7396 Fix register transaction typing for cross-site password update.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 12:09:52 +03:30
Alireza HassaniandCursor e027cc96ea Replace Meshkee password when linking an existing account to a new site.
Cross-site register now updates the password to the signup value and documents passwordUpdated for storefronts.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 12:07:17 +03:30
Alireza HassaniandCursor b0d4916138 Add website special-products source setting for storefronts.
Let businesses choose product vs store_item sourcing, defaulting from the store module, and expose it on tenant resolve and store-specials.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 11:57:49 +03:30
Alireza HassaniandCursor 8609d8d4fd Make Arvan DNS updates opt-in and persist English user names.
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>
2026-08-20 11:50:57 +03:30
Alireza HassaniandCursor f61bba317e Add SSO handoff tickets and expand seeded countries for address forms.
Support one-time Redis-backed dashboard sign-in handoff and seed European, Middle East, and Far East countries with major cities.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 19:46:57 +03:30
Alireza HassaniandCursor 7277817b6e Add store-item Excel export/import for bulk price and stock updates.
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>
2026-08-19 01:02:43 +03:30
Alireza HassaniandCursor 4a5780e74d Include updatedAt in store-item listings
Backend now returns updated timestamps for variants so the UI can sort by availability.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 11:26:20 +03:30
Alireza HassaniandCursor 5e5bfc4aa3 Sync static image slots from the live website catalog.
Refresh now imports keys from the storefront and deletes unused slots plus their files.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 09:55:03 +03:30
Alireza HassaniandCursor 1c7678ce67 Add website static image slots with page grouping and bilingual captions.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 23:56:16 +03:30
Alireza HassaniandCursor b991a60cbc Add ZarinPal e-payment and related checkout/search fixes.
Business settings can store ZarinPal merchant credentials, and the payment registry can initiate and verify ZarinPal alongside Mellat.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 01:45:41 +03:30
Alireza HassaniandCursor c76c3967bb Point backend deploy docs at gitea.meshkee.com.
Production now pulls meshkee-app/backend over SSH port 2222 instead of the old git.meshkee.com remote.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 11:20:48 +03:30
Alireza HassaniandCursor 30119e6d9e Upsert ArvanCloud DNS records when a super-admin adds or updates a domain.
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>
2026-08-14 11:16:35 +03:30
Alireza HassaniandCursor d08a85cee5 Prune Next build leftovers after standalone website deploys.
Keep only .next/standalone so sites drop cache and duplicate server trees.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 20:41:27 +03:30
Alireza HassaniandCursor 9818721bce Document standalone Next.js deploy behavior for websites agent.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 20:34:02 +03:30
Alireza HassaniandCursor f201a6408c Support Next.js standalone runtime in websites deploy agent.
Copy static/public into the standalone bundle, point PM2 at server.js, and drop full node_modules after a successful start.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 20:31:39 +03:30
Alireza HassaniandCursor 62f75c3a75 Default business and domain list page size to 24.
Match the dashboard list rule when clients omit pageSize.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 15:19:46 +03:30
Alireza HassaniandCursor d5e502cf77 Add Mellat e-payment, videos/instructions CMS, and legacy domain lookup.
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>
2026-08-13 09:51:17 +03:30
Alireza HassaniandCursor 513673a7da Add Open Graph HTML for public invoice link previews.
WhatsApp and other crawlers can scrape invoice title and image without running the SPA.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:15:52 +03:30
Alireza HassaniandCursor d8f4e8c4e5 Support local public invoice URLs with port overrides.
Dev can set INVOICE_PUBLIC_BASE_URL or DEV_PORT/HOST so copied links reach the Vite viewer.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:03:33 +03:30
Alireza HassaniandCursor 49a9f0c289 Expose invoice locale on public payloads and accept English name fields on create customer.
Public invoices need branding defaultLocale for RTL viewers; customer create aligns with the business add-customer form.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 15:46:18 +03:30
Alireza HassaniandCursor 73118f38d5 Add finance as an optional business module.
Super-admin can enable Finance per tenant alongside other dashboard modules.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 15:23:53 +03:30
Alireza HassaniandCursor 5734a73c9c Add business-scoped invoices billed to users.
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>
2026-08-11 15:17:03 +03:30
Alireza HassaniandCursor e59db25814 Add business team access controls and customer role filters.
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>
2026-08-10 21:31:28 +03:30
Alireza HassaniandCursor 2c4d02bd0e Normalize AI product HTML for the rich text description editor.
Sanitize model output to an allowlisted fragment and convert plain/markdown fallbacks so description text stays inside the advanced editor.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 20:44:47 +03:30
Alireza HassaniandCursor 23ba6344f6 Switch AI defaults to OpenAI gpt-4.1-nano.
Prefer the cheapest ChatGPT model that supports our JSON completions, and skip custom temperature for gpt-5/o-series models.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 20:33:43 +03:30
Alireza HassaniandCursor 0743063c15 Reactivate inactive users on successful OTP login or password reset.
OTP already proved phone ownership; treating is_active as a hard block made send-otp succeed while login-otp returned a misleading not-registered error.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 10:08:32 +03:30
Alireza HassaniandCursor 0f92307fcd Allow register to link existing Meshkee accounts after acknowledgement.
Adds optional acknowledgeExistingAccount and documents the CELL_EXISTS_OTHER_SITE → SMS link flow for storefronts.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 09:53:15 +03:30
Alireza HassaniandCursor f7cee26975 Track real website deploy success/failure and support master branch.
Deploy agent waits for build completion, writes status, and checks out origin/HEAD (main or master) so empty-main repos like mashinify can deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 08:52:49 +03:30
Alireza HassaniandCursor acc8f35682 Improve cross-site customer signup and login membership.
Same-password register joins silently; mismatched password explains the existing Meshkee account; login/OTP with domain attaches business membership.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 01:02:47 +03:30
Alireza HassaniandCursor 953b87b616 Add public user-products storefront API and website docs.
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>
2026-08-10 00:19:13 +03:30
Alireza HassaniandCursor 158523df7b Require apex and www TLS for storefront SSL status.
Per-row ensure and SSL refresh treat storefront as valid only when both names match, and toast messages list each host explicitly.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 17:57:24 +03:30
Alireza HassaniandCursor a9d5f2e48d Fix storefront SSL probes and per-domain ensure for dashboards.
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>
2026-08-09 16:32:05 +03:30
Alireza HassaniandCursor 8f05ee2b58 Brand OTP SMS with business name and support local SMS proxy.
Append tenant Farsi name to verification SMS, allow optional domain on send-otp, and add SMS_PROXY_* for local delivery via production. Also include websites SSL sync agent/API wiring.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 23:29:56 +03:30
Alireza HassaniandCursor 77f3cb2a67 Add product field AI fill and long-lived media cache headers.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 16:35:14 +03:30
Alireza HassaniandCursor b5a54e4174 Allow null price and unlimited stock on store item create/sync.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 15:36:41 +03:30
Alireza HassaniandCursor 5cd762c65d Accept HTTPS git repo URLs for storefront provision.
Normalize https://git.meshkee.com/... to SSH for the websites VM deploy key while keeping the URL users paste.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 14:25:13 +03:30
Alireza HassaniandCursor 7d123502f8 Allow storefront provision when editing a domain git URL.
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>
2026-08-08 14:18:31 +03:30
Alireza HassaniandCursor d933aef40b Enable storefront provision from Add Domain via optional git URL.
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>
2026-08-08 14:07:56 +03:30
Alireza HassaniandCursor 9ca6e2306f Add per-business modules and home chart slots.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 10:40:57 +03:30
Alireza HassaniandCursor 0632f67bda Add brown, navy, dark green, and orange business theme colors.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 18:16:03 +03:30
Alireza HassaniandCursor 08f901306c Add passwordless OTP login and SMS password reset.
Expose login-otp and reset-password so dashboards can finish forgot-password and one-time SMS sign-in, and sync website API docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 15:10:06 +03:30
Alireza HassaniandCursor f4295e780c Add partner SMS gateway via Gama SendQuick and document it.
Expose POST /public/sms/send with API key + domain allowlist for external backends like Balout, wire Meshkee OTP/message sends to Gama, and publish Partner SMS docs on /docs/website.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 11:09:21 +03:30
Alireza HassaniandCursor 267a218c26 Sync domain SSL status on a 2-hour cron and capture owner FA/EN names.
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>
2026-08-03 09:21:06 +03:30
Alireza HassaniandCursor f233665d13 Add stable keys for special groups and SSL sync agent hooks.
English keys on store/website specials stay unique per business; domain-admin can trigger dashboard SSL sync.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 00:06:44 +03:30
Alireza HassaniandCursor 43e3912662 Add defaultLocale, EN names, and dashboard activity endpoints.
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>
2026-08-01 09:35:27 +03:30