Commit Graph

158 Commits

Author SHA1 Message Date
a1b03acf04 Fix Docker npm ci by switching build image to Node 20.
Avoid the node:22-alpine crash that fails installs with Exit handler never called.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-02 01:18:05 +03:30
29d66a1621 Add robots.txt and sitemap with correct public routes.
Serve only indexable pages to crawlers and copy the SEO files into the Vite/Docker build output.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-02 01:08:42 +03:30
ae66644321 Use Arvan registry for frontend base images 2026-10-18 00:01:41 +03:30
e669ab84d9 Load terms dynamically and link checkout to terms page 2026-10-18 00:01:41 +03:30
c4c115ccfc Lock verified identity fields in profile and checkout 2026-10-17 23:35:35 +03:30
1ce33d9b74 refactor: optimze modal 2026-10-02 13:37:59 +03:30
800efeb784 feat: show the admin-managed announcement popup when the site opens
Fetch the live notice from the API so users see maintenance updates without a hardcoded toast.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 22:05:40 +03:30
9286a283c0 feat: full profile editing (email/password/mobile/card) + lighter background particles
- ModalEditProfile now lets users optionally change email, password,
  and card number, plus a two-step OTP flow to change their mobile
  number. All fields remain optional except when actively submitted.
- Particle background: dropped canvas shadowBlur and the warp effect
  on links (the most expensive per-frame draw calls), disabled
  detectRetina (was rendering at 2-3x resolution on high-DPI
  screens), capped fps at 30, and paused rendering when the tab is
  hidden or the canvas is out of viewport (pauseOnBlur /
  pauseOnOutsideViewport) — this was the main site-wide slowdown
  since it renders on every page via the root layout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 01:38:00 +03:30
bbf1fc8899 feat: render the connection-warning block from backend data per service
Replaces the hardcoded "⚠️ اتصال سرویس‌ها" text (shown for every product)
with data.has_connection_notice / data.connection_notice from the
config's own see() response, so it's opt-in per service instead of
always-on for the whole category.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 01:14:33 +03:30
e1a84105c7 feat: require reading the service description before purchase
For categories with has_extra_description, the buy button now stays
disabled until the user ticks "توضیحات سرویس را مطالعه کردم" — mirrors
the pattern used for the Shahkar/advanced-verification gates.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 00:14:02 +03:30
897146ee12 feat: let users save their national code from the profile page
Wires up the previously-disabled "edit profile" button/modal to save
national_id via POST /profile/national-id, so it's no longer only
collectible through the inline field during a Shahkar-gated purchase.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 05:29:25 +03:30
255a48ae99 feat: handle new Shahkar identity verification step during purchase
When the backend responds with requires_shahkar_verification (for
purchases between the 100M and 200M thresholds), show an inline
national-code input instead of failing outright, and resubmit the
buy request with nationalCode once the user fills it in.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 20:59:35 +03:30
0b32e97b7d fix: show tutorial button directly in mobile DNS row
Putting "آموزش" only inside the DNS management modal wasn't enough -
mobile users expect a direct button next to "مدیریت DNS", same as
the desktop row already has.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 00:16:55 +03:30
fb70f32048 fix: add missing tutorial access to DNS service modal in profile
The "آموزش" button only appeared in the desktop-only action row, and
the modal that opens for DNS on mobile (ModalDnsConfig) never had a
tutorial link at all, unlike ModalConfigDetails for other config
types. DNS users therefore had no way to reach /tutorial on mobile.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 23:37:07 +03:30
0434819af0 feat: render service description as structured sections from backend
Matches the admin's new repeater (emoji + title + items per section)
instead of a single plain-text block.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 23:25:48 +03:30
5e9e0b7969 feat: drive shop "service description" button/content from backend
Replaces the hardcoded DNS-only content and isDns/category-label check
with data from the config's `has_extra_description` / `extra_description`
fields, so any product can opt into showing free-text extra info.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:48:20 +03:30
826f61a0fe feat: responsive media grid with lightbox, proper attachment list
- Media (images/videos) now render in a responsive grid with a
  full-screen lightbox on tap instead of a stacked full-width column.
- Multiple attached files (attachments[]) each get their own icon,
  title, and download button, replacing the single hidden file link.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 19:22:24 +03:30
1ea325ad47 fix: show missing tutorial file download, support more video formats
- Render the download button for a tutorial's uploaded file field
  (it was fetched from the API but never displayed).
