rocket
A distinctive shadcn registry of data & observability components — query builders, JSON inspectors, diff viewers, log streams, metric charts, trace waterfalls and more. Install them into your app with the shadcn CLI.
npx shadcn@latest add https://rocket.gozturk.dev/r/log-stream.json https://rocket.gozturk.dev/r/trace-waterfall.json https://rocket.gozturk.dev/r/query-builder.json https://rocket.gozturk.dev/r/timeline.json https://rocket.gozturk.dev/r/json-inspector.json https://rocket.gozturk.dev/r/activity-feed.json https://rocket.gozturk.dev/r/comment-thread.json https://rocket.gozturk.dev/r/stat-tile.json https://rocket.gozturk.dev/r/diff-viewer.json https://rocket.gozturk.dev/r/metric-chart.json https://rocket.gozturk.dev/r/latency-histogram.json https://rocket.gozturk.dev/r/status-grid.json https://rocket.gozturk.dev/r/cohort-heatmap.json https://rocket.gozturk.dev/r/audit-trail.json https://rocket.gozturk.dev/r/alert-feed.json https://rocket.gozturk.dev/r/data-freshness.json https://rocket.gozturk.dev/r/data-grid.json https://rocket.gozturk.dev/r/schema-diagram.json https://rocket.gozturk.dev/r/sql-console.json https://rocket.gozturk.dev/r/data-lineage.json https://rocket.gozturk.dev/r/resource-monitor.json https://rocket.gozturk.dev/r/request-inspector.json https://rocket.gozturk.dev/r/data-quality.json https://rocket.gozturk.dev/r/treemap.json https://rocket.gozturk.dev/r/calendar-heatmap.json https://rocket.gozturk.dev/r/funnel-chart.json https://rocket.gozturk.dev/r/data-dictionary.json https://rocket.gozturk.dev/r/cron-builder.json https://rocket.gozturk.dev/r/field-mapper.json https://rocket.gozturk.dev/r/routing-rules.json https://rocket.gozturk.dev/r/json-path-picker.json https://rocket.gozturk.dev/r/regex-tester.json https://rocket.gozturk.dev/r/slo-calculator.json https://rocket.gozturk.dev/r/access-matrix.json https://rocket.gozturk.dev/r/backoff-planner.json https://rocket.gozturk.dev/r/id-inspector.json https://rocket.gozturk.dev/r/jwt-decoder.json https://rocket.gozturk.dev/r/connection-string-builder.json https://rocket.gozturk.dev/r/rate-limit-simulator.json https://rocket.gozturk.dev/r/storage-estimator.json https://rocket.gozturk.dev/r/logfmt-inspector.json https://rocket.gozturk.dev/r/webhook-signature-verifier.json https://rocket.gozturk.dev/r/log-scrubber.json https://rocket.gozturk.dev/r/timestamp-converter.json https://rocket.gozturk.dev/r/json-schema-inferer.json https://rocket.gozturk.dev/r/url-inspector.json https://rocket.gozturk.dev/r/csv-json-converter.json https://rocket.gozturk.dev/r/curl-converter.json https://rocket.gozturk.dev/r/env-linter.json https://rocket.gozturk.dev/r/log-patterns.json https://rocket.gozturk.dev/r/alert-rule-builder.json https://rocket.gozturk.dev/r/query-plan-visualizer.json https://rocket.gozturk.dev/r/index-advisor.json https://rocket.gozturk.dev/r/cache-control-inspector.json https://rocket.gozturk.dev/r/graphql-query-inspector.json https://rocket.gozturk.dev/r/openapi-explorer.json https://rocket.gozturk.dev/r/cron-conflict-detector.jsonComponents
No logs
- Span0.00ms80.0ms160ms240ms320msGET /checkoutgateway320msauth.verifyauth40.0msdb.query orderspostgres90.0mscache.getredis8.00msscan rowspostgres70.0mspayment.chargestripe160msPOST api.stripe.comstripe150msqueue.publishkafka6.00msHover a span for detail · total 320ms
(status = 'active' AND mrr > 100) OR plan IN ('pro', 'team')- Authenticated timed outJust now
The user session timed out due to inactivity.
Action required3m agoIssuer requires a challenge to be performed.
Session created6m agoA new session was created for the user.
- 1{2"active": true,3"id": "usr_8x21",4"lastSeen": null,5"name": "Ada Lovelace",6"orders": [7{ … } 4 keys,8{ … } 4 keys9],10"profile": {11"email": "ada@analytical.engine",12"location": { … } 2 keys,13"verified": false14},15"roles": [16"admin",17"engineer"18]19}
- Jul 28ALAda Lovelace merged #42 Fix timeline connectorJul 28
Single SVG path — no more seams between rows.
LPLinus Park pushed 3 commits to mainJul 28GHGrace Hopper commented on #39 Docs siteJul 28rocket — component registryrocket.gozturk.devJul 27MHMargaret Hamilton starred gozturk/rocketJul 27KJKatherine Johnson deployed productionJul 27 - ALAda LovelacePinnedJul 28· edited
Shipped the new connector — it's one continuous path now, no seams between rows. @grace can you sanity-check the mobile spacing?
GHGrace HopperJul 28Looks great. One nit: the elbow radius feels a touch tight at the narrowest breakpoint.
ALAda LovelaceJul 28Good catch — bumping it to 12px. This reply is flattened since it's past the depth cap.
LPLinus ParkJul 28+1, reads much cleaner now.
MHMargaret HamiltonJul 28Should reactions persist to the server in this demo, or stay local for now?
- Monthly Revenue$48,200+12.5%vs last monthChurn Rate1.2%-0.8%vs last monthActive Users1,620+8.3%vs last week
- +2-1~21~{2"id": "usr_8x21",3"name": "Ada Lovelace",4~"plan": "free"→"pro",5~"profile": {6"city": "London",7~"verified": false→true,8+"country": "UK"9~},10~"roles": [11"engineer",12+"admin"13~],14-"seats": 115~}
- min38msmedian78msp95390msp99610msmax610msp50 78msp95 390msp99 610ms38ms324ms610msHover a bar · 60 samples
- Degraded performanceOperationalDegradedDownMaintenanceAPI Gatewayp95 142ms99.98%Auth Servicep95 380ms99.41%Postgres (primary)p95 8ms99.99%Redis Cachep95 1ms100%Job Queuelag 0.4s99.95%Scheduler99.9%CDNhit 98.7%100%Hover a day in a timeline for detail
- 0%100%retentionCohortWk 0Wk 1Wk 2Wk 3Wk 4Wk 5Wk 6Wk 7Jan1200Feb1010Mar1420Apr980May1330Jun1150Jul1290Aug1080Avg10064494136323030Hover a cell for detail
- Jun 9ALAda Lovelace updated Order #1042Jun 9LPLinus Park created User grace@acme.ioJun 9GHGrace Hopper updated Plan team-2Jun 9Jun 8ALAda Lovelace deleted Webhook #88Jun 8MHMargaret Hamilton updated Order #1039Jun 8LPLinus Park created API Key prod-7Jun 8
- 2 critical · 1 info firingDatabase connections saturatedpostgres
98/100 connections in use
Jun 9FiringHigh error rate on /checkoutpayments5xx rate 8.4% (threshold 1%)
Jun 9Firingp95 latency elevatedapi-gatewayp95 480ms (threshold 300ms)
Jun 9AcknowledgedDeploy started: rocket@1.4.0ciJun 9Firing - 3 fresh · 1 running · 1 failedstripe_sync12.0k rowshourlyFailedclickstream9.3M rowscontinuousRunningorders482.3k rowsevery 15mFreshevents_raw18.4M rowsevery 30mFreshs3_daily_export1.2M rowsdaily 02:00Fresh
Ada Lovelace ada@acme.io enterprise 499 active Nov 2, 2025 Linus Park linus@kernel.org pro 99 active Jan 14, 2026 Grace Hopper grace@navy.mil free 0 churned Sep 21, 2025 No Margaret Hamilton margaret@nasa.gov pro 99 active Feb 8, 2026 Alan Turing alan@bletchley.uk enterprise 499 active Dec 30, 2025 Katherine Johnson katherine@nasa.gov starter 29 trialing Mar 19, 2026 No Donald Knuth donald@stanford.edu pro 99 active Oct 11, 2025 Barbara Liskov barbara@ibm.com starter 29 active Apr 2, 2026 16 of 16 rowsPage 1 / 2- 4 tables · 3 relations100%iduuidemailvarchar(255)UNIQUENOT NULLnamevarchar(120)NOT NULLcreated_attimestamptzNOT NULLiduuiduser_iduuid→ users.idIDXNOT NULLstatusvarchar(20)NOT NULLtotalnumeric(10,2)NOT NULLcreated_attimestamptzNOT NULLiduuidskuvarchar(64)UNIQUENOT NULLnamevarchar(200)NOT NULLpricenumeric(10,2)NOT NULLiduuidorder_iduuid→ orders.idIDXNOT NULLproduct_iduuid→ products.idIDXNOT NULLquantityintNOT NULLunit_pricenumeric(10,2)NOT NULL
- Run a query to see results
- 8 nodes · 8 edgesSourcesTransformsTransformsOutputsevents_rawkafkauserspostgrespaymentsstripestg_eventsdbtdim_usersdbtfct_ordersdbtrevenue_dashboardlookercohort_reportlooker
- 1 warningCPUpeak 42%Memorypeak 68%Diskpeak 83%Networkpeak 34MB/s
- POSThttps://api.acme.io/v1/orders?expand=items¤cy=usd201 Created207 ms · 842 BGeneralRequest URLhttps://api.acme.io/v1/orders?expand=items¤cy=usdRequest MethodPOSTStatus Code201 CreatedRequest Headersacceptapplication/jsonauthorizationBearer sk_live_••••4f9acontent-typeapplication/jsonuser-agentacme-sdk/2.4.0Response Headerscache-controlno-storecontent-typeapplication/json; charset=utf-8x-ratelimit-remaining98x-request-idreq_8Kqd3fz1
- 2 failed · 2 warningorders · 482.3k rows3/7 passeduniqueuniqueid0/0 dupesaccepted_valuesaccepted valuesstatuspending|shipped|refundedrangerangetotal0–100000
- Storage by tableΣ 919 GBrawlogspublicevents_raw310 GBlogs156 GBorder_items124 GBsessions95 GBorders88 GBmetrics64 GBusers42 GBHover a cell for detail
- Σ 83.9k events· 112 active daysLessMoreMonWedFriMarAprMayJunHover a day for detail
- Σ 24.8k usersentered5.0% overallVisited24.8k(100%)16.4k lost · 66%Signed up8.4k(34%)3.3k lost · 39%Activated5.1k(21%)3.2k lost · 62%Subscribed1.9k(7.7%)680 lost · 35%Renewed1.2k(5.0%)Hover a step for detail
- 12 columns · 3 tables · 2 PII
- At:on
0 9 * * 1At 09:00 on Mon
Next:— - 0 / 7 mapped· 2 required unmappeduser_id*uuidemail*stringnamestringsigned_up_attimestampplanstringmrrnumericcountrystring
- 3 rules· first match wins123Test an alert
→ routes to pagerduty via “Critical pages”
$object · 5 keys{ "customer": { "email": "ada@acme.io", "full name": "Ada Lovelace", "id": "cus_12af" }, "meta": { "source": "api", "version": 2 }, …- //2 of 4 lines matchCapture groups · line 1#0payments timeout after 3000ms#1payments#23000servicepaymentsms3000
- Target%WindowAllowed downtime43m 12sper 30d windowper day 1m 26sper week 10m 4sRequests per day≈ 7.5k failed requests / 30dDowntime so far (min)on track0.0% used · 43m 12s left
- 11 of 20 granted· 6 write— noneR readW write0R 5W3R 0W1R 1W1R 0W
- #delaytotal waited#11s1s#22s3s#34s7s#48s15s#516s31s#630scapped1m 1stotal wait: 1m 1safter 6 retries
- samples:UUID v7timerandomnessversion / variant019bc1a3-0583-7abc-8def-0123456789abtypeUUID v7variantRFC 4122timestampThu, Jan 15, 2026 · 12:30:45.123 UTCunix 1768480245123randomness18 hex chars
- JWT · HS256headerpayloadsignatureeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhcGk6Ly9kZWZhdWx0IiwiZXhwIjoxNzY4NDgzODQ1LCJpYXQiOjE3Njg0ODAyNDUsImlzcyI6Imh0dHBzOi8vYXV0aC5leGFtcGxlLmNvbSIsInN1YiI6InVzZXJfNDIifQ.c2lnbmF0dXJlLW5vdC12ZXJpZmllZA
header
algHS256typJWTclaims
aud(audience)api://defaultexp(expires)Thu, Jan 15, 2026 · 13:30:45 UTCunix 1768483845iat(issued at)Thu, Jan 15, 2026 · 12:30:45 UTCunix 1768480245iss(issuer)https://auth.example.comsub(subject)user_42lifetime: 1h
signature not verified (decode only)
- connection stringschemecredentialshostdatabase
postgresql://app:••••@localhost:5432/analytics
- token/sreq/ssttokensrequestsalloweddeniedt110880t27871t35853t45853t55853t65853t75853t85853t95853t105853
total: 55 allowed · 25 denied (31%)
sustained 8 req/s exceeds refill 5/s — denials grow without backoff
- 16 B8 B8 BB avg16 BB avg260 B1 Brows:
row size: header 24 B + null bitmap 1 B + columns 309 B = 334 B/row
total: × 1,000,000 rows ≈ 318.5 MiB
simplified postgres-like model — ignores alignment padding and TOAST
- level=error msg="payment timeout" dur="3000ms" user=cus_12af ok=false retries=3 trace=nulllevelstringerrormsgstring"payment timeout"durduration"3000ms"userstringcus_12afokbooleanfalseretriesnumber3tracenullnullJSON
{ "level": "error", "msg": "payment timeout", "dur": "3000ms", "user": "cus_12af", "ok": false, "retries": 3, "trace": null }quoted values stay strings; bare true/false/null/numbers are typed
- algoencHMAC-SHA-256 · hex
computing…
enter an expected signature to compare55 bytes payload - rulesmaskcustomscrubbed
2026-06-15T08:01:13Z user ‹email› logged in from ‹ip› card ‹card› token ‹token› trace ‹uuid› done
email ×1ip ×1card ×1token ×1uuid ×15 redactions - unitepoch (s)1781510400epoch (ms)1781510400000ISO 86012026-06-15T08:00:00.000ZUTCMon, Jun 15 2026 · 08:00:00 UTC
time zones
UTC2026-06-15 08:00:00GMT+0New York2026-06-15 04:00:00GMT-4Istanbul2026-06-15 11:00:00GMT+3Tokyo2026-06-15 17:00:00GMT+94 hours ago relative to 2026-06-15T12:00:00.000Z
- draft-07 schema
{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "id": { "type": "string" }, "active": { "type": "boolean" }, "score": { "type": "number" }, "age": { "type": "integer" }, "email": { "type": "string", "format": "email" }, "createdAt": { "type": "string", "format": "date-time" }, "roles": { "type": "array", "items": { "type": "string" } }, "profile": { "type": "object", "properties": { "city": { "type": "string" }, "verified": { "type": "boolean" } }, "required": [ "city", "verified" ] }, "orders": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "total": { "type": "number" }, "coupon": { "type": "string" } }, "required": [ "id", "total" ] } }, "lastSeen": { "type": "null" } }, "required": [ "id", "active", "score", "age", "email", "createdAt", "roles", "profile", "orders", "lastSeen" ] }inferred from a single sample — optional fields are only detected across array items
- schemehttpshostapi.acme.ioport443 (default)path/v1/ordershashsection-2segmentsv1orders
query (4)
statusactivelimit20utm_sourcenewslettertaga bhttps://api.acme.io/v1/orders?status=active&limit=20&utm_source=newsletter&tag=a%20b#section-2 - delimJSON · 3 rows × 5 cols
[ { "id": 1, "name": "Ada", "active": true, "score": 4.5, "note": "hello, world" }, { "id": 2, "name": "Linus", "active": false, "score": 9, "note": null }, { "id": 3, "name": "Grace", "active": true, "score": null, "note": "quote \"x\"" } ]quoted cells stay strings; bare true/false/numbers are typed, empty → null
- POSThttps://api.acme.io/v1/orders
headers (2)
Content-Typeapplication/jsonAuthorizationBearer sk_live_123body
{"sku":"TSHIRT-M","qty":2}
fetch()fetch('https://api.acme.io/v1/orders', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer sk_live_123' }, body: '{"sku":"TSHIRT-M","qty":2}' }); - 8 variables·2 errors·4 warningsL3warnspaces around '=' (will be trimmed)L6infoempty valueL7errorinvalid key name "bad-key"L8errormissing '='L9warnunquoted value with spacesL10warnreferences undefined ${HOSTNAME}L11warnduplicate key (overrides line 2)NODE_ENVproductionPORT3000API_KEY••••••••DATABASE_URLpostgres://u:p@host/dbEMPTY(empty)GREETINGhello worldHOST${HOSTNAME}NODE_ENVstaging
- min count
7 lines → 4 patterns
×343%<ts> INFO api request completed in <dur>2026-06-15T08:01:14Z INFO api request completed in 142ms×229%<ts> ERROR payments timeout after <dur> user=<id>2026-06-15T08:01:13Z ERROR payments timeout after 3000ms user=cus_12af×114%<ts> WARN api slow response <dur>2026-06-15T08:03:11Z WARN api slow response 920ms×114%<ts> ERROR db connection refused <ip>2026-06-15T08:04:09Z ERROR db connection refused 10.0.12.5 - for
avg(http_error_rate) > 1% for 5m
forp95(http_p95_latency) > 300ms for 10m
formax(db_connections_used) >= 90% for 15m
2/3 enabled- alert: High error rate on checkout expr: avg(http_error_rate) > 1 for: 5m severity: critical enabled: true - alert: Elevated API latency expr: p95(http_p95_latency) > 300 for: 10m severity: warning enabled: true - alert: Postgres connections saturated expr: max(db_connections_used) >= 90 for: 15m severity: warning enabled: false - Sortcost=125.66..129.41rows=1500actual 1.23ms..1.25ms rows=1500 loops=1Sort Key: o.created_at DESCSort Method: quicksort Memory: 133kBHash Joincost=64.62..131.25rows=1500actual 0.61ms..1.02ms rows=1500 loops=1Hash Cond: (o.customer_id = c.id)Seq Scan on orders ocost=0.00..55.50rows=1500actual 0.01ms..0.41ms rows=1500 loops=1Filter: (status = 'completed'::text)Rows Removed by Filter: 320Hashcost=48.00..48.00rows=1200actual 0.48ms..0.48ms rows=1200 loops=1Buckets: 2048 Batches: 1 Memory Usage: 73kBSeq Scan on customers ccost=0.00..48.00rows=1200actual 0.01ms..0.22ms rows=1200 loops=15 nodesPlanning 0.22msExecution 1.49ms
- WHERE =RANGE / ORDER BY(customer_id, status, created_at)new indexWHERE =RANGE / ORDER BY(customer_id)covered by (customer_id, status, created_at)WHERE =RANGE / ORDER BY(region, created_at)new indexRecommended indexes2 indexes
CREATE INDEX idx_orders_customer_id_status_created_at ON orders (customer_id, status, created_at);serves 2 patternsCREATE INDEX idx_orders_region_created_at ON orders (region, created_at);serves 1 pattern - publicmax-age=300s-maxage=3600stale-while-revalidate=60BrowserCacheable
no directive forbids browser caching
TTL 5.0mremaining 3.0m- May serve stale for 60s more while revalidating.
Shared cache (CDN / proxy)Cacheablecacheable by shared caches
TTL 1.0hremaining 58.0m- s-maxage=3600 overrides max-age for shared caches.
- May serve stale for 60s more while revalidating.
Age 120s·has ETag·has Last-Modified·Vary: Accept-Encoding - QueryVariables (JSON)queryGetUserOrders11 fields4 levels deepuser(id: $userId)idnameemailorders(status: $status, first: $limit)@include(if: $withOrders)idtotalcreatedAtitemsskuquantityVariables$userId: ID!$status: OrderStatus$limit: Int= 10$withOrders: Boolean= true
- 5 endpoints2 tagsOrders · 1 endpointUsers · 4 endpoints
- Look-ahead window0 runs in window6 runs in window · avg every 1.0h · next Jul 28, 12:00 PM0 runs in window18 runs in window · avg every 20m · next Jul 28, 11:40 AMOverlapping runs6 conflictsJul 28, 12:00 PMhourly-metricscache-warmupJul 28, 01:00 PMhourly-metricscache-warmupJul 28, 02:00 PMhourly-metricscache-warmupJul 28, 03:00 PMhourly-metricscache-warmupJul 28, 04:00 PMhourly-metricscache-warmupJul 28, 05:00 PMhourly-metricscache-warmup