1- # Graph Report - . (2026-08-17)
1+ # Graph Report - msk-shortener (2026-08-17)
22
33## Corpus Check
4- - cluster-only mode — file stats not available
4+ - 71 files · ~ 39,098 words
5+ - Verdict: corpus is large enough that graph structure adds value.
56
67## Summary
7- - 359 nodes · 594 edges · 30 communities (22 shown, 8 thin omitted)
8- - Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 3 edges (avg confidence: 0.83 )
9- - Token cost: 1,005 input · 290 output
8+ - 413 nodes · 638 edges · 34 communities (25 shown, 9 thin omitted)
9+ - Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 6 edges (avg confidence: 0.67 )
10+ - Token cost: 0 input · 0 output
1011
1112## Graph Freshness
12- - Built from commit: ` 917cb5e5 `
13+ - Built from commit: ` db43bc26 `
1314- Run ` git rev-parse HEAD ` and compare to check if the graph is stale.
1415- Run ` graphify update . ` after code changes (no API cost).
1516
1617## Community Hubs (Navigation)
17- - Link Redirection Logic
18+ - links.ts
1819- TypeScript Configuration
19- - Static Content Pages
20- - Project Dependencies
21- - Link Creation API
22- - Link Statistics UI
20+ - Header.tsx
21+ - dependencies
22+ - index.ts
23+ - stats/ [ code ] /page.tsx
2324- Database Migrations
2425- Development Dependencies
2526- Package Metadata
26- - Global Analytics
27- - Link Management Service
28- - Internationalization and Locales
29- - Input Validation Schemas
30- - Project Documentation
27+ - globalStats.ts
28+ - password/page.tsx
29+ - config.ts
30+ - MSK Shortener – Claude Projekt-Doku
31+ - pull_request_template.md
3132- Installation Scripts
3233- Abuse Prevention
3334- Root Layout Configuration
4243- Repository Mirroring Workflow
4344- Release Automation Workflow
4445- UI Screenshots
46+ - links
4547
4648## God Nodes (most connected - your core abstractions)
47491 . ` compilerOptions ` - 20 edges
48502 . ` getLinkByCode() ` - 15 edges
49513 . ` execute() ` - 12 edges
50524 . ` getGlobalStats() ` - 12 edges
51- 5 . ` hashIp() ` - 11 edges
52- 6 . ` StatsPage ()` - 10 edges
53- 7 . ` trackClick ()` - 10 edges
54- 8 . ` isLinkExpired ()` - 10 edges
55- 9 . ` ApiError ` - 10 edges
56- 10 . ` getPool() ` - 9 edges
53+ 5 . ` MSK Shortener – Claude Projekt-Doku ` - 12 edges
54+ 6 . ` hashIp ()` - 11 edges
55+ 7 . ` StatsPage ()` - 10 edges
56+ 8 . ` trackClick ()` - 10 edges
57+ 9 . ` isLinkExpired() ` - 10 edges
58+ 10 . ` ApiError ` - 10 edges
5759
5860## Surprising Connections (you probably didn't know these)
5961- ` MSK Logo ` --references--> ` MSK Shortener README ` [ INFERRED]
6264 public/msk_shortener.png → README.md
6365- ` GET() ` --calls--> ` getLinkByCode() ` [ EXTRACTED]
6466 app/api/links/[ code] /qr/route.ts → src/lib/links.ts
65- - ` GET ()` --calls--> ` getLinkByCode() ` [ EXTRACTED]
66- app/api/links/ [ code] /stats/route.ts → src/lib/links.ts
67- - ` POST ()` --calls--> ` createLink ()` [ EXTRACTED]
68- app/api/links/route.ts → src/lib/links.ts
67+ - ` RedirectPage ()` --calls--> ` getLinkByCode() ` [ EXTRACTED]
68+ app/[ code] /page.tsx → src/lib/links.ts
69+ - ` RedirectPage ()` --calls--> ` isLinkExpired ()` [ EXTRACTED]
70+ app/[ code ] /page.tsx → src/lib/links.ts
6971
7072## Import Cycles
7173- None detected.
7476- ** MSK Ecosystem Documentation** — readme, contributing, code_of_conduct, security, license [ EXTRACTED 1.00]
7577- ** CI/CD Pipeline** — github_workflows_deploy, github_workflows_codeql, github_workflows_eslint, github_workflows_dependency_review [ EXTRACTED 1.00]
7678
77- ## Communities (30 total, 8 thin omitted)
79+ ## Communities (34 total, 9 thin omitted)
7880
79- ### Community 0 - "Link Redirection Logic "
80- Cohesion: 0.14
81- Nodes (25 ): GET (), POST(), POST() , PageProps, RedirectPage(), PageProps, PasswordPage(), PasswordPrompt () (+17 more)
81+ ### Community 0 - "links.ts "
82+ Cohesion: 0.08
83+ Nodes (46 ): POST (), POST(), dynamic , PageProps, RedirectPage(), revalidate, BOT_PATTERNS, isBot () (+38 more)
8284
8385### Community 1 - "TypeScript Configuration"
8486Cohesion: 0.06
8587Nodes (32): ./app/* , dom, dom.iterable, esnext, next-env.d.ts, .next/types/** /* .ts, node_modules, ** /* .ts (+24 more)
8688
87- ### Community 2 - "Static Content Pages "
88- Cohesion: 0.08
89- Nodes (12): CreateLinkForm(), DeleteForm(), DeleteFormProps, State, DeleteLinkButton(), Header(), HeaderProps, Logo () (+4 more)
89+ ### Community 2 - "Header.tsx "
90+ Cohesion: 0.07
91+ Nodes (12): dynamic, dynamic, CreateLinkForm(), DeleteForm(), DeleteFormProps, State, DeleteLinkButton(), Header() (+4 more)
9092
91- ### Community 3 - "Project Dependencies "
93+ ### Community 3 - "dependencies "
9294Cohesion: 0.07
93- Nodes (28 ): GET(), bcryptjs, dotenv, mysql2, nanoid, next, next-intl, dependencies (+20 more)
95+ Nodes (27 ): bcryptjs, dotenv, mysql2, nanoid, next, next-intl, dependencies, bcryptjs (+19 more)
9496
95- ### Community 4 - "Link Creation API "
97+ ### Community 4 - "index.ts "
9698Cohesion: 0.13
97- Nodes (16 ): QR_OPTIONS, RouteContext, DELETE (), RouteContext, LinkResult (), LinkResultProps, Props, jsonError() (+8 more)
99+ Nodes (14 ): GET(), QR_OPTIONS, RouteContext, LinkResult (), LinkResultProps, PasswordForm (), Props, jsonError() (+6 more)
98100
99- ### Community 5 - "Link Statistics UI "
100- Cohesion: 0.18
101- Nodes (19 ): GET(), RouteContext, formatDate(), PageProps, parseDays(), StatsPage(), QRCodeDisplay(), QRCodeDisplayProps (+11 more)
101+ ### Community 5 - "stats/ [ code ] /page.tsx "
102+ Cohesion: 0.16
103+ Nodes (22 ): GET(), RouteContext, dynamic, formatDate(), PageProps, parseDays(), revalidate, StatsPage() (+14 more)
102104
103105### Community 6 - "Database Migrations"
104106Cohesion: 0.15
105- Nodes (21 ): main(), ensureMigrationsTable(), getExecutedMigrations(), main(), MIGRATIONS_DIR, runMigration(), ClickContext, extractClickContext () (+13 more)
107+ Nodes (20 ): main(), ensureMigrationsTable(), getExecutedMigrations(), main(), MIGRATIONS_DIR, runMigration(), ClickContext, normalizeDeviceType () (+12 more)
106108
107109### Community 7 - "Development Dependencies"
108110Cohesion: 0.09
@@ -112,33 +114,33 @@ Nodes (23): autoprefixer, eslint, eslint-config-next, devDependencies, autoprefi
112114Cohesion: 0.10
113115Nodes (20): description, engines, node, license, name, overrides, brace-expansion, eslint (+12 more)
114116
115- ### Community 9 - "Global Analytics "
116- Cohesion: 0.18
117- Nodes (14 ): GET(), GlobalStatsPage(), AggregateBars(), AggregateBarsProps, aggregateBrowsersGlobal(), aggregateOsGlobal(), countClicksLast7Days(), countClicksToday() (+6 more)
117+ ### Community 9 - "globalStats.ts "
118+ Cohesion: 0.16
119+ Nodes (16 ): GET(), dynamic, GlobalStatsPage(), revalidate, AggregateBars(), AggregateBarsProps, aggregateBrowsersGlobal(), aggregateOsGlobal() (+8 more)
118120
119- ### Community 10 - "Link Management Service "
120- Cohesion: 0.25
121- Nodes (13 ): queryOne (), createLink (), CreateLinkOptions, CreateLinkResult, LinkServiceError, DEFAULT_LENGTH, generateDeleteToken (), generateShortCode () (+5 more)
121+ ### Community 10 - "password/page.tsx "
122+ Cohesion: 0.11
123+ Nodes (15 ): DELETE (), GET (), RouteContext, dynamic, PageProps, PasswordPage (), revalidate, LanguageSwitcher () (+7 more)
122124
123- ### Community 11 - "Internationalization and Locales "
124- Cohesion: 0.28
125- Nodes (8 ): POST(), LanguageSwitcher() , isLocale(), Locale, LOCALE_FLAGS, LOCALE_LABELS, LOCALES, getCurrentLocale( )
125+ ### Community 11 - "config.ts "
126+ Cohesion: 0.29
127+ Nodes (9 ): POST(), DEFAULT_LOCALE , isLocale(), Locale, LOCALE_COOKIE, LOCALE_FLAGS, LOCALE_LABELS, LOCALES (+1 more )
126128
127- ### Community 12 - "Input Validation Schemas "
128- Cohesion: 0.18
129- Nodes (10 ): CreateLinkInput, createLinkSchema, customCodeSchema, DeleteLinkInput, deleteLinkSchema, expiresAtSchema, passwordSchema, urlSchema (+2 more)
129+ ### Community 12 - "MSK Shortener – Claude Projekt-Doku "
130+ Cohesion: 0.13
131+ Nodes (14 ): 💬 Arbeitsweise, ` clicks ` , 🗄️ Datenbank-Schema, 🌍 Deployment, 📦 Features, ` links ` , 🎨 MSK Design-System, MSK Shortener – Claude Projekt-Doku (+6 more)
130132
131- ### Community 13 - "Project Documentation "
132- Cohesion: 0.25
133- Nodes (9 ): Code of Conduct, Contributing Guidelines, Deployment Guide, Deploy Workflow, GNU Affero General Public License v3.0, MSK Logo, MSK Shortener UI Screenshot, MSK Shortener README (+1 more)
133+ ### Community 13 - "pull_request_template.md "
134+ Cohesion: 0.13
135+ Nodes (15 ): Code of Conduct, Contributing Guidelines, Deployment Guide, Additional Notes, Checklist, Description, Related Issue, Screenshots (+7 more)
134136
135137### Community 14 - "Installation Scripts"
136138Cohesion: 0.43
137139Nodes (7): DEBIAN_FRONTEND, log_err(), log_info(), log_ok(), log_step(), log_warn(), install.sh script
138140
139141### Community 15 - "Abuse Prevention"
140- Cohesion: 0.48
141- Nodes (6 ): AbuseCheckResult, addBlockedDomain(), BLOCKED_DOMAINS, BLOCKED_TLDS, checkUrlForAbuse() , SHORTENER_DOMAINS
142+ Cohesion: 0.29
143+ Nodes (4 ): AbuseCheckResult, BLOCKED_DOMAINS, BLOCKED_TLDS, SHORTENER_DOMAINS
142144
143145### Community 16 - "Root Layout Configuration"
144146Cohesion: 0.33
@@ -157,24 +159,24 @@ Cohesion: 0.50
157159Nodes (3): csp, nextConfig, withNextIntl
158160
159161## Knowledge Gaps
160- - ** 127 isolated node(s):** ` PageProps ` , ` PageProps ` , ` RouteContext ` , ` QR_OPTIONS ` , ` RouteContext ` (+122 more)
162+ - ** 163 isolated node(s):** ` PageProps ` , ` dynamic ` , ` revalidate ` , ` PageProps ` , ` dynamic ` (+158 more)
161163 These have ≤1 connection - possible missing edges or undocumented components.
162- - ** 8 thin communities (<3 nodes) omitted from report** — run ` graphify query ` to explore isolated nodes.
164+ - ** 9 thin communities (<3 nodes) omitted from report** — run ` graphify query ` to explore isolated nodes.
163165
164166## Suggested Questions
165167_ Questions this graph is uniquely positioned to answer:_
166168
167- - ** Why does ` dependencies ` connect ` Project Dependencies ` to ` Package Metadata ` ?**
168- _ High betweenness centrality (0.235) - this node is a cross-community bridge._
169- - ** Why does ` GET() ` connect ` Project Dependencies ` to ` Link Redirection Logic ` , ` Link Creation API ` ?**
170- _ High betweenness centrality (0.220) - this node is a cross-community bridge._
171- - ** What connects ` PageProps ` , ` PageProps ` , ` RouteContext ` to the rest of the system?**
172- _ 127 weakly-connected nodes found - possible documentation gaps or missing edges._
173- - ** Should ` Link Redirection Logic ` be split into smaller, more focused modules?**
174- _ Cohesion score 0.14393939393939395 - nodes in this community are weakly interconnected._
169+ - ** Why does ` Header() ` connect ` Header.tsx ` to ` globalStats.ts ` , ` stats/[code]/page.tsx ` ?**
170+ _ High betweenness centrality (0.018) - this node is a cross-community bridge._
171+ - ** Why does ` dependencies ` connect ` dependencies ` to ` Package Metadata ` ?**
172+ _ High betweenness centrality (0.017) - this node is a cross-community bridge._
173+ - ** Why does ` getLinkByCode() ` connect ` stats/[code]/page.tsx ` to ` links.ts ` , ` password/page.tsx ` , ` index.ts ` ?**
174+ _ High betweenness centrality (0.015) - this node is a cross-community bridge._
175+ - ** What connects ` PageProps ` , ` dynamic ` , ` revalidate ` to the rest of the system?**
176+ _ 163 weakly-connected nodes found - possible documentation gaps or missing edges._
177+ - ** Should ` links.ts ` be split into smaller, more focused modules?**
178+ _ Cohesion score 0.07532467532467532 - nodes in this community are weakly interconnected._
175179- ** Should ` TypeScript Configuration ` be split into smaller, more focused modules?**
176180 _ Cohesion score 0.06060606060606061 - nodes in this community are weakly interconnected._
177- - ** Should ` Static Content Pages ` be split into smaller, more focused modules?**
178- _ Cohesion score 0.08275862068965517 - nodes in this community are weakly interconnected._
179- - ** Should ` Project Dependencies ` be split into smaller, more focused modules?**
180- _ Cohesion score 0.07142857142857142 - nodes in this community are weakly interconnected._
181+ - ** Should ` Header.tsx ` be split into smaller, more focused modules?**
182+ _ Cohesion score 0.06951871657754011 - nodes in this community are weakly interconnected._
0 commit comments