- Recognize mov/avi/wmv as video (the backend already accepts them as
  uploads) and add a download fallback for any media type the browser
  can't play inline instead of a dead "unknown file type" message.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KMLvfLviDB12t4U9UijE4k
2026-09-04 18:02:08 +03:30
8b6c0b07de fix: remove expired status from profile filter, show order code
- Drop the now-unused "expired" filter option/status (the API never
  returns expired services anymore).
- Show the order code next to each service in the config card and in
  the service details modal.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KMLvfLviDB12t4U9UijE4k
2026-09-04 17:34:52 +03:30
aeefe075dd fix: fix bug docker 2026-09-02 20:29:41 +03:30
c5bfa5544c feat: add dockeriz project 2026-09-02 00:47:48 +03:30
f16b9044a1 feat: add can_renew 2026-09-01 18:50:58 +03:30
9fd8543b7e feat: add new feature and fix bugs 2026-08-13 16:38:49 +03:30
9c9450ffca Bug -> add rule and fix bug 2026-04-09 08:12:03 +03:30
2ee6a3b6fa Update -> check config count 2025-07-26 01:01:06 +03:30
703c16e9ee Update -> text 2025-07-26 01:00:45 +03:30
josheqani
08bde1ff4b fix(Axios & Layout): add Shop-ID header to Axios instance and navigate to home on shop ID set 2025-05-13 08:31:23 +03:30
Ali Josheghani
bd4e3feea0 fix(ProductList): adjust image styling for better responsiveness and layout 2025-03-27 00:00:11 +03:30
Ali Josheghani
6c5617587d fix(ModalBuy): enhance traffic and user limit display with conditional rendering 2025-03-02 22:15:52 +03:30
Ali Josheghani
f543654f18 fix(Content): replace Button with SmoothScrollLink for smooth scrolling to configs 2025-03-02 22:15:44 +03:30
Ali Josheghani
52e84c58c3 fix(NowSell): adjust margin for improved layout on various screen sizes 2025-03-02 22:15:40 +03:30
Ali Josheghani
6a9fef08b1 fix(Intro): improve layout and formatting of header and button elements 2025-03-02 22:15:36 +03:30
Ali Josheghani
2fad6bb6cd fix(Shop): reorder components to include NowSell in the product display 2025-03-02 22:15:30 +03:30
56b519bdce fix(ConfigItem.tsx): improve code formatting and update button label for service details 2025-02-22 20:55:54 +03:30
0d3106c0d3 fix(ProductConfigList.tsx): update link destination for empty configs 2025-01-26 23:39:21 +03:30
Ali Josheghani
03996d8668 update config item tsx 2025-01-21 15:07:03 +03:30
Ali Josheghani
921e434d95 chore(package-lock.json): remove package lock json and insted use bun lockb 2025-01-21 15:04:03 +03:30
Ali Josheghani
dc21226f2a feat(bun.lockb): add bun lockb config 2025-01-21 15:03:10 +03:30
Ali Josheghani
2328e58ff5 Delete .github/workflows directory 2024-12-19 12:01:56 +03:30
Ali Josheghani
1a06948b35 fix(index.tsx): rempve unused code from index footer 2024-12-17 23:40:39 +03:30
Ali Josheghani
a0ca1a4a0f fix(CopyRight.tsx): fix "مطعلق" word to "متعلق" 2024-12-17 23:39:48 +03:30
Ali Josheghani
59520dafce feat(index.html):remove enmad img from footer 2024-12-17 23:37:41 +03:30
Ali Josheghani
96b7698d8d feat(ProductList.tsx): Added link to support chat and wrapped offline buy image in a link 2024-12-15 11:16:27 +03:30
Ali Josheghani
514e5e06fd chore : Update package-lock.json to reflect new versions of cross-spawn and nanoid 2024-12-12 20:04:00 +03:30
Ali Josheghani
d135f0cc0a feat(ProductList.tsx,offline-buy.jpg): Added offline buy image to ProductList component 2024-12-12 20:02:43 +03:30
alij
3cc3dc3542 (chore) chnage active id 2024-11-10 19:47:59 +03:30
alij
672a765ede (feat) add redirect to home for handle navigate to / without remove params 2024-11-10 18:14:07 +03:30
alij
52b2e30698 (feat) handle for save params when navigate to home 2024-11-10 18:13:13 +03:30
ALi Josheghani
aca1dd53ad feat: Add shop ID slice to store configuration 2024-10-30 11:33:00 +03:30
ALi Josheghani
b853d7df01 feat: Add shop ID slice to store configuration 2024-10-30 11:32:57 +03:30