binwiederhier / ntfy
Code health
This codebase scores 7.5 out of 10 for code health, which we rate good. It also scores maintainability 8.0 and static performance 9.5 out of 10. The three are scored separately and never blended into one number. Risk is concentrated, as it usually is: 46 of 463 files are git hotspots, and they average 6.2 — which is where the fixes pay off most.
Do next
1 suggested
1 thing worth doing in the week to Oct 19, the last indexed commit.
Worth planning
Tidy the code shape this week's commits left: 2 findings in 2 files
2 commits in the last 7 days added or worsened long, complex or deeply nested code, still open. Start with
web/src/components/Navigation.jsx(1 finding): tidying it while the change is fresh costs less than after the next one.- code-shape findings
- 2
- files
- 2
- commits
- 2
Medium effort
Improve what Repowise can see
Add a test coverage report
Without one, Repowise cannot tell tested code from untested code, so every test-related action says “unknown”.
- line coverage
- Unknown, no report
Small effort
- Lines of code
- 66.7K
Recent activity
All commitsCommits
- 7917a6f1Put function literals on their own lines3d ago
- ee439497Release notes: Android copy-without-timestamp fix (ntfy-android#195)3d ago
- b3bd6ebdgo mod tidy: the cluster tests import prometheus directly3d ago
- 7b4e2108Rewrap the cluster status docs paragraph3d ago
- 1f445454Seed and retire per-peer metrics, and record the last batch outcome3d ago
- d23abf87Add cluster.Client for the peer API3d ago
Decisions
- Authorize: allow users full access to their own SyncTopicproposed · 23h ago
- Track per-store minimum schema version and block startup below itproposed · 23h ago
- Allow additive schema migrations during rolling upgradesproposed · 23h ago
- Filter preloaded allNotifications instead of per-topic queryproposed · 23h ago
- Preload allNotifications in Layout to avoid empty frameproposed · 23h ago
- Explicitly call log init due to DefaultOutput wrappingproposed · 23h ago
Everything we found
1,095 open
Every detector's open count by area, each with its worst example. An inventory, not a to-do list: the actions above are the part worth doing.
- worst item is critical severity. Code health771Nested complexity · server/server_account.go31 findings · 7.6 deducted
- worst item is low severity. Refactoring51sync+0.8 health, S effort · web/src/app/AccountApi.js
- worst item is medium severity. Doc drift1docs/develop.mdDocument shows `make cli-...`, but no such target is declared.
- worst item is medium severity. Decisions61server/server_test.go15 awaiting review · 46 hotspots ungoverned
- worst item is medium severity. Ownership211message/cache.go100% single-owner concentration, 35 commits in 90d
Composition
Open the graph- go70%
- javascript25%
- shell2%
- python<1%
- php<1%
- Other<1%
Explore this codebase
- Docs497 pages across 27 modules
- ChatAsk this codebase a question and get an answer with its sources.
- Files463 files with per-file docs, health and history
- ArchitectureDependency graph, layers, and 11 entry points
- Code healthPer-file scores, 914 open findings, coverage and refactoring targets
- Knowledge graphEntities, communities, and the paths between them
- Change couplingFiles that keep changing together, mined from commit history
- CommitsChange-risk ranked history with agent provenance
- ContributorsBus factor, per-file maintainers, and the human/agent split
- StatsSize class, origin, lifetime churn, rhythm and records
- CostsWhat indexing this snapshot cost, by model and by run.