Commit Graph
81 Commits
Author SHA1 Message Date
Alireza HassaniandCursor e2fb08cccd Show contract renewal in businesses and align SSL/view charts.
Add annual renewal column with color-coded days left, owner title and renewal fields on create, SSL expiry display, and updated view chart kinds.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 10:13:06 +03:30
Alireza HassaniandCursor a52f963f52 Fix per-tenant dashboard SSL map to use SNI and readable certs.
Nginx must key the cert map on $ssl_server_name during handshake, and www-data needs ssl-cert group access to Let's Encrypt files when certificates are loaded via variables.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 08:49:43 +03:30
Alireza HassaniandCursor b7bce38131 Issue dashboard SSL per tenant instead of full cert sync.
Per-row Issue SSL now runs ssl-issue-tenant.sh for business/customer hosts only, with nginx cert map support, so one broken tenant cannot block others.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 01:20:03 +03:30
Alireza HassaniandCursor 202ac7d4bd Add view traffic charts to business home and super-admin.
Wire product, website, portfolio, and blog 30-day view charts to the analytics API and expose the new chart types in super-admin business settings.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 01:12:45 +03:30
Alireza HassaniandCursor 468bb87fcf Improve business profile branding uploads and super-admin link menus.
Show separate light/dark logo and favicon croppers in a compact grid, support favicon saves, and keep super-admin overflow dashboard links in English.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 00:51:12 +03:30
Alireza HassaniandCursor 5e799eddf9 Localize order modals, add dual logos, and improve admin order tools.
Farsi business order/variation UI, light/dark logo upload on business profile, payment order steps, variation editing, super-admin site links, and checkout/auth fixes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 00:21:48 +03:30
Alireza HassaniandCursor dc570c1e7f Share customer session cookies with the storefront and polish business settings.
Keep JWT login mirrored on the tenant cookie domain, improve e-payment settings UX, and add a storefront link from the customer sidebar.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 16:40:52 +03:30
Alireza HassaniandCursor c289de5d2e Add portfolio website link field and card open-link control.
Stay on the current list page after move-to-top; only toast success.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 16:46:13 +03:30
Alireza HassaniandCursor 85524544ca Use moveToTop so portfolio chevron pins the item to list start.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 15:16:46 +03:30
Alireza HassaniandCursor be9e7da424 Fix portfolio move-to-top and put category beside the date.
Bump sort_order above the page leader instead of swapping, and align category left with date right on one meta row.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 15:12:45 +03:30
Alireza HassaniandCursor 1e9f6481b0 Fix portfolio list sorting UX and add name/category filters.
Newest portfolios show first with corrected move-up, category no longer mixes into the date, and website link generation can filter by tags.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 15:01:53 +03:30
Alireza HassaniandCursor 2477936bce Restore opaque frosted glass on nested category/link modals.
The lighter glass fill made the parent form show through when ساخت لینک opened over another dialog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 20:50:44 +03:30
Alireza HassaniandCursor 77080a7a4b Improve website settings and special-item pick UX.
Tighten sitemap/settings controls, debounce product search to 10 results, keep catalog-only specials visible after add, and use frosted glass on link/category modals.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 20:38:58 +03:30
Alireza HassaniandCursor a39aef0c8c Fix sitemap sync sending JWT by enabling auth on the API request.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 19:33:16 +03:30
Alireza HassaniandCursor 5926f772e2 Add website sitemap config sync to business dashboard settings.
Lets business owners import static pages and URL templates from the live storefront manifest before API sitemap generation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 15:15:32 +03:30
Alireza HassaniandCursor d5aca8bea7 Add business workshop management UI with Jalali scheduling and shared dashboard polish.
Includes workshop list/edit/details, registrations modal, category tree, shared EmptyState/RichTextEditor/toasts, and fixes for the Jalali date picker and thumbnail field layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 12:22:27 +03:30
Alireza HassaniandCursor 89269dff04 Fix business tenant binding and update password on cross-site signup.
Resolve the active business from the host domain so multi-business staff no longer load another tenant’s CMS data, and replace the Meshkee password when linking an existing account to a new site.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 12:07:17 +03:30
Alireza HassaniandCursor 193c63bfd2 Add Website settings for special-products source.
Businesses can choose product vs store item sourcing, with store as the default when the store module is enabled, and rename the FA special-products section.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 11:57:49 +03:30
Alireza HassaniandCursor a7950f1f13 Add bilingual user names and optional DNS updates in super-admin.
Edit user now has FA/EN first and last names, and domain save only upserts Arvan records when Update DNS is checked.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:50:57 +03:30
Alireza HassaniandCursor 353508a091 Fix customer header outside-click handler for DOM event typing.
Use Event instead of React MouseEvent so document listeners typecheck in production builds.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 19:48:45 +03:30
Alireza HassaniandCursor f8a9a28346 Add shared empty states, customer product filters, and SSO handoff across dashboards.
Standardize list empty UI, searchable country fields, customer-products filter row, password/login polish, and one-time business dashboard handoff from the customer app.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 19:46:57 +03:30
Alireza HassaniandCursor 832ac32a09 Add store-product Excel bulk edit and polish the business dashboard.
Export/import price and stock from Store Products, keep card order after saves, localize variations, and drop unused website nav items.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 01:02:43 +03:30
Alireza HassaniandCursor 7b51dda82a Hide website slider/special sections from business hub
Remove website homepage management cards for sliders, special categories, and special brands.
Also move the special section slug chip after the Farsi title.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 11:33:35 +03:30
Alireza HassaniandCursor 5f4b0b4f92 Fix store item variant defaults and listing sorting
Auto-select first option in variation modals and sort store items by availability, then update time.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 11:26:20 +03:30
Alireza HassaniandCursor b861ab3dc1 Refresh static image slots from the website catalog.
The dashboard can import and drop slots from the live site instead of creating them by hand.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 09:55:03 +03:30
Alireza HassaniandCursor 36180cda2b Give dashboards a themed orb background and a solid current-nav state.
Login pages share the same wash as the app shell; customer light mode matches business while dark mode stays gray.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 09:00:08 +03:30
Alireza HassaniandCursor e0e68de30f Add a reusable website link generator and polish static image cards.
Editors can pick product, store, blog, portfolio, or video category links, and image cards expose compact info/link actions without dumping URLs in the footer.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 00:30:01 +03:30
Alireza HassaniandCursor b9024ad77a Add a static images manager and polish dashboard layout and fonts.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 23:56:17 +03:30
Alireza HassaniandCursor e79211e3cd Move e-payment to Settings and add ZarinPal credentials.
Gateway config now lives on the general Settings page, with Mellat fields in a 3-column layout and ZarinPal available at checkout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 01:45:41 +03:30
Alireza HassaniandCursor 9a59bc8f65 Rename store items to store products and add an empty-state CTA.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-15 14:56:08 +03:30
Alireza HassaniandCursor 8e8929050e Show Arvan DNS errors when adding a domain in super-admin.
Add-domain now reports dnsError from the API and documents that tenant records are written in Arvan automatically.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 11:16:36 +03:30
Alireza HassaniandCursor c16ec3787b Fix dashboard production builds and default list pages to 24 items.
Unblock business/customer deploys and match the 24-per-page list rule in Super Admin.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 15:19:46 +03:30
Alireza HassaniandCursor cc94b929e0 Add e-payment UI, checkout payment result, and legacy migrate domain lookup.
Wire Mellat settings in business dashboard, customer bank return page with payment details, and super-admin migrate modal domain confirmation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 09:51:22 +03:30
Alireza HassaniandCursor a11f9643bb Polish public invoice mobile typography and justified copy.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 21:39:42 +03:30
Alireza HassaniandCursor 9e5a03548f Fix dashboard nginx Open Graph bot routing for invoice URLs.
Quote regex braces and proxy via rewrite so api.meshkee.com resolves without a runtime DNS resolver.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:21:12 +03:30
Alireza HassaniandCursor c3408a498a Route social crawlers on invoice URLs to Open Graph HTML.
Bots hitting /invoices/:id on manage get API OG markup; browsers still load the SPA.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:15:52 +03:30
Alireza HassaniandCursor 2be3b3376d Polish public invoice layout: account grid, duration, and copy-to-clipboard.
Also preserve item description line breaks and use local ported invoice links in DEV.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:03:33 +03:30
Alireza HassaniandCursor f21041b950 Make public invoices RTL for Farsi businesses and fix invoice back-arrow direction.
Also add optional English name fields on the add-customer modal to match the API.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 15:46:18 +03:30
Alireza HassaniandCursor a50685ec69 Gate Finance behind a super-admin business module.
Add finance to the modules picker and hide sidebar, home tile, and customer invoice actions when it is disabled.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 15:23:56 +03:30
Alireza HassaniandCursor 917b840ee5 Add business Finance hub with invoices and templates.
Ship invoice issue/list/templates under Finance, fix tenant theme reset and owner role badge, and show customers-joined charts by Persian months.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 15:17:03 +03:30
Alireza HassaniandCursor 722933dda9 Tighten Users filters and admin-only header badges.
Match sticky headers to sidebar glass, drop the Users role column, and show compact owner/admin badges only where needed.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 00:23:39 +03:30
Alireza HassaniandCursor 6c52ce1247 Polish dashboard page chrome and user access UI.
Rename Customers to Users with FA/EN titles, compact headers and filter bars across apps, and refine manager role copy plus a customer-header link to the business dashboard.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 00:00:09 +03:30
Alireza HassaniandCursor beec3035e5 Fix typed i18n keys for customer access labels.
Unblocks the business dashboard production build after Customer/Manager role UI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 21:33:22 +03:30
Alireza HassaniandCursor f622e6d605 Add customer/manager access UI and tighten customers filters.
Business and super-admin can set Customer vs Manager roles (Admin only for super-admin), and the customers page drops clutter while filtering by all/customers/managers.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 21:31:28 +03:30
Alireza HassaniandCursor 404c008ced 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:35 +03:30
Alireza HassaniandCursor 8d59166fe8 Show existing-Meshkee signup notice as an acknowledge modal.
After admit, continue via SMS OTP so login-otp can link the user to that website with unchanged password/profile.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 09:53:15 +03:30
Alireza HassaniandCursor cce28a4d7c Preserve post-login redirect for customer dashboard deep links.
Unauthenticated visits to protected pages now land on /login?redirect=…, and a shared helper keeps redirect targets same-origin only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 09:23:45 +03:30
Alireza HassaniandCursor 7374dd9978 Show Success/Failed/Started for website deploy status.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 08:52:51 +03:30
Alireza HassaniandCursor 855f337006 Clarify cross-site signup messaging and pass domain on login.
Also strengthen the businesses three-dot menu glass background.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 01:02:49 +03:30
Alireza HassaniandCursor debca2cf99 Fix typed condition labels for user-product details pages.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 00:24:01 +03:30