Scan timing: clone 4.32s · analysis 59.0s · 18.8 MB · GitHub API rate-limit (preflight)
https://github.com/2anki/server
· scanned 2026-06-05 20:15 UTC (4 days, 13 hours ago)
· 10 languages
766 raw signals (278 security + 488 graph) 16th percentile · Typescript · large (100-500K LoC) System graph score 70 (lower by 5)
Last scanned 4 days, 13 hours ago · v2 · 369 actionable findings from 2 signal sources. 128 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
85.0 | 0.15 | 12.75 |
security_score |
3.0 | 0.25 | 0.75 |
testing_score |
100.0 | 0.20 | 20.00 |
documentation_score |
88.4 | 0.15 | 13.26 |
practices_score |
78.0 | 0.15 | 11.70 |
code_quality |
64.5 | 0.10 | 6.45 |
| Overall | 1.00 | 64.9 |
Showing 331 of 369 actionable findings. 497 raw detector signals were grouped into reader-sized issues. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.
src/controllers/DownloadController.test.ts:80, 93 (2 hits)src/controllers/ResumeCheckoutController.test.ts:7src/services/AuthenticationService.test.ts:486src/services/ops/BusinessMetricsService.ts:428src/templates/README.html:672src/services/NotionService/_mock/payloads/ListBlockChildrenResponse/9f96d8fb-5b10-4b65-8655-15d3b0ba4f07.json:178, 269 (2 hits)src/services/NotionService/_mock/payloads/ListBlockChildrenResponse/e673858e-5371-4ddf-84c6-b04a3bbd5c34.json:206, 281 (2 hits)src/services/NotionService/_mock/payloads/ListBlockChildrenResponse/05a5b1e6-eef3-483b-b8da-b16b84fd50d1.json:72src/services/NotionService/_mock/payloads/ListBlockChildrenResponse/282720db-142b-4606-b230-bb75d1be1a4b.json:54src/services/NotionService/_mock/payloads/ListBlockChildrenResponse/3a3591d9-ece2-47e3-8653-8cde6665ba6e.json:29src/services/NotionService/_mock/payloads/ListBlockChildrenResponse/4de52a2c-c4a3-4a33-98e3-1402c290712e.json:90src/services/NotionService/_mock/payloads/ListBlockChildrenResponse/7c24b0b0-3cbd-444e-95e7-348893c00f9c.json:94src/services/NotionService/_mock/payloads/ListBlockChildrenResponse/8d316348-8a7e-481a-8a54-b621c1d8e16f.json:161web/src/pages/AccountClaimPage/AccountClaimPage.tsx:23
.github/workflows/claude-code-review.yml:36
CI/CD securityworkflow secretsGitHub Actions
web/pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
src/routes/AnkifyRouter.ts:476
src/routes/NotionRouter.ts:576
src/routes/UserRouter.ts:371
src/routes/DownloadRouter.ts:89
src/routes/DownloadRouter.ts:161
src/routes/DownloadRouter.ts:122
.claude/hooks/pre-bash-curl-pipe.py:3
src/controllers/OpsErrorsController.ts:103
src/routes/OpsErrorsRouter.ts:128
src/routes/ParserRulesRouter.ts:181
src/routes/UploadRouter.ts:666
src/routes/UploadRouter.ts:767
src/routes/UploadRouter.ts:454
src/routes/UploadRouter.ts:572
src/routes/ChatRouter.ts:430
src/routes/ChatRouter.ts:55
src/routes/ChatRouter.ts:267
src/routes/ChatRouter.ts:193
src/routes/ChatRouter.ts:312
src/routes/DefaultRouter.ts:158
src/routes/FavoriteRouter.ts:72
src/routes/FavoriteRouter.ts:124
src/routes/FeedbackRouter.ts:51
src/routes/OpsErrorsRouter.ts:125
src/routes/ParserRulesRouter.ts:144
src/routes/UserSurveyRouter.ts:36
src/routes/UploadRouter.ts:252
src/routes/UploadRouter.ts:122
src/routes/UploadRouter.ts:293
src/routes/UploadRouter.ts:531
src/routes/UploadRouter.ts:192
src/routes/UploadRouter.ts:177
src/routes/WebhookRouter.ts:86
web/pnpm-lock.yaml
web/pnpm-lock.yaml
.github/workflows/playwright.yml:38, 42, 51, 63 (6 hits).github/workflows/web.yml:24, 35, 43, 57 (5 hits).github/workflows/create_deck.yml:17, 18, 41, 42 (4 hits).github/workflows/claude-code-review.yml:28 (2 hits).github/workflows/claude.yml:29 (2 hits).github/workflows/server.yml:22, 38 (2 hits).github/workflows/weekly-retro.yml:18.github/workflows/claude-code-review.yml:34 (2 hits).github/workflows/claude.yml:35 (2 hits).github/workflows/deploy.2anki.net.yml:19 (2 hits)pnpm-lock.yaml
package.json:1
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
web/pnpm-lock.yaml
web/src/pages/LoginPage/components/LoginForm/index.tsx:177
web/src/components/forms/RegisterForm.tsx:186
pnpm-lock.yaml
pnpm-lock.yaml
src/services/observability/instrumentedAxios.ts:303
Exec used
pnpm-lock.yaml
src/routes/SettingsRouter.ts:317
src/routes/SettingsRouter.ts:246
src/routes/SettingsRouter.ts:209
src/routes/SettingsRouter.ts:183
src/routes/SettingsRouter.ts:293
src/routes/SettingsRouter.ts:91
src/routes/SettingsRouter.ts:132
src/routes/OpsErrorsRouter.ts:128
src/routes/UploadRouter.ts:454
src/routes/ChecksRouter.ts:44
src/routes/OpsErrorsRouter.ts:57
src/routes/OpsErrorsRouter.ts:84
src/routes/ShowcaseRouter.ts:26
web/mock-server/server.js:161
src/routes/FavoriteRouter.ts:124
src/routes/OpsErrorsRouter.ts:125
web/mock-server/server.js:201
.claude/caveman/hooks/caveman-activate.js:22.claude/caveman/hooks/caveman-mode-tracker.js:97src/usecases/apkg/ImportApkgToNotionUseCase.ts:158web/src/components/UpsellCard/UpsellCard.tsx:89web/src/pages/DownloadsPage/components/DeckFeedbackPrompt.tsx:111web/src/pages/DownloadsPage/components/PaywallBanner.tsx:39src/routes/middleware/anonIdMiddleware.ts:25
.claude/hooks/pre-push-typecheck.py:63
.claude/caveman/hooks/caveman-config.js:165
.claude/hooks/pre-push-typecheck.py:72
Error handlingquality
.claude/hooks/safety.py:70
Error handlingquality
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
src/routes/AnkifyRouter.ts:539, 585, 625, 630, 635, 679, 712, 743, +4 more (12 hits)src/config/swagger.ts:574src/routes/AnkifyWebhookRouter.ts:53src/routes/ApkgRouter.ts:152pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
package.json
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
pnpm-lock.yaml
index.html
.well-known/security.txt
pnpm-lock.yamlweb/pnpm-lock.yamlsrc/lib/ankify/jobs/scheduleAnkifyPolling.ts:53src/lib/inactivity/jobs/scheduleInactiveUserDeletions.ts:29src/lib/inactivity/jobs/scheduleInactivityWarnings.ts:29create_deck/requirements.txt:7, 8 (2 hits)repo-level (23 hits).github/workflows/claude-code-review.yml.github/workflows/claude.yml.github/workflows/weekly-retro.ymlsrc/services/NotionService/blocks/BlockParagraph.tsx:20
Dangerous innerhtml
src/services/NotionService/blocks/lists/BlockToggleList.tsx:39
Dangerous innerhtml
src/services/NotionService/helpers/getListItems.tsx:47
Dangerous innerhtml
src/ui/pages/DownloadPage.tsx:39
Dangerous innerhtml
web/src/pages/HomePage/ShowcaseSection.tsx:13
Dangerous innerhtml
web/src/pages/PreviewPage/BlockNode.tsx:51
Dangerous innerhtml
.github/workflows/weekly-retro.yml
Ports
.github/workflows/weekly-retro.yml
Ports
.github/workflows/weekly-retro.yml
Ports
.claude/hooks/pre-write-secret-scan.py:5, 9, 10 (3 hits).claude/hooks/pre-bash-curl-pipe.py:10, 11 (2 hits).claude/hooks/safety.py:5, 11 (2 hits).claude/hooks/check-commit-message.py:27.claude/hooks/check-duplicate-commit-message.py:13.claude/hooks/check-merge-status.py:13.claude/hooks/pre-push-typecheck.py:23src/controllers/ShareController.ts:13package.json
package.json
package.json
package.json
package.json
package.json
package.json
package.json
package.json
package.json
package.json
package.json
package.json
package.json
package.json
llms.txt
humans.txt
Showing first 300 of 331. Refine filters or use the findings page for deep search.
This page is publicly accessible at:
https://repobility.com/scan/b025e7bf-6c41-400d-89d0-ece5870610fb/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/b025e7bf-6c41-400d-89d0-ece5870610fb/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.