[{"data":1,"prerenderedAt":856},["ShallowReactive",2],{"navigation_docs_en":3,"-en-development-understand-anything":191,"-en-development-understand-anything-surround":851},[4,61,127,171],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":60},"Guide","i-lucide-book-open","\u002Fen\u002Fguide","en\u002F1.guide",[10,15,20,25,30,35,40,45,50,55],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fen\u002Fguide\u002Fintroduction","en\u002F1.guide\u002F01.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Install the App","\u002Fen\u002Fguide\u002Finstallation","en\u002F1.guide\u002F02.installation","i-lucide-smartphone",{"title":21,"path":22,"stem":23,"icon":24},"Authentication","\u002Fen\u002Fguide\u002Fauth","en\u002F1.guide\u002F03.auth","i-lucide-lock",{"title":26,"path":27,"stem":28,"icon":29},"Wallets","\u002Fen\u002Fguide\u002Fwallets","en\u002F1.guide\u002F04.wallets","i-lucide-wallet",{"title":31,"path":32,"stem":33,"icon":34},"Categories","\u002Fen\u002Fguide\u002Fcategories","en\u002F1.guide\u002F05.categories","i-lucide-tags",{"title":36,"path":37,"stem":38,"icon":39},"Transactions","\u002Fen\u002Fguide\u002Ftransactions","en\u002F1.guide\u002F06.transactions","i-lucide-receipt",{"title":41,"path":42,"stem":43,"icon":44},"Transfers","\u002Fen\u002Fguide\u002Ftransfers","en\u002F1.guide\u002F07.transfers","i-lucide-arrow-left-right",{"title":46,"path":47,"stem":48,"icon":49},"Statistics","\u002Fen\u002Fguide\u002Fstatistics","en\u002F1.guide\u002F08.statistics","i-lucide-bar-chart-3",{"title":51,"path":52,"stem":53,"icon":54},"Theme","\u002Fen\u002Fguide\u002Ftheme","en\u002F1.guide\u002F09.theme","i-lucide-palette",{"title":56,"path":57,"stem":58,"icon":59},"Settings","\u002Fen\u002Fguide\u002Fsettings","en\u002F1.guide\u002F10.settings","i-lucide-settings",false,{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":60},"Development","i-lucide-code","\u002Fen\u002Fdevelopment","en\u002F2.development",[67,72,77,82,87,92,97,102,122],{"title":68,"path":69,"stem":70,"icon":71},"Installation","\u002Fen\u002Fdevelopment\u002Finstallation","en\u002F2.development\u002F01.installation","i-lucide-download",{"title":73,"path":74,"stem":75,"icon":76},"Codebase Graph","\u002Fen\u002Fdevelopment\u002Funderstand-anything","en\u002F2.development\u002F02.understand-anything","i-lucide-network",{"title":78,"path":79,"stem":80,"icon":81},"Offline & PWA","\u002Fen\u002Fdevelopment\u002Foffline","en\u002F2.development\u002F03.offline","i-lucide-wifi-off",{"title":83,"path":84,"stem":85,"icon":86},"Data Migration History","\u002Fen\u002Fdevelopment\u002Fmigration","en\u002F2.development\u002F04.migration","i-lucide-database",{"title":88,"path":89,"stem":90,"icon":91},"Deployment","\u002Fen\u002Fdevelopment\u002Fdeployment","en\u002F2.development\u002F05.deployment","i-lucide-rocket",{"title":93,"path":94,"stem":95,"icon":96},"Testing","\u002Fen\u002Fdevelopment\u002Ftesting","en\u002F2.development\u002F06.testing","i-lucide-flask-conical",{"title":98,"path":99,"stem":100,"icon":101},"Date Utilities","\u002Fen\u002Fdevelopment\u002Fdate-utilities","en\u002F2.development\u002F07.date-utilities","i-lucide-calendar",{"title":103,"path":104,"stem":105,"children":106,"page":60},"Ai Workflow","\u002Fen\u002Fdevelopment\u002Fai-workflow","en\u002F2.development\u002F08.ai-workflow",[107,112,117],{"title":108,"path":109,"stem":110,"icon":111},"Overview","\u002Fen\u002Fdevelopment\u002Fai-workflow\u002Foverview","en\u002F2.development\u002F08.ai-workflow\u002F01.overview","i-lucide-bot",{"title":113,"path":114,"stem":115,"icon":116},"Agents","\u002Fen\u002Fdevelopment\u002Fai-workflow\u002Fagents","en\u002F2.development\u002F08.ai-workflow\u002F02.agents","i-lucide-users",{"title":118,"path":119,"stem":120,"icon":121},"Skills","\u002Fen\u002Fdevelopment\u002Fai-workflow\u002Fskills","en\u002F2.development\u002F08.ai-workflow\u002F03.skills","i-lucide-lightbulb",{"title":123,"path":124,"stem":125,"icon":126},"Troubleshooting","\u002Fen\u002Fdevelopment\u002Ftroubleshooting","en\u002F2.development\u002F09.troubleshooting","i-lucide-life-buoy",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":60},"Reference","i-lucide-file-code","\u002Fen\u002Freference","en\u002F3.reference",[133,138,142,147,152,156,161,166],{"title":134,"path":135,"stem":136,"icon":137},"Architecture","\u002Fen\u002Freference\u002Farchitecture","en\u002F3.reference\u002F01.architecture","i-lucide-boxes",{"title":139,"path":140,"stem":141,"icon":44},"Transaction Types","\u002Fen\u002Freference\u002Ftransaction-types","en\u002F3.reference\u002F02.transaction-types",{"title":143,"path":144,"stem":145,"icon":146},"Sync","\u002Fen\u002Freference\u002Fsync","en\u002F3.reference\u002F03.sync","i-lucide-refresh-cw",{"title":148,"path":149,"stem":150,"icon":151},"Offline-first","\u002Fen\u002Freference\u002Foffline-first","en\u002F3.reference\u002F04.offline-first","i-lucide-list-ordered",{"title":153,"path":154,"stem":155,"icon":121},"Technical Decisions","\u002Fen\u002Freference\u002Ftech-decisions","en\u002F3.reference\u002F05.tech-decisions",{"title":157,"path":158,"stem":159,"icon":160},"Validation Strategy","\u002Fen\u002Freference\u002Fvalidation-strategy","en\u002F3.reference\u002F06.validation-strategy","i-lucide-shield-check",{"title":162,"path":163,"stem":164,"icon":165},"What Changed Since Firebase","\u002Fen\u002Freference\u002Ffirebase-migration","en\u002F3.reference\u002F07.firebase-migration","i-lucide-hamburger",{"title":167,"path":168,"stem":169,"icon":170},"Performance","\u002Fen\u002Freference\u002Fperformance","en\u002F3.reference\u002F08.performance","i-lucide-gauge",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":60},"Premium","i-lucide-star","\u002Fen\u002Fpremium","en\u002F4.premium",[177,181,186],{"title":108,"path":178,"stem":179,"icon":180},"\u002Fen\u002Fpremium\u002Foverview","en\u002F4.premium\u002F01.overview","i-lucide-layers",{"title":182,"path":183,"stem":184,"icon":185},"Telegram Bot","\u002Fen\u002Fpremium\u002Ftelegram-bot","en\u002F4.premium\u002F02.telegram-bot","i-lucide-send",{"title":187,"path":188,"stem":189,"icon":190},"AI Chat","\u002Fen\u002Fpremium\u002Fai-chat","en\u002F4.premium\u002F03.ai-chat","i-lucide-sparkles",{"id":192,"title":73,"body":193,"description":842,"extension":843,"links":844,"meta":845,"navigation":846,"path":74,"seo":847,"stem":75,"__hash__":850},"docs_en\u002Fen\u002F2.development\u002F02.understand-anything.md",{"type":194,"value":195,"toc":832},"minimark",[196,201,212,224,228,336,342,346,349,423,430,452,456,472,475,485,491,495,503,526,530,536,682,686,689,709,712,715,718,828],[197,198,200],"h2",{"id":199},"what-it-is","What It Is",[202,203,204,211],"p",{},[205,206,210],"a",{"href":207,"rel":208},"https:\u002F\u002Fgithub.com\u002FLum1104\u002FUnderstand-Anything",[209],"nofollow","understand-anything"," is a Claude Code plugin that analyzes the codebase and produces an interactive knowledge graph. It maps every file to an architectural layer, extracts relationships between components, and generates a guided tour of the project.",[202,213,214,218,219],{},[215,216,217],"strong",{},"Live dashboard:"," ",[205,220,223],{"href":221,"rel":222},"https:\u002F\u002Ffinapp-graph.ilko.me\u002F",[209],"finapp-graph.ilko.me",[197,225,227],{"id":226},"commands","Commands",[229,230,231,244],"table",{},[232,233,234],"thead",{},[235,236,237,241],"tr",{},[238,239,240],"th",{},"Command",[238,242,243],{},"Description",[245,246,247,259,269,279,289,299,326],"tbody",{},[235,248,249,256],{},[250,251,252],"td",{},[253,254,255],"code",{},"\u002Funderstand",[250,257,258],{},"Run analysis - incremental if a graph exists, full if not",[235,260,261,266],{},[250,262,263],{},[253,264,265],{},"\u002Funderstand --full",[250,267,268],{},"Force a complete rebuild from scratch",[235,270,271,276],{},[250,272,273],{},[253,274,275],{},"\u002Funderstand --review",[250,277,278],{},"Run LLM graph reviewer on the existing graph (no re-analysis)",[235,280,281,286],{},[250,282,283],{},[253,284,285],{},"\u002Funderstand --auto-update",[250,287,288],{},"Enable automatic graph updates on every commit",[235,290,291,296],{},[250,292,293],{},[253,294,295],{},"\u002Funderstand --no-auto-update",[250,297,298],{},"Disable automatic graph updates",[235,300,301,306],{},[250,302,303],{},[253,304,305],{},"\u002Funderstand --language ru",[250,307,308,309,312,313,312,316,312,319,312,322,325],{},"Generate all text in the given language (",[253,310,311],{},"en",", ",[253,314,315],{},"ru",[253,317,318],{},"zh",[253,320,321],{},"ja",[253,323,324],{},"ko",", etc.)",[235,327,328,333],{},[250,329,330],{},[253,331,332],{},"\u002Funderstand \u002Fpath\u002Fto\u002Fdir",[250,334,335],{},"Analyze a different directory instead of the current one",[202,337,338,339],{},"Options can be combined: ",[253,340,341],{},"\u002Funderstand --full --language ru",[197,343,345],{"id":344},"how-it-works","How It Works",[202,347,348],{},"The command runs through 7 phases:",[229,350,351,361],{},[232,352,353],{},[235,354,355,358],{},[238,356,357],{},"Phase",[238,359,360],{},"What happens",[245,362,363,371,383,391,399,407,415],{},[235,364,365,368],{},[250,366,367],{},"0",[250,369,370],{},"Pre-flight - detects incremental vs full rebuild",[235,372,373,376],{},[250,374,375],{},"0.5",[250,377,378,379,382],{},"Reads ",[253,380,381],{},".understandignore"," exclusion rules",[235,384,385,388],{},[250,386,387],{},"1",[250,389,390],{},"Scans all project files",[235,392,393,396],{},[250,394,395],{},"1.5",[250,397,398],{},"Groups files into semantic batches",[235,400,401,404],{},[250,402,403],{},"2",[250,405,406],{},"Analyzes each batch with LLM (5 concurrent subagents)",[235,408,409,412],{},[250,410,411],{},"3-5",[250,413,414],{},"Merges batches, assembles graph, reviews",[235,416,417,420],{},[250,418,419],{},"6-7",[250,421,422],{},"Builds tour steps, writes output files",[202,424,425,426,429],{},"Output goes to ",[253,427,428],{},".understand-anything\u002F",":",[431,432,433,440,446],"ul",{},[434,435,436,439],"li",{},[253,437,438],{},"knowledge-graph.json"," - the full graph (nodes, edges, layers, tour)",[434,441,442,445],{},[253,443,444],{},"meta.json"," - commit hash and timestamp of last analysis",[434,447,448,451],{},[253,449,450],{},"fingerprints.json"," - file hashes for incremental updates",[197,453,455],{"id":454},"exclusions","Exclusions",[202,457,458,461,462,312,465,312,468,471],{},[253,459,460],{},".understand-anything\u002F.understandignore"," controls what gets excluded. It uses gitignore syntax. Built-in defaults always exclude ",[253,463,464],{},"node_modules\u002F",[253,466,467],{},"dist\u002F",[253,469,470],{},"*.lock",", images, etc.",[202,473,474],{},"Current active exclusions:",[476,477,482],"pre",{"className":478,"code":480,"language":481},[479],"language-text",".playwright-mcp        # Playwright MCP screenshots\ndocs\u002F                  # Docs site (separate project)\n*.test.*               # Test files\n*.spec.*               # Spec files\n*.snap                 # Snapshots\n","text",[253,483,480],{"__ignoreMap":484},"",[202,486,487,488,490],{},"Uncomment or add patterns to exclude more, then re-run ",[253,489,255],{},".",[197,492,494],{"id":493},"incremental-updates","Incremental Updates",[202,496,497,498,500,501,429],{},"If a graph already exists, ",[253,499,255],{}," checks the current git commit against ",[253,502,444],{},[431,504,505,511,517],{},[434,506,507,510],{},[215,508,509],{},"Same commit"," - asks whether to rebuild or skip",[434,512,513,516],{},[215,514,515],{},"Changed files"," - re-analyzes only the changed files, merges into existing graph",[434,518,519,525],{},[215,520,521,524],{},[253,522,523],{},"--full"," flag"," - forces a complete rebuild from scratch",[197,527,529],{"id":528},"updating-the-dashboard","Updating the Dashboard",[202,531,532,533,535],{},"After running ",[253,534,255],{},", redeploy the dashboard:",[476,537,541],{"className":538,"code":539,"language":540,"meta":484,"style":484},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 1. Copy the updated graph to the dashboard's public directory\ncp .understand-anything\u002Fknowledge-graph.json \\\n   ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\u002Fpublic\u002F\ncp .understand-anything\u002Fmeta.json \\\n   ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\u002Fpublic\u002F\n\n# 2. Build (demo mode - serves graph from same origin)\ncd ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\nVITE_DEMO_MODE=true pnpm exec vite build --config vite.config.demo.ts --base \u002F\n\n# 3. Deploy\ncd dist && vercel deploy --prod --yes\n","bash",[253,542,543,552,567,573,583,588,595,601,611,648,653,659],{"__ignoreMap":484},[544,545,548],"span",{"class":546,"line":547},"line",1,[544,549,551],{"class":550},"sHwdD","# 1. Copy the updated graph to the dashboard's public directory\n",[544,553,555,559,563],{"class":546,"line":554},2,[544,556,558],{"class":557},"sBMFI","cp",[544,560,562],{"class":561},"sfazB"," .understand-anything\u002Fknowledge-graph.json",[544,564,566],{"class":565},"sTEyZ"," \\\n",[544,568,570],{"class":546,"line":569},3,[544,571,572],{"class":561},"   ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\u002Fpublic\u002F\n",[544,574,576,578,581],{"class":546,"line":575},4,[544,577,558],{"class":557},[544,579,580],{"class":561}," .understand-anything\u002Fmeta.json",[544,582,566],{"class":565},[544,584,586],{"class":546,"line":585},5,[544,587,572],{"class":561},[544,589,591],{"class":546,"line":590},6,[544,592,594],{"emptyLinePlaceholder":593},true,"\n",[544,596,598],{"class":546,"line":597},7,[544,599,600],{"class":550},"# 2. Build (demo mode - serves graph from same origin)\n",[544,602,604,608],{"class":546,"line":603},8,[544,605,607],{"class":606},"s2Zo4","cd",[544,609,610],{"class":561}," ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\n",[544,612,614,617,621,624,627,630,633,636,639,642,645],{"class":546,"line":613},9,[544,615,616],{"class":565},"VITE_DEMO_MODE",[544,618,620],{"class":619},"sMK4o","=",[544,622,623],{"class":561},"true",[544,625,626],{"class":557}," pnpm",[544,628,629],{"class":561}," exec",[544,631,632],{"class":561}," vite",[544,634,635],{"class":561}," build",[544,637,638],{"class":561}," --config",[544,640,641],{"class":561}," vite.config.demo.ts",[544,643,644],{"class":561}," --base",[544,646,647],{"class":561}," \u002F\n",[544,649,651],{"class":546,"line":650},10,[544,652,594],{"emptyLinePlaceholder":593},[544,654,656],{"class":546,"line":655},11,[544,657,658],{"class":550},"# 3. Deploy\n",[544,660,662,664,667,670,673,676,679],{"class":546,"line":661},12,[544,663,607],{"class":606},[544,665,666],{"class":561}," dist",[544,668,669],{"class":619}," &&",[544,671,672],{"class":557}," vercel",[544,674,675],{"class":561}," deploy",[544,677,678],{"class":561}," --prod",[544,680,681],{"class":561}," --yes\n",[197,683,685],{"id":684},"dashboard-features","Dashboard Features",[202,687,688],{},"The dashboard has three views:",[431,690,691,697,703],{},[434,692,693,696],{},[215,694,695],{},"Knowledge Graph"," - full file relationship graph with layer coloring, filtering by layer or edge type",[434,698,699,702],{},[215,700,701],{},"Domain Graph"," - business domain flows (if domain analysis was run)",[434,704,705,708],{},[215,706,707],{},"Architecture Layers"," - files grouped by layer with summaries",[202,710,711],{},"From any node you can open the source file inline, see its imports and dependents, and follow the guided tour.",[197,713,707],{"id":714},"architecture-layers",[202,716,717],{},"Files are assigned to one of 9 layers:",[229,719,720,729],{},[232,721,722],{},[235,723,724,727],{},[238,725,726],{},"Layer",[238,728,243],{},[245,730,731,741,751,768,778,788,798,808,818],{},[235,732,733,738],{},[250,734,735],{},[215,736,737],{},"Entry",[250,739,740],{},"App entry points and Nuxt config",[235,742,743,748],{},[250,744,745],{},[215,746,747],{},"Config",[250,749,750],{},"Build config, ESLint, TypeScript config",[235,752,753,758],{},[250,754,755],{},[215,756,757],{},"Backend",[250,759,760,761,312,764,767],{},"Supabase Postgres schema + RLS + PowerSync sync rules (",[253,762,763],{},"app\u002Fsupabase\u002F",[253,765,766],{},"app\u002Fpowersync\u002F",")",[235,769,770,775],{},[250,771,772],{},[215,773,774],{},"Auth",[250,776,777],{},"Supabase Auth (email\u002Fpassword); two-layer route guard",[235,779,780,785],{},[250,781,782],{},[215,783,784],{},"Store",[250,786,787],{},"Pinia stores (categories, wallets, trns, rates, settings)",[235,789,790,795],{},[250,791,792],{},[215,793,794],{},"Composables",[250,796,797],{},"Vue composables and utilities",[235,799,800,805],{},[250,801,802],{},[215,803,804],{},"Components",[250,806,807],{},"Vue components grouped by feature",[235,809,810,815],{},[250,811,812],{},[215,813,814],{},"Pages",[250,816,817],{},"Nuxt pages and layouts",[235,819,820,825],{},[250,821,822],{},[215,823,824],{},"Types",[250,826,827],{},"Shared TypeScript types and validators",[829,830,831],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":484,"searchDepth":554,"depth":554,"links":833},[834,835,836,837,838,839,840,841],{"id":199,"depth":554,"text":200},{"id":226,"depth":554,"text":227},{"id":344,"depth":554,"text":345},{"id":454,"depth":554,"text":455},{"id":493,"depth":554,"text":494},{"id":528,"depth":554,"text":529},{"id":684,"depth":554,"text":685},{"id":714,"depth":554,"text":707},"Interactive knowledge graph of the Finapp codebase generated by the understand-anything plugin.","md",null,{},{"icon":76},{"title":848,"description":849},"Codebase Knowledge Graph","understand-anything plugin for Finapp - interactive knowledge graph, architecture layers, file relationships, and guided tour.","Kh9RLt8AOY9a0Kw2R4ayu2uhzP4-3CczV6YrGlGaGQ8",[852,854],{"title":68,"path":69,"stem":70,"description":853,"icon":71,"children":-1},"Get started with Finapp - clone, configure env vars, start the local backend, and run the dev server.",{"title":78,"path":79,"stem":80,"description":855,"icon":81,"children":-1},"Working offline and PWA installation.",1782114343086]