diff --git a/components/Altcha.js b/components/Altcha.js
new file mode 100644
index 0000000..380ecf0
--- /dev/null
+++ b/components/Altcha.js
@@ -0,0 +1,70 @@
+"use client";
+
+import { useEffect, useRef, useState } from "react";
+
+// ALTCHA کپچای خودمیزبان روی بکاند clinicpro. widget فقط وقتی رندر میشود که
+// سرور کپچا را فعال کرده باشد (/api/v1/altcha/config). چون nobat724 روی دامنهی
+// جدا از API است، آدرس challenge باید absolute باشد.
+
+const API = process.env.NEXT_PUBLIC_API_URL;
+
+const FA_STRINGS = JSON.stringify({
+ label: "من ربات نیستم",
+ verifying: "در حال بررسی...",
+ verified: "تأیید شد",
+ waitAlert: "در حال بررسی... لطفاً منتظر بمانید.",
+ error: "احراز هویت ناموفق بود. کمی بعد دوباره تلاش کنید.",
+ expired: "احراز هویت منقضی شد. دوباره تلاش کنید.",
+});
+
+export default function Altcha({ onVerified }) {
+ const ref = useRef(null);
+ // null=در حال بررسی، true/false=فعال/غیرفعال بودن کپچا در سرور
+ const [enabled, setEnabled] = useState(null);
+
+ // ثبت custom element فقط در مرورگر (وابسته به customElements/DOM).
+ useEffect(() => {
+ import("altcha");
+ }, []);
+
+ useEffect(() => {
+ let alive = true;
+ fetch(`${API}/api/v1/altcha/config`)
+ .then((r) => r.json())
+ .then((c) => {
+ if (!alive) return;
+ setEnabled(!!c.enabled);
+ if (!c.enabled) onVerified(""); // کپچا خاموش → فرم بدون مانع ارسال شود
+ })
+ .catch(() => {
+ if (alive) setEnabled(false);
+ });
+ return () => {
+ alive = false;
+ };
+ }, [onVerified]);
+
+ useEffect(() => {
+ const el = ref.current;
+ if (!el) return;
+ const onStateChange = (e) => {
+ if (e.detail?.state === "verified" && e.detail.payload) {
+ onVerified(e.detail.payload);
+ }
+ };
+ el.addEventListener("statechange", onStateChange);
+ return () => el.removeEventListener("statechange", onStateChange);
+ }, [onVerified, enabled]);
+
+ if (enabled !== true) return null;
+
+ return (
+
+ );
+}
diff --git a/components/register/LogInPage.js b/components/register/LogInPage.js
index 2981d33..8486e29 100644
--- a/components/register/LogInPage.js
+++ b/components/register/LogInPage.js
@@ -5,10 +5,13 @@ import { InputAdornment, Button, CircularProgress } from "@mui/material";
import Link from "next/link";
import { useState } from "react";
import { toast } from "react-toastify";
+import Altcha from "@/components/Altcha";
function LogInPage({ setIsSendMsg, num, setNum, setUuid, matchedCity, setStep }) {
const [error, setError] = useState({ valid: true, text: "" });
const [loading, setLoading] = useState(false);
+ const [altcha, setAltcha] = useState("");
+ const [altchaKey, setAltchaKey] = useState(0); // remount widget برای challenge تازه بعد از خطا
const handleChange = (val) => {
const checkedNum = validatePhoneNumber(val);
@@ -24,7 +27,7 @@ function LogInPage({ setIsSendMsg, num, setNum, setUuid, matchedCity, setStep })
const handleReq = async () => {
setLoading(true);
request
- .sendCode(num, "", typeof window !== "undefined" ? window.location.hostname : "")
+ .sendCode(num, altcha, typeof window !== "undefined" ? window.location.hostname : "")
.then((response) => {
setLoading(false);
if (response.uuid) {
@@ -36,6 +39,9 @@ function LogInPage({ setIsSendMsg, num, setNum, setUuid, matchedCity, setStep })
})
.catch(() => {
setLoading(false);
+ // challenge یکبارمصرف است؛ بعد از خطا widget را برای challenge تازه ریمانت کن
+ setAltcha("");
+ setAltchaKey((k) => k + 1);
});
};
@@ -64,6 +70,7 @@ function LogInPage({ setIsSendMsg, num, setNum, setUuid, matchedCity, setStep })
{error.text}
+
+ >
);
}
diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md
index 4c50102..ecc0ba8 100644
--- a/graphify-out/GRAPH_REPORT.md
+++ b/graphify-out/GRAPH_REPORT.md
@@ -1,16 +1,16 @@
-# Graph Report - nobat724_front (2026-07-09)
+# Graph Report - nobat724_front (2026-07-10)
## Corpus Check
-- 595 files · ~537,275 words
+- 596 files · ~537,596 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
-- 2051 nodes · 2034 edges · 374 communities (344 shown, 30 thin omitted)
+- 2055 nodes · 2037 edges · 374 communities (344 shown, 30 thin omitted)
- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 99 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Graph Freshness
-- Built from commit: `a56b7e8d`
+- Built from commit: `ab2ab0de`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@@ -163,6 +163,8 @@
10. `Architecture Overview` - 10 edges
## Surprising Connections (you probably didn't know these)
+- `Dashboard()` --calls--> `safeJsonParse()` [INFERRED]
+ app/dashboard/page.js → lib/sanitize.js
- `AboutUsPage()` --calls--> `getStateInfo()` [INFERRED]
components/aboutUs/index.js → lib/getStateInfo.js
- `ContactUsPage()` --calls--> `getStateInfo()` [INFERRED]
@@ -171,8 +173,6 @@
components/home/search/index.js → lib/getStateInfo.js
- `StLayout()` --calls--> `getStateInfo()` [INFERRED]
components/layout/StLayout.js → lib/getStateInfo.js
-- `generateMetadata()` --calls--> `getStateInfo()` [INFERRED]
- app/about-us/page.js → lib/getStateInfo.js
## Import Cycles
- None detected.
@@ -184,12 +184,12 @@ Cohesion: 0.05
Nodes (27): BgGray(), ButtonMenu(), Col(), ModalLogout(), Footer(), head, LogoNamad(), Namads (+19 more)
### Community 1 - "Community 1"
-Cohesion: 0.24
-Nodes (8): Head(), convertTimestampToJalali(), convertTimestampToTime(), ButtonData(), DetailLg(), DetailSm(), Head(), Card()
+Cohesion: 0.36
+Nodes (5): convertTimestampToTime(), ButtonData(), DetailLg(), DetailSm(), Head()
### Community 2 - "Community 2"
Cohesion: 0.04
-Nodes (45): dependencies, aos, axios, @casl/ability, @casl/react, date-fns, dayjs, @emotion/cache (+37 more)
+Nodes (46): dependencies, altcha, aos, axios, @casl/ability, @casl/react, date-fns, dayjs (+38 more)
### Community 3 - "Community 3"
Cohesion: 0.24
@@ -204,8 +204,8 @@ Cohesion: 0.08
Nodes (18): AppointmentList(), ItemAppointment(), AboutDcotor(), DetailDoctor(), Link(), listLink, List(), VAZIR_WEIGHTS (+10 more)
### Community 6 - "Community 6"
-Cohesion: 0.06
-Nodes (17): Dashboard(), metadata, defineAbilitiesFor(), getUser(), formatToman(), rialToToman(), buildPatientUser(), safeJsonParse() (+9 more)
+Cohesion: 0.07
+Nodes (16): Dashboard(), metadata, defineAbilitiesFor(), getUser(), formatToman(), rialToToman(), buildPatientUser(), getServerAccessToken() (+8 more)
### Community 8 - "Community 8"
Cohesion: 0.13
@@ -240,8 +240,8 @@ Cohesion: 0.14
Nodes (10): Chart(), ProgressAll(), fallbackLabels, ProgressDetail(), Form(), Content(), Rates(), numberToArStyle() (+2 more)
### Community 16 - "Community 16"
-Cohesion: 0.25
-Nodes (6): Head(), AboutUsPage(), ourServices, Services(), TickOrangeA(), UnderlineLG()
+Cohesion: 0.14
+Nodes (10): Head(), AboutUsPage(), ourServices, Services(), SearchBar(), TickOrangeA(), UnderlineLG(), ButtonFilter() (+2 more)
### Community 17 - "Community 17"
Cohesion: 0.11
@@ -356,8 +356,8 @@ Cohesion: 0.14
Nodes (13): `hours/List.js`, آبجکت اسلات (از `adaptSlots` / API), تأیید و سختسازی غیرفعالبودن اسلاتهای گذشته در صفحهی نوبت, زمینه, فایلهای مرتبط, مشکل / هدف, نکات مهم, وضعیت فعلی (کد واقعی) (+5 more)
### Community 45 - "Community 45"
-Cohesion: 0.25
-Nodes (12): generateMetadata(), generateMetadata(), RootLayout(), imageUrl(), normalizeBlog(), getRequestOrigin(), safeJsonLd(), Blog() (+4 more)
+Cohesion: 0.23
+Nodes (11): generateMetadata(), generateMetadata(), imageUrl(), normalizeBlog(), safeJsonLd(), safeJsonParse(), Blog(), Doctor() (+3 more)
### Community 46 - "Community 46"
Cohesion: 0.22
@@ -464,8 +464,8 @@ Cohesion: 0.22
Nodes (7): degree, Form(), gender, degree, Form(), gender, filterList()
### Community 72 - "Community 72"
-Cohesion: 0.52
-Nodes (6): generateMetadata(), buildCanonicalPath(), buildCanonicalUrl(), buildMainCanonicalUrl(), getCanonicalUrl(), normalizeHost()
+Cohesion: 0.39
+Nodes (8): generateMetadata(), RootLayout(), buildCanonicalPath(), buildCanonicalUrl(), buildMainCanonicalUrl(), getCanonicalUrl(), getRequestOrigin(), normalizeHost()
### Community 73 - "Community 73"
Cohesion: 0.32
@@ -497,11 +497,7 @@ Nodes (11): رفع خطای `TypeError: fetch failed` در sitemap هنگام د
### Community 83 - "Community 83"
Cohesion: 0.24
-Nodes (6): STATUS_LABELS, Head(), listTab, Turns(), List(), STATUS_LABELS
-
-### Community 85 - "Community 85"
-Cohesion: 0.36
-Nodes (4): SearchBar(), ButtonFilter(), Fields(), RedirectLink()
+Nodes (7): Card(), STATUS_LABELS, Head(), listTab, Turns(), List(), STATUS_LABELS
### Community 86 - "Community 86"
Cohesion: 0.40
@@ -511,6 +507,10 @@ Nodes (5): Doctors(), FILTER_KEYS, generateMetadata(), listingRobots(), buildDoc
Cohesion: 0.33
Nodes (6): 1. افزودن صفحه جدید, 2. افزودن API Endpoint جدید, 3. افزودن کامپوننت جدید, 4. کار با تاریخ شمسی, 5. استفاده از Context, 📝 نکات توسعه
+### Community 89 - "Community 89"
+Cohesion: 0.28
+Nodes (4): Head(), convertTimestampToJalali(), RelatedContent(), Item()
+
### Community 90 - "Community 90"
Cohesion: 0.50
Nodes (4): buildDays(), InlineJalaliMonth(), MONTHS, WEEKDAYS
@@ -596,24 +596,24 @@ Cohesion: 0.33
Nodes (5): engines, node, name, private, version
## Knowledge Gaps
-- **697 isolated node(s):** `metadata`, `FILTER_KEYS`, `fallbackLabels`, `MaterialUISwitch`, `fixedIconData` (+692 more)
+- **699 isolated node(s):** `metadata`, `FILTER_KEYS`, `fallbackLabels`, `MaterialUISwitch`, `fixedIconData` (+694 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **30 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
-- **Why does `getStateInfo()` connect `Community 29` to `Community 0`, `Community 67`, `Community 70`, `Community 6`, `Community 72`, `Community 365`, `Community 45`, `Community 14`, `Community 16`, `Community 51`, `Community 85`, `Community 86`?**
- _High betweenness centrality (0.031) - this node is a cross-community bridge._
+- **Why does `getStateInfo()` connect `Community 29` to `Community 0`, `Community 67`, `Community 70`, `Community 6`, `Community 72`, `Community 365`, `Community 45`, `Community 14`, `Community 16`, `Community 51`, `Community 86`?**
+ _High betweenness centrality (0.032) - this node is a cross-community bridge._
- **Why does `imageUrl()` connect `Community 45` to `Community 0`, `Community 99`, `Community 4`, `Community 7`, `Community 365`, `Community 81`, `Community 55`, `Community 56`, `Community 89`?**
_High betweenness centrality (0.025) - this node is a cross-community bridge._
- **Why does `isRootCity()` connect `Community 51` to `Community 3`, `Community 29`?**
- _High betweenness centrality (0.015) - this node is a cross-community bridge._
+ _High betweenness centrality (0.016) - this node is a cross-community bridge._
- **Are the 22 inferred relationships involving `getStateInfo()` (e.g. with `generateMetadata()` and `AboutUsPage()`) actually correct?**
_`getStateInfo()` has 22 INFERRED edges - model-reasoned connections that need verification._
- **Are the 14 inferred relationships involving `imageUrl()` (e.g. with `generateMetadata()` and `generateMetadata()`) actually correct?**
_`imageUrl()` has 14 INFERRED edges - model-reasoned connections that need verification._
- **What connects `metadata`, `FILTER_KEYS`, `fallbackLabels` to the rest of the system?**
- _697 weakly-connected nodes found - possible documentation gaps or missing edges._
+ _699 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.05263157894736842 - nodes in this community are weakly interconnected._
\ No newline at end of file
diff --git a/graphify-out/cache/ast/v0.8.44/4b11a84f53730b5f86cd74fde2eb819405d6bf46e6ed72fff39cf82f1e2b13e8.json b/graphify-out/cache/ast/v0.8.44/4b11a84f53730b5f86cd74fde2eb819405d6bf46e6ed72fff39cf82f1e2b13e8.json
new file mode 100644
index 0000000..695c9c4
--- /dev/null
+++ b/graphify-out/cache/ast/v0.8.44/4b11a84f53730b5f86cd74fde2eb819405d6bf46e6ed72fff39cf82f1e2b13e8.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_package_json", "label": "package.json", "file_type": "code", "source_file": "package.json", "source_location": "L1"}, {"id": "nobat724_front_package_name", "label": "name", "file_type": "code", "source_file": "package.json", "source_location": "L2"}, {"id": "nobat724_front_package_version", "label": "version", "file_type": "code", "source_file": "package.json", "source_location": "L3"}, {"id": "nobat724_front_package_private", "label": "private", "file_type": "code", "source_file": "package.json", "source_location": "L4"}, {"id": "nobat724_front_package_engines", "label": "engines", "file_type": "code", "source_file": "package.json", "source_location": "L5"}, {"id": "nobat724_front_package_engines_node", "label": "node", "file_type": "code", "source_file": "package.json", "source_location": "L6"}, {"id": "nobat724_front_package_scripts", "label": "scripts", "file_type": "code", "source_file": "package.json", "source_location": "L8"}, {"id": "nobat724_front_package_scripts_dev", "label": "dev", "file_type": "code", "source_file": "package.json", "source_location": "L9"}, {"id": "nobat724_front_package_scripts_build", "label": "build", "file_type": "code", "source_file": "package.json", "source_location": "L10"}, {"id": "nobat724_front_package_scripts_start", "label": "start", "file_type": "code", "source_file": "package.json", "source_location": "L11"}, {"id": "nobat724_front_package_scripts_lint", "label": "lint", "file_type": "code", "source_file": "package.json", "source_location": "L12"}, {"id": "nobat724_front_package_scripts_test", "label": "test", "file_type": "code", "source_file": "package.json", "source_location": "L13"}, {"id": "nobat724_front_package_scripts_test_watch", "label": "test:watch", "file_type": "code", "source_file": "package.json", "source_location": "L14"}, {"id": "nobat724_front_package_scripts_test_cov", "label": "test:cov", "file_type": "code", "source_file": "package.json", "source_location": "L15"}, {"id": "nobat724_front_package_dependencies", "label": "dependencies", "file_type": "code", "source_file": "package.json", "source_location": "L17"}, {"id": "nobat724_front_package_dependencies_casl_ability", "label": "@casl/ability", "file_type": "code", "source_file": "package.json", "source_location": "L18"}, {"id": "nobat724_front_package_dependencies_casl_react", "label": "@casl/react", "file_type": "code", "source_file": "package.json", "source_location": "L19"}, {"id": "nobat724_front_package_dependencies_emotion_cache", "label": "@emotion/cache", "file_type": "code", "source_file": "package.json", "source_location": "L20"}, {"id": "nobat724_front_package_dependencies_emotion_react", "label": "@emotion/react", "file_type": "code", "source_file": "package.json", "source_location": "L21"}, {"id": "nobat724_front_package_dependencies_emotion_styled", "label": "@emotion/styled", "file_type": "code", "source_file": "package.json", "source_location": "L22"}, {"id": "nobat724_front_package_dependencies_maptiler_sdk", "label": "@maptiler/sdk", "file_type": "code", "source_file": "package.json", "source_location": "L23"}, {"id": "nobat724_front_package_dependencies_mui_icons_material", "label": "@mui/icons-material", "file_type": "code", "source_file": "package.json", "source_location": "L24"}, {"id": "nobat724_front_package_dependencies_mui_material", "label": "@mui/material", "file_type": "code", "source_file": "package.json", "source_location": "L25"}, {"id": "nobat724_front_package_dependencies_mui_styled_engine", "label": "@mui/styled-engine", "file_type": "code", "source_file": "package.json", "source_location": "L26"}, {"id": "nobat724_front_package_dependencies_mui_x_charts", "label": "@mui/x-charts", "file_type": "code", "source_file": "package.json", "source_location": "L27"}, {"id": "nobat724_front_package_dependencies_mui_x_date_pickers", "label": "@mui/x-date-pickers", "file_type": "code", "source_file": "package.json", "source_location": "L28"}, {"id": "nobat724_front_package_dependencies_next_third_parties", "label": "@next/third-parties", "file_type": "code", "source_file": "package.json", "source_location": "L29"}, {"id": "nobat724_front_package_dependencies_altcha", "label": "altcha", "file_type": "code", "source_file": "package.json", "source_location": "L30"}, {"id": "nobat724_front_package_dependencies_aos", "label": "aos", "file_type": "code", "source_file": "package.json", "source_location": "L31"}, {"id": "nobat724_front_package_dependencies_axios", "label": "axios", "file_type": "code", "source_file": "package.json", "source_location": "L32"}, {"id": "nobat724_front_package_dependencies_date_fns", "label": "date-fns", "file_type": "code", "source_file": "package.json", "source_location": "L33"}, {"id": "nobat724_front_package_dependencies_dayjs", "label": "dayjs", "file_type": "code", "source_file": "package.json", "source_location": "L34"}, {"id": "nobat724_front_package_dependencies_html_to_image", "label": "html-to-image", "file_type": "code", "source_file": "package.json", "source_location": "L35"}, {"id": "nobat724_front_package_dependencies_html2canvas", "label": "html2canvas", "file_type": "code", "source_file": "package.json", "source_location": "L36"}, {"id": "nobat724_front_package_dependencies_i", "label": "i", "file_type": "code", "source_file": "package.json", "source_location": "L37"}, {"id": "nobat724_front_package_dependencies_isomorphic_dompurify", "label": "isomorphic-dompurify", "file_type": "code", "source_file": "package.json", "source_location": "L38"}, {"id": "nobat724_front_package_dependencies_jalaali_js", "label": "jalaali-js", "file_type": "code", "source_file": "package.json", "source_location": "L39"}, {"id": "nobat724_front_package_dependencies_jalali_moment", "label": "jalali-moment", "file_type": "code", "source_file": "package.json", "source_location": "L40"}, {"id": "nobat724_front_package_dependencies_js_cookie", "label": "js-cookie", "file_type": "code", "source_file": "package.json", "source_location": "L41"}, {"id": "nobat724_front_package_dependencies_jspdf", "label": "jspdf", "file_type": "code", "source_file": "package.json", "source_location": "L42"}, {"id": "nobat724_front_package_dependencies_moment_jalaali", "label": "moment-jalaali", "file_type": "code", "source_file": "package.json", "source_location": "L43"}, {"id": "nobat724_front_package_dependencies_next", "label": "next", "file_type": "code", "source_file": "package.json", "source_location": "L44"}, {"id": "nobat724_front_package_dependencies_next_themes", "label": "next-themes", "file_type": "code", "source_file": "package.json", "source_location": "L45"}, {"id": "nobat724_front_package_dependencies_npm", "label": "npm", "file_type": "code", "source_file": "package.json", "source_location": "L46"}, {"id": "nobat724_front_package_dependencies_postcss", "label": "postcss", "file_type": "code", "source_file": "package.json", "source_location": "L47"}, {"id": "nobat724_front_package_dependencies_qrcode", "label": "qrcode", "file_type": "code", "source_file": "package.json", "source_location": "L48"}, {"id": "nobat724_front_package_dependencies_qrcode_react", "label": "qrcode.react", "file_type": "code", "source_file": "package.json", "source_location": "L49"}, {"id": "nobat724_front_package_dependencies_react", "label": "react", "file_type": "code", "source_file": "package.json", "source_location": "L50"}, {"id": "nobat724_front_package_dependencies_react_dom", "label": "react-dom", "file_type": "code", "source_file": "package.json", "source_location": "L51"}, {"id": "nobat724_front_package_dependencies_react_easy_crop", "label": "react-easy-crop", "file_type": "code", "source_file": "package.json", "source_location": "L52"}, {"id": "nobat724_front_package_dependencies_react_google_map_picker", "label": "react-google-map-picker", "file_type": "code", "source_file": "package.json", "source_location": "L53"}, {"id": "nobat724_front_package_dependencies_react_images_uploading", "label": "react-images-uploading", "file_type": "code", "source_file": "package.json", "source_location": "L54"}, {"id": "nobat724_front_package_dependencies_react_toastify", "label": "react-toastify", "file_type": "code", "source_file": "package.json", "source_location": "L55"}, {"id": "nobat724_front_package_dependencies_sharp", "label": "sharp", "file_type": "code", "source_file": "package.json", "source_location": "L56"}, {"id": "nobat724_front_package_dependencies_styled_components", "label": "styled-components", "file_type": "code", "source_file": "package.json", "source_location": "L57"}, {"id": "nobat724_front_package_dependencies_stylis", "label": "stylis", "file_type": "code", "source_file": "package.json", "source_location": "L58"}, {"id": "nobat724_front_package_dependencies_stylis_plugin_rtl", "label": "stylis-plugin-rtl", "file_type": "code", "source_file": "package.json", "source_location": "L59"}, {"id": "nobat724_front_package_dependencies_swiper", "label": "swiper", "file_type": "code", "source_file": "package.json", "source_location": "L60"}, {"id": "nobat724_front_package_dependencies_tailwindcss", "label": "tailwindcss", "file_type": "code", "source_file": "package.json", "source_location": "L61"}, {"id": "nobat724_front_package_dependencies_uninstall", "label": "uninstall", "file_type": "code", "source_file": "package.json", "source_location": "L62"}, {"id": "nobat724_front_package_devdependencies", "label": "devDependencies", "file_type": "code", "source_file": "package.json", "source_location": "L64"}, {"id": "nobat724_front_package_devdependencies_eslint_eslintrc", "label": "@eslint/eslintrc", "file_type": "code", "source_file": "package.json", "source_location": "L65"}, {"id": "nobat724_front_package_devdependencies_testing_library_dom", "label": "@testing-library/dom", "file_type": "code", "source_file": "package.json", "source_location": "L66"}, {"id": "nobat724_front_package_devdependencies_testing_library_jest_dom", "label": "@testing-library/jest-dom", "file_type": "code", "source_file": "package.json", "source_location": "L67"}, {"id": "nobat724_front_package_devdependencies_testing_library_react", "label": "@testing-library/react", "file_type": "code", "source_file": "package.json", "source_location": "L68"}, {"id": "nobat724_front_package_devdependencies_testing_library_user_event", "label": "@testing-library/user-event", "file_type": "code", "source_file": "package.json", "source_location": "L69"}, {"id": "nobat724_front_package_devdependencies_vitejs_plugin_react", "label": "@vitejs/plugin-react", "file_type": "code", "source_file": "package.json", "source_location": "L70"}, {"id": "nobat724_front_package_devdependencies_babel_plugin_react_compiler", "label": "babel-plugin-react-compiler", "file_type": "code", "source_file": "package.json", "source_location": "L71"}, {"id": "nobat724_front_package_devdependencies_cross_env", "label": "cross-env", "file_type": "code", "source_file": "package.json", "source_location": "L72"}, {"id": "nobat724_front_package_devdependencies_eslint", "label": "eslint", "file_type": "code", "source_file": "package.json", "source_location": "L73"}, {"id": "nobat724_front_package_devdependencies_eslint_config_next", "label": "eslint-config-next", "file_type": "code", "source_file": "package.json", "source_location": "L74"}, {"id": "nobat724_front_package_devdependencies_jsdom", "label": "jsdom", "file_type": "code", "source_file": "package.json", "source_location": "L75"}, {"id": "nobat724_front_package_devdependencies_prettier", "label": "prettier", "file_type": "code", "source_file": "package.json", "source_location": "L76"}, {"id": "nobat724_front_package_devdependencies_typescript", "label": "typescript", "file_type": "code", "source_file": "package.json", "source_location": "L77"}, {"id": "nobat724_front_package_devdependencies_vitest", "label": "vitest", "file_type": "code", "source_file": "package.json", "source_location": "L78"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_package_json", "target": "nobat724_front_package_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L2", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_package_json", "target": "nobat724_front_package_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L3", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_package_json", "target": "nobat724_front_package_private", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L4", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_package_json", "target": "nobat724_front_package_engines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L5", "weight": 1.0}, {"source": "nobat724_front_package_engines", "target": "nobat724_front_package_engines_node", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_package_json", "target": "nobat724_front_package_scripts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L8", "weight": 1.0}, {"source": "nobat724_front_package_scripts", "target": "nobat724_front_package_scripts_dev", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L9", "weight": 1.0}, {"source": "nobat724_front_package_scripts", "target": "nobat724_front_package_scripts_build", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L10", "weight": 1.0}, {"source": "nobat724_front_package_scripts", "target": "nobat724_front_package_scripts_start", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L11", "weight": 1.0}, {"source": "nobat724_front_package_scripts", "target": "nobat724_front_package_scripts_lint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L12", "weight": 1.0}, {"source": "nobat724_front_package_scripts", "target": "nobat724_front_package_scripts_test", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L13", "weight": 1.0}, {"source": "nobat724_front_package_scripts", "target": "nobat724_front_package_scripts_test_watch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L14", "weight": 1.0}, {"source": "nobat724_front_package_scripts", "target": "nobat724_front_package_scripts_test_cov", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L15", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_package_json", "target": "nobat724_front_package_dependencies", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L17", "weight": 1.0}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_casl_ability", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L18", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_casl_ability", "target": "casl_ability", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L18", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_casl_react", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L19", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_casl_react", "target": "casl_react", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L19", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_emotion_cache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L20", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_emotion_cache", "target": "emotion_cache", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L20", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_emotion_react", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L21", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_emotion_react", "target": "emotion_react", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L21", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_emotion_styled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L22", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_emotion_styled", "target": "emotion_styled", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L22", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_maptiler_sdk", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L23", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_maptiler_sdk", "target": "maptiler_sdk", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L23", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_mui_icons_material", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L24", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_mui_icons_material", "target": "mui_icons_material", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L24", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_mui_material", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L25", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_mui_material", "target": "mui_material", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L25", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_mui_styled_engine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L26", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_mui_styled_engine", "target": "mui_styled_engine", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L26", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_mui_x_charts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L27", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_mui_x_charts", "target": "mui_x_charts", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L27", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_mui_x_date_pickers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L28", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_mui_x_date_pickers", "target": "mui_x_date_pickers", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L28", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_next_third_parties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L29", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_next_third_parties", "target": "next_third_parties", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L29", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_altcha", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L30", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_altcha", "target": "altcha", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L30", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_aos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L31", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_aos", "target": "aos", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L31", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_axios", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L32", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_axios", "target": "axios", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L32", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_date_fns", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L33", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_date_fns", "target": "date_fns", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L33", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_dayjs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L34", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_dayjs", "target": "dayjs", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L34", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_html_to_image", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L35", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_html_to_image", "target": "html_to_image", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L35", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_html2canvas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L36", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_html2canvas", "target": "html2canvas", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L36", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L37", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_i", "target": "i", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L37", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_isomorphic_dompurify", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L38", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_isomorphic_dompurify", "target": "isomorphic_dompurify", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L38", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_jalaali_js", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L39", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_jalaali_js", "target": "jalaali_js", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L39", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_jalali_moment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L40", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_jalali_moment", "target": "jalali_moment", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L40", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_js_cookie", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L41", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_js_cookie", "target": "js_cookie", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L41", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_jspdf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L42", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_jspdf", "target": "jspdf", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L42", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_moment_jalaali", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L43", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_moment_jalaali", "target": "moment_jalaali", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L43", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_next", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L44", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_next", "target": "next", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L44", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_next_themes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L45", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_next_themes", "target": "next_themes", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L45", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_npm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L46", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_npm", "target": "npm", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L46", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_postcss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L47", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_postcss", "target": "postcss", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L47", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_qrcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L48", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_qrcode", "target": "qrcode", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L48", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_qrcode_react", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L49", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_qrcode_react", "target": "qrcode_react", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L49", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_react", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L50", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_react", "target": "react", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L50", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_react_dom", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L51", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_react_dom", "target": "react_dom", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L51", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_react_easy_crop", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L52", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_react_easy_crop", "target": "react_easy_crop", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L52", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_react_google_map_picker", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L53", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_react_google_map_picker", "target": "react_google_map_picker", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L53", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_react_images_uploading", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L54", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_react_images_uploading", "target": "react_images_uploading", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L54", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_react_toastify", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L55", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_react_toastify", "target": "react_toastify", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L55", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_sharp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L56", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_sharp", "target": "sharp", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L56", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_styled_components", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L57", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_styled_components", "target": "styled_components", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L57", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_stylis", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L58", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_stylis", "target": "stylis", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L58", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_stylis_plugin_rtl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L59", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_stylis_plugin_rtl", "target": "stylis_plugin_rtl", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L59", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_swiper", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L60", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_swiper", "target": "swiper", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L60", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_tailwindcss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L61", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_tailwindcss", "target": "tailwindcss", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L61", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_dependencies", "target": "nobat724_front_package_dependencies_uninstall", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L62", "weight": 1.0}, {"source": "nobat724_front_package_dependencies_uninstall", "target": "uninstall", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L62", "weight": 1.0, "context": "import"}, {"source": "users_hamed_pj_my_pj_clinic_pro_nobat724_front_package_json", "target": "nobat724_front_package_devdependencies", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L64", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_eslint_eslintrc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L65", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_eslint_eslintrc", "target": "eslint_eslintrc", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L65", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_testing_library_dom", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L66", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_testing_library_dom", "target": "testing_library_dom", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L66", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_testing_library_jest_dom", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L67", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_testing_library_jest_dom", "target": "testing_library_jest_dom", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L67", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_testing_library_react", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L68", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_testing_library_react", "target": "testing_library_react", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L68", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_testing_library_user_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L69", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_testing_library_user_event", "target": "testing_library_user_event", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L69", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_vitejs_plugin_react", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L70", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_vitejs_plugin_react", "target": "vitejs_plugin_react", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L70", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_babel_plugin_react_compiler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L71", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_babel_plugin_react_compiler", "target": "babel_plugin_react_compiler", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L71", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_cross_env", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L72", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_cross_env", "target": "cross_env", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L72", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_eslint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L73", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_eslint", "target": "eslint", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L73", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_eslint_config_next", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L74", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_eslint_config_next", "target": "eslint_config_next", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L74", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_jsdom", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L75", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_jsdom", "target": "jsdom", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L75", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_prettier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L76", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_prettier", "target": "prettier", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L76", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_typescript", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L77", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_typescript", "target": "typescript", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L77", "weight": 1.0, "context": "import"}, {"source": "nobat724_front_package_devdependencies", "target": "nobat724_front_package_devdependencies_vitest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L78", "weight": 1.0}, {"source": "nobat724_front_package_devdependencies_vitest", "target": "vitest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L78", "weight": 1.0, "context": "import"}]}
\ No newline at end of file
diff --git a/graphify-out/cache/stat-index.json b/graphify-out/cache/stat-index.json
index 128b232..354155c 100644
--- a/graphify-out/cache/stat-index.json
+++ b/graphify-out/cache/stat-index.json
@@ -1 +1 @@
-{"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/city.json":{"size":50423,"mtime_ns":1783500874424443420,"hash":"7cb85d049bcf4288946e6f3551efd44371501f29b7ff2c0ac51e59a6aa673f0f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/doctor_services.json":{"size":46716,"mtime_ns":1782843473061355065,"hash":"69c0d8624eabb28ee1926dd11d83d02a01adf8913f80dede1ad843c21ebc0258"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/education.json":{"size":360,"mtime_ns":1783066605170617760,"hash":"440ac7ee3fcce903f6aca0296103712fc17a1e9e86611527e9999c591573a2a2"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/progress_detail.json":{"size":519,"mtime_ns":1783066616077124496,"hash":"80fa177614a400037aa8b30941d025013544ef3ee864a7696d732cdac1cc6c3c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/specialties.json":{"size":18764,"mtime_ns":1783065555796941169,"hash":"62b3ddfef408bb4f96f9ddd86862aa84919e27188e9fee49244dd8255e516914"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/state.json":{"size":4364,"mtime_ns":1782043006598236765,"hash":"87ca9a51f21c57083962121c571035a00e774a1a34cf519b0325450f882d04fd"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/jsconfig.json":{"size":72,"mtime_ns":1760953552262982824,"hash":"3c07efb26e59f46bcab477c7b4d1d68958c43ec0cceda5cb735726790af4fe76"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/liara.json":{"size":391,"mtime_ns":1782752961370207712,"hash":"10033b140aad3ee501bd9a5653eb0a1d43fe53aee55877becfca5a5d1b8a14b5"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/package.json":{"size":2250,"mtime_ns":1783320697752623093,"hash":"33b42f2ce8cac4d3129ca3504a45b69acb7d2d8a95b8a4965cd207f8faa66044"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/adapt-backend-audit-api.md":{"size":9483,"mtime_ns":1782671262951968193,"hash":"e19cc538d048d969601b941242dd729de7f7dea14a403bbe2ff5e134647aa10d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-calendar-disabled-dates.md":{"size":9763,"mtime_ns":1781597583936646960,"hash":"e628c04749776a9b8042e5528f915660859a7cdfb6dc12d903cb1b2a73cb24ba"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-detail-fields-fix.md":{"size":4099,"mtime_ns":1781598090800373168,"hash":"2ab9c060be8be2d461b1ffd2995851906d66e25c229735a3219f85e1f8195839"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-required-account-fields.md":{"size":7280,"mtime_ns":1781597583936937752,"hash":"556a7ecaeb0c4bde3e6b682a03fea79fdaf7827c9d62ebb5c9b1cd58c427dc13"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/birthday-picker-year-month-day.md":{"size":7704,"mtime_ns":1781597583937172919,"hash":"a588d0d0150fcd8aaef3a41ebdad0404b8fa2c61855d157285aeb9dda04ef3ab"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-lock-patient-flow.md":{"size":9588,"mtime_ns":1781597583937571794,"hash":"d78e22adc6d096b775cdcdc129b12347c337cff71afcb2b708c2cbca82486252"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-send-representation.md":{"size":5088,"mtime_ns":1782304138361157784,"hash":"be8fa462416ccec3ff0f7e60b9d042def7fc27e7f8c03c577630fbb118e77482"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/city-seo-optimization.md":{"size":12088,"mtime_ns":1783069426847432170,"hash":"a0029107f5ad368d237cbf3b7ef28c7b7906794b6fb0da4a00180c0d5789d2d6"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/clinic-seo-schema-knowledge-panel.md":{"size":9490,"mtime_ns":1782035037082293145,"hash":"eb138f4534fc1433698377ae9673b1e22b8627dd564124c895efaf3bd58b64fe"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/connect-panel-dashboard-to-api.md":{"size":13193,"mtime_ns":1781597583937858961,"hash":"17a0579ff0b02c7d73fbdaaabdf26ae1dc668a0e6ab1fe3ff70a8222630b548f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/currency-toman-display-front.md":{"size":6340,"mtime_ns":1783060321819663682,"hash":"d260ca8d266e49ee94910a03c027d8c2b83461c0a40ca046ba1b6fac591f614f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/dashboard-tabs-real-data.md":{"size":10762,"mtime_ns":1781597583938112795,"hash":"e6cd614d25692aeefc353b2db4362ea2a269d2fe652151f227b6b855d33f5be3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-poster-redesign.md":{"size":13362,"mtime_ns":1783190129986251542,"hash":"8113bbc0cb9b92135d3a293d761ff889a5f78b9d05d7273c7f8b0736c229c68f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-seo-schema-knowledge-panel.md":{"size":16103,"mtime_ns":1782031319440018719,"hash":"a1e7d5a4da148b5b13b8800f09d1417ff7a54d20c847b2738624b9d3e72659fc"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-appointment-booking-flow.md":{"size":19846,"mtime_ns":1781597583938358921,"hash":"f023a2e60de677580f5eb6ca22c299f10ee2c557be036cb5adcfa8917ef7d6fa"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-appointment-payment-flow.md":{"size":12476,"mtime_ns":1781597583938747463,"hash":"18b75a0aa94343da7fe5d77403f73b9e704527a92f8da7db04c627303413ef82"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-dashboard-uuid-and-lists.md":{"size":8449,"mtime_ns":1781597583938977130,"hash":"c9171ffaaad4600e4012c4dc7e8d747b8946ba451dfa315605e8ff4928694535"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctor-free-turn-disabled.md":{"size":7505,"mtime_ns":1782107579291283238,"hash":"01769376a658f7bf4c1c2ad9349b00581d485f9b199f48871b79333430847f0e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctor-poster-download-image.md":{"size":8557,"mtime_ns":1783188160359344560,"hash":"11395172e2e3d905b4873294ed9df03919796e3c27396fcfc3816fccf38d456c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctors-filter-performance.md":{"size":7565,"mtime_ns":1782043739683215914,"hash":"a2bff95d8ec72493e859cb174fca8469022ee7669f193d889e6e3d2b59bd97b3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-header-logged-state.md":{"size":7287,"mtime_ns":1781597583939167297,"hash":"9fa28b5810446e5d2cf89ccf2f58a9976c4e9ce3975df5a3b32f3c3eb50a0dce"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-login-bugs.md":{"size":5993,"mtime_ns":1782035969986699960,"hash":"94add08ebe87780fbd4fccf08ed11be2cb45d55828a81f6cc9bc39c79902c040"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-login-session-userinfo.md":{"size":8739,"mtime_ns":1781597583939455089,"hash":"22044e56711732a73f5130b6d38607cd52df0e22fc19c6bd5778544486df932e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-my-appointments-status-filter.md":{"size":6079,"mtime_ns":1781597583939678131,"hash":"cf4be2acf9ffc36974a6f6999cf2cc5259b73be544a3e0bcaf0f589f34943c4d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-payment-gateway-flow.md":{"size":11147,"mtime_ns":1782981612166014856,"hash":"c6e6c55b51cabc086cfb88e97ae4977b2f8587822a38232102bea1d45b94f0ab"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-token-storage-xss-headers.md":{"size":11238,"mtime_ns":1781946381493130088,"hash":"88ae04aa6c4de588a6b7fab59d6fc9426d7b1b43c75a1e1e4103fdcf0edfc6df"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/liara-deploy.md":{"size":9137,"mtime_ns":1782750983100811315,"hash":"40d115b3bc3a43851f8e317427e23bd857de37f77bb5b2080077c69e774d1a53"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-root-domain-not-city.md":{"size":8911,"mtime_ns":1783016271523973931,"hash":"7abb24fe0c3e3ea6125318b160cba6c41c57be779a3a96dccc77be825cb2d713"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-test-suite.md":{"size":19981,"mtime_ns":1782675306936470499,"hash":"76e8926e91c5544fd793ecba45b8b4db9bff5f11593d3ed64a5a8f308ee745e9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/otp-sms-site-name.md":{"size":4341,"mtime_ns":1783070832183884597,"hash":"c4c736e8535fae943d10e3bfc9aa45b546be27aef879ddc7b919caa7790ff2c5"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/payment-flow-frontend.md":{"size":6753,"mtime_ns":1782992956701932660,"hash":"6913de88e303725560499adef7c1ce2583e257eef0b083758cb67eab05d46151"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/payment-single-flow-frontend.md":{"size":6327,"mtime_ns":1782994816069623536,"hash":"4bf6587d44aa63a0b48c7a22fe7d01cf30be8d2a5385fc3205e3ba4155437411"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/profile-birthday-send-direction-fix.md":{"size":3365,"mtime_ns":1781597583939863923,"hash":"66a55129ea309cca03cc872462fd47053c309c64720784e79f21b4efb5ae4ec0"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/rating-rich-ui-wiring.md":{"size":9378,"mtime_ns":1781597583940215798,"hash":"add909cd22a22c9352f1cd3a6b4bb2ad6672e7784198164f8dbfda25d2f0f93a"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/seo-performance-rendering-audit.md":{"size":15903,"mtime_ns":1782028177971687083,"hash":"10bcf71f9a660ad56f97bb92cb033794f8e65858f761c286191277095231e09a"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/specialties-doctor-count-wire.md":{"size":5538,"mtime_ns":1781599369387196341,"hash":"5d9ed62a164217933720bd64bef89e07413a7e82fe92171cf9508b24e0e5d838"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/technical-seo-audit-multidomain.md":{"size":19291,"mtime_ns":1783252646626491244,"hash":"d070d13a6d70943eb3b5332a9909bcdc1eff6826610b93156c767087628cb143"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/upgrade-next-16.md":{"size":13380,"mtime_ns":1783320697635832503,"hash":"e0f930abf1bac512900eb97733708e398c52df8a5a088d3cd11212546f210eb9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/user-profile-no-404.md":{"size":6562,"mtime_ns":1781597583940472507,"hash":"a5e69f183ea4fdd29b651385b5350ecc1d7c52097b7a4228e7d1be03b98f7c61"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/verify-past-slots-disabled.md":{"size":5350,"mtime_ns":1781597583940678257,"hash":"bfc8ebe5dcd533c93c86935a95afbcd9456f3828d6801dc02a4231a52b6b06b9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/CLAUDE.md":{"size":5513,"mtime_ns":1783323447323021515,"hash":"847a296771bd1672e5a798d5f0451ca074cd45536c02d88cd8c08b3857cc7b27"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/README.md":{"size":23904,"mtime_ns":1783323437507877219,"hash":"c71ff73b6ff7b535887b1f016ed07f863d3ebd283571b91baacccb9fb53f685d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-sitemap-build-fetch-failed.md":{"size":6887,"mtime_ns":1783337915815095855,"hash":"f500d64d164ae77195e7aecbb1ff75b8cec4e1bfceb971ffac3cc46666071630"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/city-json-seo-fields.md":{"size":8340,"mtime_ns":1783498761590225655,"hash":"bad09a70d9f8b419ea377acb5fabb95cee6de33307381fc161c99a402018cd59"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/global-rep-domain-site.md":{"size":8662,"mtime_ns":1783568045290634030,"hash":"487a2843c238490c773599dc61eb97293f25564481d3dbe6a22462ca7efe3f63"}}
\ No newline at end of file
+{"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/city.json":{"size":50423,"mtime_ns":1783500874424443420,"hash":"7cb85d049bcf4288946e6f3551efd44371501f29b7ff2c0ac51e59a6aa673f0f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/doctor_services.json":{"size":46716,"mtime_ns":1782843473061355065,"hash":"69c0d8624eabb28ee1926dd11d83d02a01adf8913f80dede1ad843c21ebc0258"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/education.json":{"size":360,"mtime_ns":1783066605170617760,"hash":"440ac7ee3fcce903f6aca0296103712fc17a1e9e86611527e9999c591573a2a2"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/progress_detail.json":{"size":519,"mtime_ns":1783066616077124496,"hash":"80fa177614a400037aa8b30941d025013544ef3ee864a7696d732cdac1cc6c3c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/specialties.json":{"size":18764,"mtime_ns":1783065555796941169,"hash":"62b3ddfef408bb4f96f9ddd86862aa84919e27188e9fee49244dd8255e516914"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/data/state.json":{"size":4364,"mtime_ns":1782043006598236765,"hash":"87ca9a51f21c57083962121c571035a00e774a1a34cf519b0325450f882d04fd"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/jsconfig.json":{"size":72,"mtime_ns":1760953552262982824,"hash":"3c07efb26e59f46bcab477c7b4d1d68958c43ec0cceda5cb735726790af4fe76"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/liara.json":{"size":391,"mtime_ns":1782752961370207712,"hash":"10033b140aad3ee501bd9a5653eb0a1d43fe53aee55877becfca5a5d1b8a14b5"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/package.json":{"size":2274,"mtime_ns":1783669847776114745,"hash":"4b11a84f53730b5f86cd74fde2eb819405d6bf46e6ed72fff39cf82f1e2b13e8"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/adapt-backend-audit-api.md":{"size":9483,"mtime_ns":1782671262951968193,"hash":"e19cc538d048d969601b941242dd729de7f7dea14a403bbe2ff5e134647aa10d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-calendar-disabled-dates.md":{"size":9763,"mtime_ns":1781597583936646960,"hash":"e628c04749776a9b8042e5528f915660859a7cdfb6dc12d903cb1b2a73cb24ba"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-detail-fields-fix.md":{"size":4099,"mtime_ns":1781598090800373168,"hash":"2ab9c060be8be2d461b1ffd2995851906d66e25c229735a3219f85e1f8195839"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/appointment-required-account-fields.md":{"size":7280,"mtime_ns":1781597583936937752,"hash":"556a7ecaeb0c4bde3e6b682a03fea79fdaf7827c9d62ebb5c9b1cd58c427dc13"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/birthday-picker-year-month-day.md":{"size":7704,"mtime_ns":1781597583937172919,"hash":"a588d0d0150fcd8aaef3a41ebdad0404b8fa2c61855d157285aeb9dda04ef3ab"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-lock-patient-flow.md":{"size":9588,"mtime_ns":1781597583937571794,"hash":"d78e22adc6d096b775cdcdc129b12347c337cff71afcb2b708c2cbca82486252"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/booking-send-representation.md":{"size":5088,"mtime_ns":1782304138361157784,"hash":"be8fa462416ccec3ff0f7e60b9d042def7fc27e7f8c03c577630fbb118e77482"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/city-seo-optimization.md":{"size":12088,"mtime_ns":1783069426847432170,"hash":"a0029107f5ad368d237cbf3b7ef28c7b7906794b6fb0da4a00180c0d5789d2d6"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/clinic-seo-schema-knowledge-panel.md":{"size":9490,"mtime_ns":1782035037082293145,"hash":"eb138f4534fc1433698377ae9673b1e22b8627dd564124c895efaf3bd58b64fe"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/connect-panel-dashboard-to-api.md":{"size":13193,"mtime_ns":1781597583937858961,"hash":"17a0579ff0b02c7d73fbdaaabdf26ae1dc668a0e6ab1fe3ff70a8222630b548f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/currency-toman-display-front.md":{"size":6340,"mtime_ns":1783060321819663682,"hash":"d260ca8d266e49ee94910a03c027d8c2b83461c0a40ca046ba1b6fac591f614f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/dashboard-tabs-real-data.md":{"size":10762,"mtime_ns":1781597583938112795,"hash":"e6cd614d25692aeefc353b2db4362ea2a269d2fe652151f227b6b855d33f5be3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-poster-redesign.md":{"size":13362,"mtime_ns":1783190129986251542,"hash":"8113bbc0cb9b92135d3a293d761ff889a5f78b9d05d7273c7f8b0736c229c68f"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/doctor-seo-schema-knowledge-panel.md":{"size":16103,"mtime_ns":1782031319440018719,"hash":"a1e7d5a4da148b5b13b8800f09d1417ff7a54d20c847b2738624b9d3e72659fc"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-appointment-booking-flow.md":{"size":19846,"mtime_ns":1781597583938358921,"hash":"f023a2e60de677580f5eb6ca22c299f10ee2c557be036cb5adcfa8917ef7d6fa"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-appointment-payment-flow.md":{"size":12476,"mtime_ns":1781597583938747463,"hash":"18b75a0aa94343da7fe5d77403f73b9e704527a92f8da7db04c627303413ef82"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-dashboard-uuid-and-lists.md":{"size":8449,"mtime_ns":1781597583938977130,"hash":"c9171ffaaad4600e4012c4dc7e8d747b8946ba451dfa315605e8ff4928694535"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctor-free-turn-disabled.md":{"size":7505,"mtime_ns":1782107579291283238,"hash":"01769376a658f7bf4c1c2ad9349b00581d485f9b199f48871b79333430847f0e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctor-poster-download-image.md":{"size":8557,"mtime_ns":1783188160359344560,"hash":"11395172e2e3d905b4873294ed9df03919796e3c27396fcfc3816fccf38d456c"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-doctors-filter-performance.md":{"size":7565,"mtime_ns":1782043739683215914,"hash":"a2bff95d8ec72493e859cb174fca8469022ee7669f193d889e6e3d2b59bd97b3"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-header-logged-state.md":{"size":7287,"mtime_ns":1781597583939167297,"hash":"9fa28b5810446e5d2cf89ccf2f58a9976c4e9ce3975df5a3b32f3c3eb50a0dce"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-login-bugs.md":{"size":5993,"mtime_ns":1782035969986699960,"hash":"94add08ebe87780fbd4fccf08ed11be2cb45d55828a81f6cc9bc39c79902c040"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-login-session-userinfo.md":{"size":8739,"mtime_ns":1781597583939455089,"hash":"22044e56711732a73f5130b6d38607cd52df0e22fc19c6bd5778544486df932e"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-my-appointments-status-filter.md":{"size":6079,"mtime_ns":1781597583939678131,"hash":"cf4be2acf9ffc36974a6f6999cf2cc5259b73be544a3e0bcaf0f589f34943c4d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-payment-gateway-flow.md":{"size":11147,"mtime_ns":1782981612166014856,"hash":"c6e6c55b51cabc086cfb88e97ae4977b2f8587822a38232102bea1d45b94f0ab"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-token-storage-xss-headers.md":{"size":11238,"mtime_ns":1781946381493130088,"hash":"88ae04aa6c4de588a6b7fab59d6fc9426d7b1b43c75a1e1e4103fdcf0edfc6df"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/liara-deploy.md":{"size":9137,"mtime_ns":1782750983100811315,"hash":"40d115b3bc3a43851f8e317427e23bd857de37f77bb5b2080077c69e774d1a53"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-root-domain-not-city.md":{"size":8911,"mtime_ns":1783016271523973931,"hash":"7abb24fe0c3e3ea6125318b160cba6c41c57be779a3a96dccc77be825cb2d713"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/nobat724-test-suite.md":{"size":19981,"mtime_ns":1782675306936470499,"hash":"76e8926e91c5544fd793ecba45b8b4db9bff5f11593d3ed64a5a8f308ee745e9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/otp-sms-site-name.md":{"size":4341,"mtime_ns":1783070832183884597,"hash":"c4c736e8535fae943d10e3bfc9aa45b546be27aef879ddc7b919caa7790ff2c5"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/payment-flow-frontend.md":{"size":6753,"mtime_ns":1782992956701932660,"hash":"6913de88e303725560499adef7c1ce2583e257eef0b083758cb67eab05d46151"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/payment-single-flow-frontend.md":{"size":6327,"mtime_ns":1782994816069623536,"hash":"4bf6587d44aa63a0b48c7a22fe7d01cf30be8d2a5385fc3205e3ba4155437411"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/profile-birthday-send-direction-fix.md":{"size":3365,"mtime_ns":1781597583939863923,"hash":"66a55129ea309cca03cc872462fd47053c309c64720784e79f21b4efb5ae4ec0"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/rating-rich-ui-wiring.md":{"size":9378,"mtime_ns":1781597583940215798,"hash":"add909cd22a22c9352f1cd3a6b4bb2ad6672e7784198164f8dbfda25d2f0f93a"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/seo-performance-rendering-audit.md":{"size":15903,"mtime_ns":1782028177971687083,"hash":"10bcf71f9a660ad56f97bb92cb033794f8e65858f761c286191277095231e09a"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/specialties-doctor-count-wire.md":{"size":5538,"mtime_ns":1781599369387196341,"hash":"5d9ed62a164217933720bd64bef89e07413a7e82fe92171cf9508b24e0e5d838"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/technical-seo-audit-multidomain.md":{"size":19291,"mtime_ns":1783252646626491244,"hash":"d070d13a6d70943eb3b5332a9909bcdc1eff6826610b93156c767087628cb143"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/upgrade-next-16.md":{"size":13380,"mtime_ns":1783320697635832503,"hash":"e0f930abf1bac512900eb97733708e398c52df8a5a088d3cd11212546f210eb9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/user-profile-no-404.md":{"size":6562,"mtime_ns":1781597583940472507,"hash":"a5e69f183ea4fdd29b651385b5350ecc1d7c52097b7a4228e7d1be03b98f7c61"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/verify-past-slots-disabled.md":{"size":5350,"mtime_ns":1781597583940678257,"hash":"bfc8ebe5dcd533c93c86935a95afbcd9456f3828d6801dc02a4231a52b6b06b9"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/CLAUDE.md":{"size":5513,"mtime_ns":1783323447323021515,"hash":"847a296771bd1672e5a798d5f0451ca074cd45536c02d88cd8c08b3857cc7b27"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/README.md":{"size":23904,"mtime_ns":1783323437507877219,"hash":"c71ff73b6ff7b535887b1f016ed07f863d3ebd283571b91baacccb9fb53f685d"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/fix-sitemap-build-fetch-failed.md":{"size":6887,"mtime_ns":1783337915815095855,"hash":"f500d64d164ae77195e7aecbb1ff75b8cec4e1bfceb971ffac3cc46666071630"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/city-json-seo-fields.md":{"size":8340,"mtime_ns":1783498761590225655,"hash":"bad09a70d9f8b419ea377acb5fabb95cee6de33307381fc161c99a402018cd59"},"/Users/hamed/pj/my_pj/clinic_pro/nobat724_front/.claude/prompt/global-rep-domain-site.md":{"size":8662,"mtime_ns":1783568045290634030,"hash":"487a2843c238490c773599dc61eb97293f25564481d3dbe6a22462ca7efe3f63"}}
\ No newline at end of file
diff --git a/graphify-out/graph.html b/graphify-out/graph.html
index 66bddc9..7fc0e99 100644
--- a/graphify-out/graph.html
+++ b/graphify-out/graph.html
@@ -63,12 +63,12 @@
- 2051 nodes · 2034 edges · 374 communities
+ 2055 nodes · 2037 edges · 374 communities