rocket

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.

Install every component
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.json

Components

  • No logs

  • Span
    0.00ms80.0ms160ms240ms320ms
    GET /checkoutgateway
    320ms
    auth.verifyauth
    40.0ms
    db.query orderspostgres
    90.0ms
    cache.getredis
    8.00ms
    scan rowspostgres
    70.0ms
    payment.chargestripe
    160ms
    POST api.stripe.comstripe
    150ms
    queue.publishkafka
    6.00ms
    Hover 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 ago

    Issuer requires a challenge to be performed.

    Session created6m ago

    A 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 keys
    9
    ],
    10
    "profile": {
    11
    "email": "ada@analytical.engine",
    12
    "location": {} 2 keys,
    13
    "verified": false
    14
    },
    15
    "roles": [
    16
    "admin",
    17
    "engineer"
    18
    ]
    19
    }
  • Jul 28
    AL
    Ada Lovelace merged #42 Fix timeline connectorJul 28
    Single SVG path — no more seams between rows.
    LP
    Linus Park pushed 3 commits to mainJul 28
    GH
    Grace Hopper commented on #39 Docs siteJul 28
    rocket — component registry
    rocket.gozturk.dev
    Jul 27
    MH
    Margaret Hamilton starred gozturk/rocketJul 27
    KJ
    Katherine Johnson deployed productionJul 27
  • AL
    Ada 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?

    GH
    Grace HopperJul 28

    Looks great. One nit: the elbow radius feels a touch tight at the narrowest breakpoint.

    AL
    Ada LovelaceJul 28

    Good catch — bumping it to 12px. This reply is flattened since it's past the depth cap.

    LP
    Linus ParkJul 28

    +1, reads much cleaner now.

    MH
    Margaret HamiltonJul 28

    Should reactions persist to the server in this demo, or stay local for now?

  • Monthly Revenue
    $48,200
    +12.5%vs last month
    Churn Rate
    1.2%
    -0.8%vs last month
    Active Users
    1,620
    +8.3%vs last week
  • +2-1~2
    1~
    {
    2
    "id": "usr_8x21",
    3
    "name": "Ada Lovelace",
    4~
    "plan": "free""pro",
    5~
    "profile": {
    6
    "city": "London",
    7~
    "verified": falsetrue,
    8+
    "country": "UK"
    9~
    },
    10~
    "roles": [
    11
    "engineer",
    12+
    "admin"
    13~
    ],
    14-
    "seats": 1
    15~
    }
  • min38msmedian78msp95390msp99610msmax610ms
    p50 78ms
    p95 390ms
    p99 610ms
    38ms324ms610ms
    Hover a bar · 60 samples
  • Degraded performance
    OperationalDegradedDownMaintenance
    API Gatewayp95 142ms
    99.98%
    Auth Servicep95 380ms
    99.41%
    Postgres (primary)p95 8ms
    99.99%
    Redis Cachep95 1ms
    100%
    Job Queuelag 0.4s
    99.95%
    Scheduler
    99.9%
    CDNhit 98.7%
    100%
    Hover a day in a timeline for detail
  • 0%
    100%retention
    Cohort
    Wk 0
    Wk 1
    Wk 2
    Wk 3
    Wk 4
    Wk 5
    Wk 6
    Wk 7
    Jan1200
    Feb1010
    Mar1420
    Apr980
    May1330
    Jun1150
    Jul1290
    Aug1080
    Avg
    100
    64
    49
    41
    36
    32
    30
    30
    Hover a cell for detail
  • Jun 9
    AL
    Ada Lovelace updated Order #1042
    Jun 9
    LP
    Linus Park created User grace@acme.io
    Jun 9
    GH
    Grace Hopper updated Plan team-2
    Jun 9
    Jun 8
    AL
    Ada Lovelace deleted Webhook #88
    Jun 8
    MH
    Margaret Hamilton updated Order #1039
    Jun 8
    LP
    Linus Park created API Key prod-7
    Jun 8
  • 2 critical · 1 info firing
    Database connections saturatedpostgres

    98/100 connections in use

    Jun 9Firing
    High error rate on /checkoutpayments

    5xx rate 8.4% (threshold 1%)

    Jun 9Firing
    p95 latency elevatedapi-gateway

    p95 480ms (threshold 300ms)

    Jun 9Acknowledged
    Deploy started: rocket@1.4.0ci
    Jun 9Firing
  • 3 fresh · 1 running · 1 failed
    stripe_sync12.0k rows
    hourly
    Failed
    clickstream9.3M rows
    continuous
    Running
    orders482.3k rows
    every 15m
    Fresh
    events_raw18.4M rows
    every 30m
    Fresh
    s3_daily_export1.2M rows
    daily 02:00
    Fresh
  • Ada Lovelaceada@acme.ioenterprise499activeNov 2, 2025
    Linus Parklinus@kernel.orgpro99activeJan 14, 2026
    Grace Hoppergrace@navy.milfree0churnedSep 21, 2025No
    Margaret Hamiltonmargaret@nasa.govpro99activeFeb 8, 2026
    Alan Turingalan@bletchley.ukenterprise499activeDec 30, 2025
    Katherine Johnsonkatherine@nasa.govstarter29trialingMar 19, 2026No
    Donald Knuthdonald@stanford.edupro99activeOct 11, 2025
    Barbara Liskovbarbara@ibm.comstarter29activeApr 2, 2026
    16 of 16 rows
    Page 1 / 2
  • 4 tables · 3 relations
    100%
    iduuid
    emailvarchar(255)UNIQUENOT NULL
    namevarchar(120)NOT NULL
    created_attimestamptzNOT NULL
    iduuid
    user_iduuidusers.idIDXNOT NULL
    statusvarchar(20)NOT NULL
    totalnumeric(10,2)NOT NULL
    created_attimestamptzNOT NULL
    iduuid
    skuvarchar(64)UNIQUENOT NULL
    namevarchar(200)NOT NULL
    pricenumeric(10,2)NOT NULL
    iduuid
    order_iduuidorders.idIDXNOT NULL
    product_iduuidproducts.idIDXNOT NULL
    quantityintNOT NULL
    unit_pricenumeric(10,2)NOT NULL
  • Run a query to see results
  • 8 nodes · 8 edges
    Sources
    Transforms
    Transforms
    Outputs
    events_raw
    kafka
    users
    postgres
    payments
    stripe
    stg_events
    dbt
    dim_users
    dbt
    fct_orders
    dbt
    revenue_dashboard
    looker
    cohort_report
    looker
  • 1 warning
    42%CPU
    peak 42%
    68%Memory
    peak 68%
    83%Disk
    peak 83%
    34MB/sNetwork
    peak 34MB/s
  • POSThttps://api.acme.io/v1/orders?expand=items&currency=usd201 Created207 ms · 842 B
    General
    Request URLhttps://api.acme.io/v1/orders?expand=items&currency=usd
    Request MethodPOST
    Status Code201 Created
    Request Headers
    acceptapplication/json
    authorizationBearer sk_live_••••4f9a
    content-typeapplication/json
    user-agentacme-sdk/2.4.0
    Response Headers
    cache-controlno-store
    content-typeapplication/json; charset=utf-8
    x-ratelimit-remaining98
    x-request-idreq_8Kqd3fz1
  • 2 failed · 2 warningorders · 482.3k rows
    3/7 passed
    uniqueuniqueid0/0 dupes
    accepted_valuesaccepted valuesstatuspending|shipped|refunded
    rangerangetotal0–100000
  • Storage by tableΣ 919 GB
    rawlogspublic
    events_raw
    310 GB
    logs
    156 GB
    order_items
    124 GB
    sessions
    95 GB
    orders
    88 GB
    metrics
    64 GB
    users
    42 GB
    Hover a cell for detail
  • Σ 83.9k events· 112 active days
    LessMore
    Mon
    Wed
    Fri
    Mar
    Apr
    May
    Jun
    Hover a day for detail
  • Σ 24.8k usersentered5.0% overall
    Visited24.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 * * 1

    At 09:00 on Mon

    Next:
  • 0 / 7 mapped· 2 required unmapped
    user_id*uuid
    email*string
    namestring
    signed_up_attimestamp
    planstring
    mrrnumeric
    countrystring
  • 3 rules· first match wins
    1
    2
    3
    Test 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 match
    Capture groups · line 1
    #0payments timeout after 3000ms
    #1payments
    #23000
    servicepayments
    ms3000
  • Target%
    Window
    Allowed downtime
    43m 12sper 30d window
    per day 1m 26sper week 10m 4s
    Requests per day≈ 7.5k failed requests / 30d
    Downtime so far (min)on track
    0.0% used · 43m 12s left
  • 11 of 20 granted· 6 write— noneR readW write
    0R 5W
    3R 0W
    1R 1W
    1R 0W
  • #delaytotal waited
    #11s1s
    #22s3s
    #34s7s
    #48s15s
    #516s31s
    #630scapped1m 1s
    total wait: 1m 1safter 6 retries
  • samples:
    UUID v7timerandomnessversion / variant
    019bc1a3-0583-7abc-8def-0123456789ab
    typeUUID v7variantRFC 4122timestampThu, Jan 15, 2026 · 12:30:45.123 UTCunix 1768480245123randomness18 hex chars
  • JWT · HS256headerpayloadsignature
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhcGk6Ly9kZWZhdWx0IiwiZXhwIjoxNzY4NDgzODQ1LCJpYXQiOjE3Njg0ODAyNDUsImlzcyI6Imh0dHBzOi8vYXV0aC5leGFtcGxlLmNvbSIsInN1YiI6InVzZXJfNDIifQ.c2lnbmF0dXJlLW5vdC12ZXJpZmllZA

    header

    algHS256
    typJWT

    claims

    aud(audience)api://default
    exp(expires)Thu, Jan 15, 2026 · 13:30:45 UTCunix 1768483845
    iat(issued at)Thu, Jan 15, 2026 · 12:30:45 UTCunix 1768480245
    iss(issuer)https://auth.example.com
    sub(subject)user_42

    lifetime: 1h

    signature not verified (decode only)

  • connection stringschemecredentialshostdatabase

    postgresql://app:••••@localhost:5432/analytics

  • token/sreq/ss
    ttokensrequestsalloweddenied
    t110880
    t27871
    t35853
    t45853
    t55853
    t65853
    t75853
    t85853
    t95853
    t105853

    total: 55 allowed · 25 denied (31%)

    sustained 8 req/s exceeds refill 5/s — denials grow without backoff

  • 16 B
    8 B
    8 B
    B avg16 B
    B avg260 B
    1 B
    rows:

    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=null
    levelstringerror
    msgstring"payment timeout"
    durduration"3000ms"
    userstringcus_12af
    okbooleanfalse
    retriesnumber3
    tracenullnull
    JSON
    {
      "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

  • algoenc
    HMAC-SHA-256 · hex

    computing…

    enter an expected signature to compare55 bytes payload
  • rulesmask
    custom
    scrubbed
    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
  • unit
    epoch (s)1781510400
    epoch (ms)1781510400000
    ISO 86012026-06-15T08:00:00.000Z
    UTCMon, Jun 15 2026 · 08:00:00 UTC

    time zones

    UTC2026-06-15 08:00:00GMT+0
    New York2026-06-15 04:00:00GMT-4
    Istanbul2026-06-15 11:00:00GMT+3
    Tokyo2026-06-15 17:00:00GMT+9

    4 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

  • schemehttps
    hostapi.acme.io
    port443 (default)
    path/v1/orders
    hashsection-2
    segmentsv1orders

    query (4)

    statusactive
    limit20
    utm_sourcenewsletter
    taga b
    https://api.acme.io/v1/orders?status=active&limit=20&utm_source=newsletter&tag=a%20b#section-2
  • delim
    JSON · 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/json
    AuthorizationBearer sk_live_123

    body

    {"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 warnings
    L3warnspaces around '=' (will be trimmed)
    L6infoempty value
    L7errorinvalid key name "bad-key"
    L8errormissing '='
    L9warnunquoted value with spaces
    L10warnreferences undefined ${HOSTNAME}
    L11warnduplicate key (overrides line 2)
    NODE_ENVproduction
    PORT3000
    API_KEY••••••••
    DATABASE_URLpostgres://u:p@host/db
    EMPTY(empty)
    GREETINGhello world
    HOST${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

    for

    p95(http_p95_latency) > 300ms for 10m

    for

    max(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=1
    Sort Key: o.created_at DESCSort Method: quicksort Memory: 133kB
    Hash Joincost=64.62..131.25rows=1500actual 0.61ms..1.02ms rows=1500 loops=1
    Hash Cond: (o.customer_id = c.id)
    Seq Scan on orders ocost=0.00..55.50rows=1500actual 0.01ms..0.41ms rows=1500 loops=1
    Filter: (status = 'completed'::text)Rows Removed by Filter: 320
    Hashcost=48.00..48.00rows=1200actual 0.48ms..0.48ms rows=1200 loops=1
    Buckets: 2048 Batches: 1 Memory Usage: 73kB
    Seq Scan on customers ccost=0.00..48.00rows=1200actual 0.01ms..0.22ms rows=1200 loops=1
    5 nodesPlanning 0.22msExecution 1.49ms
  • WHERE =
    RANGE / ORDER BY
    (customer_id, status, created_at)new index
    WHERE =
    RANGE / ORDER BY
    (customer_id)covered by (customer_id, status, created_at)
    WHERE =
    RANGE / ORDER BY
    (region, created_at)new index
    Recommended indexes2 indexes
    CREATE INDEX idx_orders_customer_id_status_created_at ON orders (customer_id, status, created_at);serves 2 patterns
    CREATE INDEX idx_orders_region_created_at ON orders (region, created_at);serves 1 pattern
  • publicmax-age=300s-maxage=3600stale-while-revalidate=60
    BrowserCacheable

    no directive forbids browser caching

    TTL 5.0mremaining 3.0m
    • May serve stale for 60s more while revalidating.
    Shared cache (CDN / proxy)Cacheable

    cacheable 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
  • Query
    Variables (JSON)
    queryGetUserOrders11 fields4 levels deep
    user(id: $userId)
    id
    name
    email
    orders(status: $status, first: $limit)@include(if: $withOrders)
    id
    total
    createdAt
    items
    sku
    quantity
    Variables
    $userId: ID!
    $status: OrderStatus
    $limit: Int= 10
    $withOrders: Boolean= true
  • 5 endpoints2 tags
    Orders · 1 endpoint
    Users · 4 endpoints
  • Look-ahead window
    0 runs in window
    6 runs in window · avg every 1.0h · next Jul 28, 12:00 PM
    0 runs in window
    18 runs in window · avg every 20m · next Jul 28, 11:40 AM
    Overlapping runs6 conflicts
    Jul 28, 12:00 PMhourly-metricscache-warmup
    Jul 28, 01:00 PMhourly-metricscache-warmup
    Jul 28, 02:00 PMhourly-metricscache-warmup
    Jul 28, 03:00 PMhourly-metricscache-warmup
    Jul 28, 04:00 PMhourly-metricscache-warmup
    Jul 28, 05:00 PMhourly-metricscache-warmup