Nats Eye
F 42 completed
Other
containerized / typescript · small
106
Files
20,392
LOC
4
Frameworks
7
Languages
Pipeline State
completedRun ID
#1545966Phase
doneProgress
0%Started
2026-04-16 23:38:41Finished
2026-04-16 23:38:41LLM tokens
0Pipeline Metadata
Stage
CatalogedDecision
proceedNovelty
82.40Framework unique
—Isolation
—Last stage change
2026-05-10 03:34:46Deduplication group #1938282
Member of a group with 1 similar repo(s) — this repo is canonical view group →
Repobility analyzer · published findings · https://repobility.com
🧪 Code Distillation
Browse all specs →AI Prompt
Create a modern, self-hostable web UI called "NATS Eye" for managing NATS clusters. I need it to monitor cluster health, message rates, and connections in real-time. Key features must include Cluster Management with support for token and username/password authentication, a Dashboard overview, JetStream Streams management (including live message tailing), and full Key-Value store management with real-time key watching. The UI should also support Dark/Light Mode. Please use React for the frontend, Hono for the backend, and ensure it's containerized using Docker.
typescript react hono docker web-ui nats monitoring jetstream key-value dashboard
Generated by gemma4:latest
Catalog Information
Create a modern, self-hostable web UI called "NATS Eye" for managing NATS clusters. I need it to monitor cluster health, message rates, and connections in real-time. Key features must include Cluster Management with support for token and username/password authentication, a Dashboard overview, JetStream Streams management (including live message tailing), and full Key-Value store management with real-time key watching. The UI should also support Dark/Light Mode. Please use React for the frontend,
Tags
typescript react hono docker web-ui nats monitoring jetstream key-value dashboard
Quality Score
F
41.8/100
Structure
52
Code Quality
32
Documentation
34
Testing
15
Practices
56
Security
75
Dependencies
90
Strengths
- CI/CD pipeline configured (github_actions)
- Code linting configured (biome)
- Containerized deployment (Docker)
Weaknesses
- No LICENSE file — legal ambiguity for contributors
- No tests found — high risk of regressions
- 19 files with critical complexity need refactoring
- 3877 duplicate lines detected — consider DRY refactoring
- 12 'god files' with >500 LOC need decomposition
Recommendations
- Add a test suite — start with critical path integration tests
- Add a LICENSE file (MIT recommended for open source)
Languages
Frameworks
React Hono Vitest Vite
Symbols
variable992
function430
interface98
type_alias17
constant13
API Endpoints (71)
| Method | Path | Handler | Framework | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Repobility · severity-and-effort ranking · https://repobility.com | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | * | app.get | Express/Koa | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | / | clusters.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | / | clusters.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /alerts | monitoring.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /alerts | monitoring.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DELETE | /alerts/:id | monitoring.delete | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PATCH | /alerts/:id | monitoring.patch | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /alerts/:id | monitoring.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /alerts/:id/events | monitoring.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /api/health | app.get | Express/Koa | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /channels | notifications.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /channels | notifications.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /channels/:id | notifications.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DELETE | /channels/:id | notifications.delete | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PATCH | /channels/:id | notifications.patch | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /channels/:id/test | notifications.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /cluster/:clusterId | kv.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /cluster/:clusterId | streams.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId | streams.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId | objectstore.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId | consumers.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId | kv.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DELETE | /cluster/:clusterId/bucket/:bucket | objectstore.delete | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /cluster/:clusterId/bucket/:bucket/upload | objectstore.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DELETE | /cluster/:clusterId/bucket/:name | kv.delete | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId/bucket/:name | kv.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PUT | /cluster/:clusterId/bucket/:name/key | kv.put | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId/bucket/:name/key/:key | kv.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DELETE | /cluster/:clusterId/bucket/:name/key/:key | kv.delete | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId/bucket/:name/key/:key/history | kv.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /cluster/:clusterId/bucket/:name/key/:key/purge | kv.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId/bucket/:name/keys | kv.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DELETE | /cluster/:clusterId/stream/:name | streams.delete | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PATCH | /cluster/:clusterId/stream/:name | streams.patch | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId/stream/:name | streams.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId/stream/:name/messages | streams.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /cluster/:clusterId/stream/:name/purge | streams.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /cluster/:clusterId/stream/:streamName | consumers.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId/stream/:streamName | consumers.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DELETE | /cluster/:clusterId/stream/:streamName/consumer/:consumerName | consumers.delete | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:clusterId/stream/:streamName/consumer/:consumerName | consumers.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:id | stats.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| POST | /cluster/:id/check-alerts | monitoring.post | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:id/connz | monitoring.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:id/health | monitoring.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:id/subsz | monitoring.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /cluster/:id/varz | monitoring.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /clusters | monitoring.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /dashboard | stats.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GET | /events/recent | monitoring.get | Express | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Showing 50 of 71
Repobility (the analyzer behind this table) · https://repobility.com
Embed Badge
Add to your README:
