- ایجاد پرامپت برای رفع خطای 404 ناشی از لینک `/doctor/undefined` در سایتهای بهبهان و یاسوج.
- افزودن کامپوننت `CityHighlights` برای نمایش محتوای یکتا و آمار پزشکان و تخصصهای پرمراجعه در صفحهٔ اصلی هر شهر.
- بهروزرسانی تستهای مربوط به کامپوننتهای `ItemDoctor` و `CityHighlights` برای اطمینان از عدم وجود لینکهای نامعتبر و نمایش صحیح اطلاعات.
- ایجاد سند جدید برای مستندسازی خطاهای Search Console که باگ نیستند و نیاز به رفع ندارند.
- افزودن تستهای واحد برای توابع `buildCityIntro` و دیگر توابع مرتبط با تولید متن یکتا برای صفحات لیست.
The backend now answers 503 with code MAINTENANCE_MODE while maintenance is
on. Without this change a visitor got a red error toast over a broken page
client-side, and a silently empty page server-side, because fetchReq discards
the status and returns null on any failure.
- lib/maintenance.js detects the state by BOTH status 503 and the error code;
a bare 503 can come from a reverse proxy and is not maintenance
- The axios interceptor checks it before the 401 branch, so a maintenance
response never triggers the refresh-token path or logs the user out
- fetchReq redirects to /maintenance, with a silentMaintenance opt-out used by
getStateInfo: that one runs inside generateMetadata and while rendering the
maintenance page itself, where a redirect is either ineffective or loops
- redirect() works by throwing, so the try/catch blocks in the doctors,
clinics and specialties pages now rethrow NEXT_REDIRECT instead of
swallowing it
- clinicApi.js handles 503 too; it previously rendered maintenance as a clinic
with zero doctors
- The page reuses the existing 404 design and is marked noindex
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Implemented canonical URL strategies for city-specific domains and entities.
- Added helper functions for domain and city resolution.
- Created tests for canonical URL generation and domain resolution.
- Introduced entity quality checks for doctors and clinics to ensure meaningful content.
- Developed unique introductory texts for listing pages to avoid duplicate content.
- Established robots.txt policies for listing pages to manage indexing based on user filters.
- Enhanced specialty content with dynamic introductions and FAQs to improve SEO.
- Updated `getStateInfo` to fetch site context for domains not in city.json, returning `repContext` with representative details.
- Implemented caching for site context requests to optimize performance.
- Modified doctor and clinic listing pages to pass the `domain` parameter when fetching data for global representatives.
- Adjusted metadata generation in layout and pages to reflect representative branding based on `repContext`.
- Added documentation for the new functionality in `.claude/prompt/global-rep-domain-site.md`.
- Add metadata to login and login-verify pages to prevent indexing.
- Update robots.txt to disallow additional sensitive paths.
- Enhance sitemap generation to filter by city and include accurate last modified dates.
- Refactor canonical URL generation to support multi-domain architecture, ensuring self-canonicalization for city domains.
- Remove deprecated CanonicalHandler component and streamline canonical URL handling.
- Introduce safe JSON-LD output to prevent XSS vulnerabilities.
- Add payment layout with appropriate metadata to prevent indexing.
- Conduct a comprehensive technical SEO audit and implement necessary fixes across the application.
feat(blog): implement loading and error handling components for blog pages
feat(clinic): add loading and error handling components for clinic pages
feat(doctor): create loading and error handling components for doctor pages
feat(clinics): add loading component for clinics page
feat(specialties): improve metadata for specialties page with Open Graph and Twitter images
feat(layout): add structured data for Organization and WebSite in layout
fix(middleware): restrict middleware execution to specific routes to improve performance
chore(audit): add comprehensive SEO and performance audit documentation
صفحات سرور (doctors, doctor/[slug], appointment/[doctorId]) از axios خام
استفاده میکردند که گواهی self-signed ddev محلی را رد میکرد
(unable to verify the first certificate). حالا از axiosInstance/fetchReq
در lib/req استفاده میکنند که در development آن را میپذیرد.
افزودن clinic-pro.ddev.site (http/https) به remotePatterns تصاویر.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Bumped versions for several packages including:
- @emotion/styled from ^11.14.0 to ^11.14.1
- @maptiler/sdk from ^2.4.0 to ^2.5.1
- @mui/icons-material from ^7.1.0 to ^7.3.6
- @mui/material from ^7.1.0 to ^7.3.6
- @mui/styled-engine-sc from ^6.0.0-alpha.18 to ^6.4.9
- @mui/x-charts from ^7.16.0 to ^7.29.1
- @mui/x-date-pickers from ^7.17.0 to ^7.29.4
- @next/third-parties from ^15.1.0 to ^15.5.7
- axios from ^1.7.7 to ^1.13.2
- dayjs from ^1.11.13 to ^1.11.19
- jspdf from ^3.0.1 to ^3.0.4
- next from ^14.2.20 to ^15.5.7
- next-themes from ^0.3.0 to ^0.4.6
- npm from ^10.8.2 to ^10.9.4
- react from ^18.0.0 to ^18.3.1
- react-dom from ^18 to ^18.3.1
- react-easy-crop from ^5.1.0 to ^5.5.6
- react-toastify from ^10.0.6 to ^11.0.5
- sharp from ^0.34.1 to ^0.34.5
- styled-components from ^6.1.11 to ^6.1.19
- stylis from ^4.3.4 to ^4.3.6
- swiper from ^11.1.9 to ^11.2.10
- postcss from ^8 to ^8.5.6
- prettier from ^3.5.3 to ^3.7.4
- tailwindcss from ^3.4.1 to ^3.4.18