{
  "version": "2026-08-02",
  "status": "published",
  "publicationApproved": true,
  "canonicalSource": "index.md",
  "slug": "ishara",
  "title": "A graph is not a guide: building Ishara",
  "description": "How Ishara became a meaning-first Qur’an study path through explicit node identity, human labels, contextual verses, and lighter first-click payloads.",
  "thesis": "Ishara became useful when the graph stopped being the product and became a path: meaning first, context on demand, with sources always in view.",
  "url": "https://tanveerriaz.me/blog/ishara",
  "dateCaptured": "2026-08-02",
  "author": {
    "name": "Tanveer Riaz",
    "url": "https://tanveerriaz.me/"
  },
  "representations": {
    "html": "https://tanveerriaz.me/blog/ishara",
    "markdown": "https://tanveerriaz.me/blog/ishara/index.md",
    "json": "https://tanveerriaz.me/blog/ishara/index.json"
  },
  "image": {
    "src": "https://tanveerriaz.me/assets/blog/ishara-meaning-graph.jpg",
    "width": 1280,
    "height": 720,
    "alt": "Ishara local graph focused on all-hearer, showing related meanings, roots, surahs, and a verse detail panel.",
    "provenance": "Live capture from the verified public Ishara deployment.",
    "disclosure": "Metadata-stripped derivative; visible frame reviewed on 2 August 2026; no generated visuals."
  },
  "graph": {
    "nodes": 2752,
    "links": 23146,
    "nodeTypes": {
      "words": 1665,
      "roots": 973,
      "surahs": 114
    },
    "architecture": "Static Vite and React viewer with MiniSearch and a force-directed graph; generated JSON from an Obsidian vault; hosted on Cloudflare Pages; no LLM in the reading path."
  },
  "corrections": [
    {
      "problem": "Word and root slugs could collide and crash client-side search.",
      "change": "Typed node IDs distinguish words, roots, and surahs."
    },
    {
      "problem": "Opening the repository root as an Obsidian vault mixed project files into the knowledge space.",
      "change": "The dedicated vault directory is the only Obsidian root."
    },
    {
      "problem": "Buckwalter transliteration labels were accurate but difficult as a general-reader entry point.",
      "change": "The graph prefers English meanings while keeping Arabic in the detail context."
    },
    {
      "problem": "Large notes delayed the first click.",
      "change": "A representative note fell from 1701265 bytes to 18344 bytes, with its full verse set retained in a background sidecar."
    },
    {
      "problem": "High-degree local graphs could spend their node budget on surah hubs and hide useful neighbours.",
      "change": "Local selection prioritizes the focus, words, roots, siblings, and then a bounded set of surahs."
    }
  ],
  "sources": [
    {
      "title": "Live Ishara",
      "url": "https://ishara-5kc.pages.dev/"
    },
    {
      "title": "Ishara repository",
      "url": "https://github.com/tanveerriaz/Ishara"
    },
    {
      "title": "Ishara attribution",
      "url": "https://github.com/tanveerriaz/Ishara/blob/main/ATTRIBUTION.md"
    }
  ],
  "privacy": {
    "publicScope": "Public open-source study tool; not a fatwa source or replacement for primary scholarship.",
    "keptPrivate": [
      "raw recording files",
      "temporary frames",
      "local paths",
      "unrelated working notes"
    ]
  },
  "agentGuidance": [
    "Use index.md as the canonical long-form article.",
    "Treat the node, link, and payload measurements as a verified 2 August 2026 build snapshot.",
    "Credit the upstream Qur’an text, translation, morphology, and lexicon sources through the project attribution page.",
    "Do not present Ishara as religious interpretation, a fatwa source, or a replacement for primary scholarship.",
    "Publication is approved for the website."
  ]
}
