<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jameel Shaikh</title>
    <description>The latest articles on DEV Community by Jameel Shaikh (@jameelshaikh).</description>
    <link>https://dev.to/jameelshaikh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F713162%2F0add2f8b-35d1-43ef-bf8e-557bb851719a.jpg</url>
      <title>DEV Community: Jameel Shaikh</title>
      <link>https://dev.to/jameelshaikh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jameelshaikh"/>
    <language>en</language>
    <item>
      <title>BracketView 0.1.3: node view, table view, and a local Windows JSON workspace ✨</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Sat, 29 Aug 2026 02:30:00 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/bracketview-013-node-view-table-view-and-a-local-windows-json-workspace-l74</link>
      <guid>https://dev.to/jameelshaikh/bracketview-013-node-view-table-view-and-a-local-windows-json-workspace-l74</guid>
      <description>&lt;p&gt;A collapsible tree is a correct rendering of JSON. It is not always a useful one. 🌳&lt;/p&gt;

&lt;p&gt;If the payload is an API response, you usually want one of two things: relationships (this object points at that list) or records (this array should be columns). BracketView already had Monaco text, a virtualized tree, and a graph. This release adds the two shapes that were missing, plus a few tools that used to live in another tab.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Web: &lt;a href="https://app.bracketview.in" rel="noopener noreferrer"&gt;https://app.bracketview.in&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 Windows: &lt;a href="https://bracketview.in/downloads" rel="noopener noreferrer"&gt;https://bracketview.in/downloads&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Node and table views are free. You do not need Pro to click them. ✅&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Node view
&lt;/h2&gt;

&lt;p&gt;Node view is a canvas of linked cards, not a force-directed hairball of every key.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fne18iimebkezcfi8luig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fne18iimebkezcfi8luig.png" alt="Node view — JSON as linked cards. Nested objects get their own nodes. Arrays of objects land as tables on the canvas. Pan, zoom, search — no more expanding twenty tree levels." width="799" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nested objects become their own nodes.&lt;/li&gt;
&lt;li&gt;Arrays of objects render as tables on the canvas.&lt;/li&gt;
&lt;li&gt;Edges carry the parent → child relationship.&lt;/li&gt;
&lt;li&gt;Search focuses a matching node instead of expanding the whole tree.&lt;/li&gt;
&lt;li&gt;Minimap is optional so the canvas stays readable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Implementation notes, for people who care: &lt;a href="https://reactflow.dev" rel="noopener noreferrer"&gt;React Flow&lt;/a&gt; + &lt;a href="https://github.com/dagrejs/dagre" rel="noopener noreferrer"&gt;dagre&lt;/a&gt; for layout. There is a hard cap (&lt;code&gt;MAX_FLOW_NODES = 250&lt;/code&gt;) so a pathological document does not freeze the tab. Tables on the canvas also cap columns and rows. If your file is huge, stay on tree / table / text (Performance Mode on Pro is for that path). Node view is for the payload you want to inspect as a diagram.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Table view
&lt;/h2&gt;

&lt;p&gt;Table view is for arrays of objects sitting inside a larger document.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpx2oob2a2bkkts58jyc2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpx2oob2a2bkkts58jyc2.png" alt="Table view — arrays of objects as a nested spreadsheet, next to Tree and Graph. Scroll the records without flattening the rest of the document. Long cells wrap instead of overlapping." width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You do not have to flatten the JSON into CSV first. Nested values expand in the cell. Arrays longer than a threshold collapse until you open them. Rows virtualize after ~80 so a large list is still scrollable. Primitives get type coloring consistent with the tree.&lt;/p&gt;

&lt;p&gt;0.1.3 is a polish release on this view: long strings wrap and clamp instead of overlapping the next column (&lt;code&gt;table-layout: fixed&lt;/code&gt;, &lt;code&gt;line-clamp&lt;/code&gt;, &lt;code&gt;wrap-anywhere&lt;/code&gt;). That sounds boring until you paste a real webhook body with a JWT in a field. 😅&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 Encoder / decoder and text compare
&lt;/h2&gt;

&lt;p&gt;Under &lt;strong&gt;More&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🔐 Encoder / decoder&lt;/td&gt;
&lt;td&gt;Base64, URL, ASCII, Unicode, binary, hex, Base64 URL-safe, ROT13, Morse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;↔️ Text compare&lt;/td&gt;
&lt;td&gt;Monaco &lt;code&gt;DiffEditor&lt;/code&gt;, side by side from &lt;code&gt;md&lt;/code&gt; and up&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These run in the browser. In the Windows app they stay on the device.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encoder: &lt;a href="https://app.bracketview.in/encoder-decoder" rel="noopener noreferrer"&gt;https://app.bracketview.in/encoder-decoder&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Compare: &lt;a href="https://app.bracketview.in/compare-view" rel="noopener noreferrer"&gt;https://app.bracketview.in/compare-view&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Structural JSON diff is still the separate Diff tool. Text compare is for logs, headers, and “why do these two strings disagree.”&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️🌍 Workspace settings and nine locales
&lt;/h2&gt;

&lt;p&gt;The header gear is &lt;strong&gt;Workspace settings&lt;/strong&gt;: appearance, editor font, and language. Font and theme are no longer buried on the profile page.&lt;/p&gt;

&lt;p&gt;Locales: &lt;code&gt;en&lt;/code&gt;, &lt;code&gt;zh-CN&lt;/code&gt;, &lt;code&gt;ja&lt;/code&gt;, &lt;code&gt;ko&lt;/code&gt;, &lt;code&gt;pt-BR&lt;/code&gt;, &lt;code&gt;es&lt;/code&gt;, &lt;code&gt;fr&lt;/code&gt;, &lt;code&gt;de&lt;/code&gt;, &lt;code&gt;ru&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Windows desktop (Tauri 2)
&lt;/h2&gt;

&lt;p&gt;The desktop shell is a local JSON workspace: viewer (text, tree, graph, node, table), jq/JSONPath, stats, encoder, text compare, native Open / Save. Cloud, auth, and marketing stay out of that binary.&lt;/p&gt;

&lt;p&gt;Facts only:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🪟 Windows 10 / 11, NSIS + MSI&lt;/li&gt;
&lt;li&gt;🐧 Linux: not shipped&lt;/li&gt;
&lt;li&gt;🍎 macOS: no build&lt;/li&gt;
&lt;li&gt;⚠️ Installers may trip SmartScreen until they are Authenticode-signed; More info → Run anyway&lt;/li&gt;
&lt;li&gt;Settings can check latest.json and send you to the installer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Shortcuts that only exist on desktop: &lt;code&gt;Ctrl+O&lt;/code&gt; open, &lt;code&gt;Ctrl+S&lt;/code&gt; save, &lt;code&gt;Ctrl+Shift+S&lt;/code&gt; save as. Share-snapshot shortcut stays web-only.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌐 Web-only UX in the same drop
&lt;/h2&gt;

&lt;p&gt;If you use the hosted app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👤 Profile photo opens Manage Profile / Sign out (header Sign out button is gone)&lt;/li&gt;
&lt;li&gt;🔍 Tree search sits on the tree toolbar; ✨ AI slides in from the right, next to keyboard shortcuts&lt;/li&gt;
&lt;li&gt;🕒 Profile JSON history: custom date filter + copy JSON in one click&lt;/li&gt;
&lt;li&gt;⚡ Route changes show a layout skeleton instead of a blank page&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔒 Privacy model (unchanged)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Local (default)&lt;/th&gt;
&lt;th&gt;Optional server&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;View, format, validate, JSONPath, jq, client-side diff/schema/types, encoder, text compare&lt;/td&gt;
&lt;td&gt;AI (server-side Groq/Gemini keys), encrypted snapshots, webhook storage, signed-in history&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Analytics may record events without collecting raw JSON. Details: &lt;a href="https://bracketview.in/privacy" rel="noopener noreferrer"&gt;bracketview.in/privacy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;BracketView is still not an HTTP client. Paste from your client, or use Webhook Tester for inbound events.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Try it with a real payload
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;a href="https://app.bracketview.in" rel="noopener noreferrer"&gt;app.bracketview.in&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Paste something you actually received this week&lt;/li&gt;
&lt;li&gt;Cycle Tree → Graph → Node → Table&lt;/li&gt;
&lt;li&gt;If you want it offline, grab the &lt;a href="https://bracketview.in/downloads" rel="noopener noreferrer"&gt;Windows build&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If node view truncates your document or table view picks the wrong columns, that is useful feedback — those caps and heuristics are the interesting part, not the screenshots. 🙏&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>🚀 We turned a JSON viewer into an AI debugging workspace</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Sat, 08 Aug 2026 14:17:05 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/we-turned-a-json-viewer-into-an-ai-debugging-workspace-55fl</link>
      <guid>https://dev.to/jameelshaikh/we-turned-a-json-viewer-into-an-ai-debugging-workspace-55fl</guid>
      <description>&lt;h2&gt;
  
  
  😵 The problem
&lt;/h2&gt;

&lt;p&gt;Nested API payloads are painful to inspect, fix, and share.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✨ What we shipped
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🤖 AI side panel for explain / repair / JSONPath / types&lt;/li&gt;
&lt;li&gt;🌲 Virtualized tree with search and context menus&lt;/li&gt;
&lt;li&gt;🪝 Webhook Tester for capture → inspect → replay&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ Try it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://app.bracketview.in" rel="noopener noreferrer"&gt;https://app.bracketview.in&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ℹ️ Know more
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://bracketview.in" rel="noopener noreferrer"&gt;https://bracketview.in&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💬 Feedback welcome.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>json</category>
      <category>startup</category>
    </item>
    <item>
      <title>Webhook debugging shouldn’t require a weekend’s worth of scaffolding</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Sat, 08 Aug 2026 07:17:02 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/webhook-debugging-shouldnt-require-a-weekends-worth-of-scaffolding-1d8p</link>
      <guid>https://dev.to/jameelshaikh/webhook-debugging-shouldnt-require-a-weekends-worth-of-scaffolding-1d8p</guid>
      <description>&lt;h3&gt;
  
  
  How we built a disposable Webhook Tester into BracketView — live capture, mocks, replay, and browser-side HMAC verification
&lt;/h3&gt;




&lt;p&gt;If you’ve ever connected Stripe, GitHub, Shopify, or any “we’ll POST to your URL” product, you know the drill:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Spin up a random request bin
&lt;/li&gt;
&lt;li&gt;Trigger an event and &lt;em&gt;hope&lt;/em&gt; the payload still looks like the docs
&lt;/li&gt;
&lt;li&gt;Copy/paste JSON into Postman or Slack
&lt;/li&gt;
&lt;li&gt;Fight signature verification on localhost
&lt;/li&gt;
&lt;li&gt;Discover the bin expired and start over
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That loop burns more time than the actual handler.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Webhook Tester&lt;/strong&gt; is our answer — a disposable public endpoint + live inspect loop, built into &lt;a href="https://app.bracketview.in" rel="noopener noreferrer"&gt;BracketView&lt;/a&gt; (the same place people already go for JSON tools).&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;Try it free:&lt;/strong&gt; &lt;a href="https://app.bracketview.in/webhooks" rel="noopener noreferrer"&gt;https://app.bracketview.in/webhooks&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Public URL in seconds&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Paste into any provider dashboard (&lt;code&gt;hooks.bracketview.in/e/…&lt;/code&gt; style)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Live request feed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;See POSTs/GETs land as they happen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Headers / query / body / raw&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;JSON tree when the body is JSON&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mock responses&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Status, headers, body, optional delay — so setup isn’t blocked on a real server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Replay &amp;amp; edit-and-resend&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hit your tunnel or staging once you have code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stripe / GitHub / Shopify signatures&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;HMAC verify &lt;strong&gt;in the browser&lt;/strong&gt; — signing secrets stay local&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Share one capture (Pro)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Encrypted snapshot link for that one cursed payload&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No account required to try. Guests own endpoints via a cookie; signed-in users get a more permanent attachment to their endpoints and Pro limits when needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  The workflow we optimized for
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmc1aj6t4tkqvni6llnyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmc1aj6t4tkqvni6llnyu.png" alt="BracketView's new Webhook Tester" width="800" height="716"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Create → paste → watch
&lt;/h3&gt;

&lt;p&gt;On the dashboard, create an endpoint (e.g. “Stripe test”), pick retention, copy the &lt;strong&gt;public&lt;/strong&gt; URL into the provider.&lt;/p&gt;

&lt;p&gt;Open the endpoint page for a &lt;strong&gt;live feed&lt;/strong&gt;. Pause when you’re mid-inspect so new arrivals don’t jump the list out from under you.&lt;/p&gt;

&lt;p&gt;Click a request → tabs for headers, query, body (JSON tree), raw, mock response, and signatures.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Mock before you implement
&lt;/h3&gt;

&lt;p&gt;Many providers won’t finish webhook registration until they get a 2xx (or a specific body).&lt;/p&gt;

&lt;p&gt;Configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Status code
&lt;/li&gt;
&lt;li&gt;Response headers
&lt;/li&gt;
&lt;li&gt;Body
&lt;/li&gt;
&lt;li&gt;Optional delay
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changes apply to &lt;strong&gt;future&lt;/strong&gt; requests — so you can unblock product setup before your real handler exists.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Replay when the code is ready
&lt;/h3&gt;

&lt;p&gt;When your app is up (local via tunnel or staging), &lt;strong&gt;replay&lt;/strong&gt; a capture — or edit and resend after small tweaks.&lt;/p&gt;

&lt;p&gt;Replay is intentionally constrained (SSRF-minded): private/metadata ranges, credentialed URLs, and similar foot-guns are blocked. Goal: “send this to &lt;em&gt;my&lt;/em&gt; URL,” not “open proxy.”&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Verify signatures locally
&lt;/h3&gt;

&lt;p&gt;The Signature tab walks the common schemes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stripe&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shopify&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verification runs client-side. Your &lt;strong&gt;signing secret never needs to leave the browser&lt;/strong&gt; for that check. Treat the public URL like a temporary secret; treat signing secrets like… actual secrets.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Share one capture (Pro)
&lt;/h3&gt;

&lt;p&gt;Sometimes you don’t need a full log export — you need a second pair of eyes on &lt;strong&gt;one&lt;/strong&gt; payload. Pro can share a single capture via an encrypted snapshot link (same pattern as BracketView’s JSON snapshots), instead of dumping PII into chat.&lt;/p&gt;




&lt;h2&gt;
  
  
  Free vs Pro
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Active endpoints: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Captures per endpoint: &lt;strong&gt;25&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Max retention: &lt;strong&gt;2 days&lt;/strong&gt; (default 2)&lt;/li&gt;
&lt;li&gt;Body size: &lt;strong&gt;256 KB&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Share a capture: &lt;strong&gt;No&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pro&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Active endpoints: &lt;strong&gt;25&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Captures per endpoint: &lt;strong&gt;5,000&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Max retention: &lt;strong&gt;30 days&lt;/strong&gt; (default 7)&lt;/li&gt;
&lt;li&gt;Body size: &lt;strong&gt;1 MB&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Share a capture: &lt;strong&gt;Yes&lt;/strong&gt; (encrypted snapshot)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enough free for side projects and demos. Enough Pro for multi-project integration work without treating us as free forever-storage for production traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing / plans:&lt;/strong&gt; &lt;a href="https://app.bracketview.in/pricing" rel="noopener noreferrer"&gt;https://app.bracketview.in/pricing&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this lives inside a JSON toolkit
&lt;/h2&gt;

&lt;p&gt;A huge share of modern webhooks are JSON. If you’re already opening a tree viewer to understand payloads, compare fixtures, or share a snapshot, jumping to another random “requestbin clone” that only dumps raw body is friction you don’t need.&lt;/p&gt;

&lt;p&gt;Webhook Tester sits next to that workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capture → understand shape → mock provider demands → implement → replay → (optionally) share one bad event.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Also: webhooks aren’t free infinite logs. TTL, per-endpoint caps, and rate limits keep free usable for builders while keeping ops sane.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security notes (worth spelling out)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public URLs are temporary secrets.&lt;/strong&gt; Anyone with the URL can POST. Prefer shorter retention when you’re done exploring.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replay is guarded&lt;/strong&gt; against classic SSRF patterns (private IPs, metadata endpoints, etc.).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mock/replay headers are sanitized&lt;/strong&gt; (no nasty CRLF / &lt;code&gt;Set-Cookie&lt;/code&gt; games).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signature verification is client-side&lt;/strong&gt; for provider secrets.
&lt;/li&gt;
&lt;li&gt;This accelerates &lt;strong&gt;development&lt;/strong&gt; — it doesn’t replace production hardening of your real endpoints.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Who it’s for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Indie builders wiring payments, OAuth, or marketplace events
&lt;/li&gt;
&lt;li&gt;Backend engineers comparing sandbox vs live payload shape
&lt;/li&gt;
&lt;li&gt;Support/debug when someone says “the webhook fired” and you need the body without production log archaeology
&lt;/li&gt;
&lt;li&gt;Anyone tired of half a request bin + half of Postman’s job spread across five tabs
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://app.bracketview.in/webhooks" rel="noopener noreferrer"&gt;app.bracketview.in/webhooks&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New endpoint&lt;/strong&gt; → name it → set retention
&lt;/li&gt;
&lt;li&gt;Copy the public URL into Stripe / GitHub / Shopify / etc.
&lt;/li&gt;
&lt;li&gt;Trigger a test event → watch the live feed
&lt;/li&gt;
&lt;li&gt;Mock a 200 if the provider needs it
&lt;/li&gt;
&lt;li&gt;When your handler is ready → replay to your tunnel
&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Signature&lt;/strong&gt; if you’re debugging HMAC failures
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Webhook debugging shouldn’t start with scaffold and end with expired bins.&lt;/p&gt;

&lt;p&gt;If you try Webhook Tester this week, I’d love a comment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What webhook would you aim a disposable URL at first — Stripe, GitHub, Shopify, or something we should add signature presets for next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Webhook Tester:&lt;/strong&gt; &lt;a href="https://app.bracketview.in/webhooks" rel="noopener noreferrer"&gt;https://app.bracketview.in/webhooks&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🔗 &lt;strong&gt;BracketView app:&lt;/strong&gt; &lt;a href="https://app.bracketview.in" rel="noopener noreferrer"&gt;https://app.bracketview.in&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Happy building.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>webhooks</category>
      <category>ai</category>
    </item>
    <item>
      <title>Struggling with messy JSON? Try BracketView (bracketview.in)—a secure, browser-only tool to visualize and fix your data instantly.</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Sat, 09 May 2026 19:22:35 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/struggling-with-messy-json-try-bracketview-bracketviewin-a-secure-browser-only-tool-to-226</link>
      <guid>https://dev.to/jameelshaikh/struggling-with-messy-json-try-bracketview-bracketviewin-a-secure-browser-only-tool-to-226</guid>
      <description></description>
      <category>json</category>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>BracketView Feature Update: Faster API + JSON Workflows in One Place</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Fri, 20 Mar 2026 14:58:43 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/bracketview-feature-update-faster-api-json-workflows-in-one-place-16n5</link>
      <guid>https://dev.to/jameelshaikh/bracketview-feature-update-faster-api-json-workflows-in-one-place-16n5</guid>
      <description>&lt;p&gt;If you work with JSON daily, this update should make your day easier.&lt;br&gt;
Here is what is new in BracketView:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Built-in API Tester
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkyxaena6on52zx3kbxry.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkyxaena6on52zx3kbxry.png" alt="API Tester - Request tabs (Params/Auth/Headers/Body)" width="800" height="403"&gt;&lt;/a&gt;&lt;br&gt;
You can now test APIs directly inside BracketView instead of jumping between tools.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Methods: &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;POST&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt;, &lt;code&gt;PATCH&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;HEAD&lt;/code&gt;, &lt;code&gt;OPTIONS&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Request sections: Params, Auth, Headers, Body&lt;/li&gt;
&lt;li&gt;Body types like raw, form-data, graphql, binary, and more&lt;/li&gt;
&lt;li&gt;Open response JSON directly in the Viewer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Shareable JSON Snapshots
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5kt08ny8y83aa2csbk3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5kt08ny8y83aa2csbk3l.png" alt="Share Snapshot popup with optional annotation fields" width="800" height="403"&gt;&lt;/a&gt;&lt;br&gt;
You can generate a public snapshot link and share JSON quickly with teammates.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Optional annotation while sharing&lt;/li&gt;
&lt;li&gt;Add a JSONPath + note to explain important fields&lt;/li&gt;
&lt;li&gt;Replaces older P2P sharing that required receiver-side setup&lt;/li&gt;
&lt;li&gt;Receiver can now open a single generated link to view the content&lt;/li&gt;
&lt;li&gt;Great for reviews, bug reports, and async discussions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Better support for large JSON files (up to 50MB)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhbgzkz0z5a4mcli3zsr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhbgzkz0z5a4mcli3zsr.png" alt="Viewer with a large payload loaded" width="800" height="403"&gt;&lt;/a&gt;&lt;br&gt;
Large payloads are now much more usable in BracketView.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smoother loading and viewing for heavy files&lt;/li&gt;
&lt;li&gt;Better experience for logs, exports, and big API responses&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. AI Mock Data Generator
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F396mw717fkvo0qv38lbj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F396mw717fkvo0qv38lbj.png" alt="Schema page Mock tab with profile + rows + generated dataset" width="800" height="404"&gt;&lt;/a&gt;&lt;br&gt;
Mock data generation is now built into the Schema page in a dedicated tab.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste or import a schema&lt;/li&gt;
&lt;li&gt;Pick how many rows you want&lt;/li&gt;
&lt;li&gt;Add a profile like &lt;code&gt;users&lt;/code&gt; or &lt;code&gt;employees&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Generate realistic test data quickly&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. JQ + JSONPath together
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezubdf1yz69dy08n37x6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezubdf1yz69dy08n37x6.png" alt="Dual-mode query panel showing mode switch" width="800" height="404"&gt;&lt;/a&gt;&lt;br&gt;
You can now query JSON in both styles in one place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JQ for advanced filtering and transforms&lt;/li&gt;
&lt;li&gt;JSONPath for familiar path-based queries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes BracketView easier for mixed teams and different query preferences.&lt;/p&gt;

&lt;p&gt;If you already use BracketView, try the new flow and let me know what you want next:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bracketview.in" rel="noopener noreferrer"&gt;https://bracketview.in&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Wed, 18 Feb 2026 19:36:31 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/-44n7</link>
      <guid>https://dev.to/jameelshaikh/-44n7</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jameelshaikh/bracketviews-jq-panel-just-got-smarter-ai-powered-queries-dynamic-filters-more-17m9" class="crayons-story__hidden-navigation-link"&gt;BracketView's JQ Panel Just Got Smarter — AI-Powered Queries, Dynamic Filters &amp;amp; More&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/jameelshaikh" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F713162%2F0add2f8b-35d1-43ef-bf8e-557bb851719a.jpg" alt="jameelshaikh profile" class="crayons-avatar__image" width="800" height="799"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jameelshaikh" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jameel Shaikh
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jameel Shaikh
                
                
              
              &lt;div id="story-author-preview-content-3266516" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/jameelshaikh" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F713162%2F0add2f8b-35d1-43ef-bf8e-557bb851719a.jpg" class="crayons-avatar__image" alt="" width="800" height="799"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jameel Shaikh&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/jameelshaikh/bracketviews-jq-panel-just-got-smarter-ai-powered-queries-dynamic-filters-more-17m9" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 18&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/jameelshaikh/bracketviews-jq-panel-just-got-smarter-ai-powered-queries-dynamic-filters-more-17m9" id="article-link-3266516"&gt;
          BracketView's JQ Panel Just Got Smarter — AI-Powered Queries, Dynamic Filters &amp;amp; More
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/automation"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;automation&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/startup"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;startup&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/jameelshaikh/bracketviews-jq-panel-just-got-smarter-ai-powered-queries-dynamic-filters-more-17m9#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>productivity</category>
      <category>automation</category>
      <category>startup</category>
    </item>
    <item>
      <title>BracketView's JQ Panel Just Got Smarter — AI-Powered Queries, Dynamic Filters &amp; More</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Wed, 18 Feb 2026 19:35:38 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/bracketviews-jq-panel-just-got-smarter-ai-powered-queries-dynamic-filters-more-17m9</link>
      <guid>https://dev.to/jameelshaikh/bracketviews-jq-panel-just-got-smarter-ai-powered-queries-dynamic-filters-more-17m9</guid>
      <description>&lt;p&gt;I shipped a major update to BracketView's JQ Filter panel — you can now ask AI to generate jq queries in plain English, the quick filter buttons adapt to your actual JSON data, and the whole experience feels significantly more polished.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem with JQ
&lt;/h2&gt;

&lt;p&gt;If you've ever worked with JSON data, you know jq is incredibly powerful. It's the Swiss Army knife of JSON transformation. But let's be honest — its syntax has a learning curve. Even experienced developers frequently reach for the docs when writing anything beyond &lt;code&gt;.field&lt;/code&gt; or &lt;code&gt;.[0]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I wanted to bridge that gap. BracketView already had a JQ Filter panel where you could write and run jq queries against your JSON data in the browser. But we kept hearing the same feedback:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I know what I want, I just don't know how to write it in jq."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I fixed that.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's New
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. AI-Powered Query Generation
&lt;/h3&gt;

&lt;p&gt;There's now an AI button in the filter toolbar. Click it, describe what you want in plain English, and the AI generates a valid jq filter — using your actual field names.&lt;/p&gt;

&lt;p&gt;For example, with a dataset of programming languages, you could type:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Get all languages where the year is greater than 2000"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the AI generates:&lt;br&gt;
&lt;code&gt;[.[] | select(.year &amp;gt; 2000)]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It works because the AI doesn't just see your prompt — it sees your JSON structure. The API extracts a schema from your data (field names, types, nesting, array sizes) and sends it alongside your request. For small JSON, it sends the raw data. For large datasets, it sends a compact structural schema plus a sample — so the AI always understands what it's working with, regardless of file size.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Context-Aware Quick Filters
&lt;/h3&gt;

&lt;p&gt;The old quick filter chips were static — "Identity", "Keys", "Length", "First", "Select", "Map", etc. Useful as a starting point, but generic.&lt;/p&gt;

&lt;p&gt;Now, the quick filters adapt to your data.&lt;/p&gt;

&lt;p&gt;Paste an array of objects with fields like &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;language&lt;/code&gt;, and &lt;code&gt;year&lt;/code&gt;, and you'll see chips like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All name → &lt;code&gt;[.[] | .name]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Sort by year → &lt;code&gt;sort_by(.year)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Group by language → &lt;code&gt;group_by(.language)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Unique language → &lt;code&gt;[.[] | .language] | unique]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Min by year / Max by year → &lt;code&gt;min_by(.year) / max_by(.year)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Pick fields → &lt;code&gt;[.[] | {name, language, year}]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The logic is smart about which filters to suggest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Number fields get Sort, Min, and Max&lt;/li&gt;
&lt;li&gt;String fields get Group by and Unique — but only if the cardinality makes sense (not all unique, not all identical)&lt;/li&gt;
&lt;li&gt;Boolean fields get a "Where" filter (e.g., &lt;code&gt;Where active&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Nested arrays get Flatten suggestions&lt;/li&gt;
&lt;li&gt;Fields named &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;email&lt;/code&gt;, etc. are prioritized for extraction chips&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your JSON is a flat array of primitives (numbers, strings), you get Sort, Unique, Sum, Min, Max. If it's a top-level object, you get Keys, Values, To entries, and direct access chips for each key — with array counts shown inline.&lt;/p&gt;

&lt;p&gt;When there's no JSON loaded or it's invalid, the panel falls back to universal generic filters.&lt;/p&gt;




&lt;h3&gt;
  
  
  Try It
&lt;/h3&gt;

&lt;p&gt;BracketView is live at &lt;a href="https://bracketview.in" rel="noopener noreferrer"&gt;bracketview.in&lt;/a&gt;. Paste any JSON, switch to the JQ Filter tab, and click the AI button.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>automation</category>
      <category>startup</category>
    </item>
    <item>
      <title>Introducing JQ Filter Playground &amp; Dark Mode in BracketView</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Tue, 17 Feb 2026 21:00:19 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/introducing-jq-filter-playground-dark-mode-in-bracketview-5bi1</link>
      <guid>https://dev.to/jameelshaikh/introducing-jq-filter-playground-dark-mode-in-bracketview-5bi1</guid>
      <description>&lt;p&gt;If you work with JSON daily -- debugging API responses, parsing config files, exploring data exports -- you know the pain. Copy JSON into one tool, pipe it through jq in the terminal, squint at a white screen at 2 AM.&lt;br&gt;
Today, BracketView ships a JQ Filter Playground and full Dark Mode support.&lt;/p&gt;

&lt;h2&gt;
  
  
  JQ Filter -- Query JSON Without Installing Anything
&lt;/h2&gt;

&lt;p&gt;BracketView now runs a full jq engine in your browser via WebAssembly. No installation. No server. Your data never leaves your machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste JSON in the Text tab&lt;/li&gt;
&lt;li&gt;Switch to the JQ Filter tab&lt;/li&gt;
&lt;li&gt;Type any jq expression -- results appear in real-time as you type&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quick Filters &amp;amp; Syntax Help&lt;/strong&gt;&lt;br&gt;
Not a jq expert? No problem. One-click Quick Filter chips cover the most common operations:&lt;br&gt;
&lt;code&gt;.&lt;/code&gt; (identity) | &lt;code&gt;keys&lt;/code&gt; | &lt;code&gt;length&lt;/code&gt; | &lt;code&gt;.[0]&lt;/code&gt; | &lt;code&gt;select()&lt;/code&gt; | &lt;code&gt;map()&lt;/code&gt; | &lt;code&gt;sort_by()&lt;/code&gt; | &lt;code&gt;group_by()&lt;/code&gt; | &lt;code&gt;unique_by()&lt;/code&gt; | &lt;code&gt;to_entries&lt;/code&gt; | &lt;code&gt;flatten&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;There's also a built-in Syntax Reference covering field access, array slicing, filtering, transformation, pipes, conditionals, and string functions -- so you never need to leave the tab.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Under the Hood&lt;/strong&gt;&lt;br&gt;
The filter runs in a Web Worker with request deduplication, 300ms debounce, and race condition prevention. The UI never freezes, even with large payloads. Output shows line numbers, and you can copy results with one click.&lt;/p&gt;




&lt;h2&gt;
  
  
  Dark Mode -- Everywhere
&lt;/h2&gt;

&lt;p&gt;Click the sun/moon icon in the header. Done.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89rtfgtdn8j50fmlt34m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89rtfgtdn8j50fmlt34m.png" alt="Dark Mode Preview" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What makes it solid:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No white flash on load -- a  script reads your preference before React hydrates&lt;/li&gt;
&lt;li&gt;Respects system preference -- follows prefers-color-scheme if you haven't chosen&lt;/li&gt;
&lt;li&gt;Persists across sessions via localStorage&lt;/li&gt;
&lt;li&gt;Covers every tool -- JQ Filter, JSON Diff, Schema Validator, Types Generator, Encoder/Decoder, Prompt Enhancer, Markdown Converter, Error Simplifier -- all themed&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;Free. No signup. Everything runs in your browser.&lt;br&gt;
&lt;a href="//bracketview.in"&gt;BracketView&lt;/a&gt; -- Paste JSON, switch to JQ Filter, toggle dark mode.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Built by Jameel Shaikh. Find it useful? &lt;a href="https://buymeacoffee.com/jameelshaikh" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt; or share it with your team.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>jquery</category>
      <category>productivity</category>
      <category>ai</category>
      <category>json</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Mon, 16 Feb 2026 18:16:53 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/-3b33</link>
      <guid>https://dev.to/jameelshaikh/-3b33</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jameelshaikh/stop-fighting-your-json-meet-bracketview-the-ai-powered-tool-every-developer-needs-95n" class="crayons-story__hidden-navigation-link"&gt;Stop Fighting Your JSON: Meet BracketView, the AI-Powered Tool Every Developer Needs 🚀&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/jameelshaikh" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F713162%2F0add2f8b-35d1-43ef-bf8e-557bb851719a.jpg" alt="jameelshaikh profile" class="crayons-avatar__image" width="800" height="799"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jameelshaikh" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jameel Shaikh
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jameel Shaikh
                
                
              
              &lt;div id="story-author-preview-content-3260577" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/jameelshaikh" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F713162%2F0add2f8b-35d1-43ef-bf8e-557bb851719a.jpg" class="crayons-avatar__image" alt="" width="800" height="799"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jameel Shaikh&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/jameelshaikh/stop-fighting-your-json-meet-bracketview-the-ai-powered-tool-every-developer-needs-95n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 16&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/jameelshaikh/stop-fighting-your-json-meet-bracketview-the-ai-powered-tool-every-developer-needs-95n" id="article-link-3260577"&gt;
          Stop Fighting Your JSON: Meet BracketView, the AI-Powered Tool Every Developer Needs 🚀
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/jameelshaikh/stop-fighting-your-json-meet-bracketview-the-ai-powered-tool-every-developer-needs-95n" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/jameelshaikh/stop-fighting-your-json-meet-bracketview-the-ai-powered-tool-every-developer-needs-95n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Stop Fighting Your JSON: Meet BracketView, the AI-Powered Tool Every Developer Needs 🚀</title>
      <dc:creator>Jameel Shaikh</dc:creator>
      <pubDate>Mon, 16 Feb 2026 18:09:36 +0000</pubDate>
      <link>https://dev.to/jameelshaikh/stop-fighting-your-json-meet-bracketview-the-ai-powered-tool-every-developer-needs-95n</link>
      <guid>https://dev.to/jameelshaikh/stop-fighting-your-json-meet-bracketview-the-ai-powered-tool-every-developer-needs-95n</guid>
      <description>&lt;p&gt;Dealing with JSON is a daily reality for most of us, but let’s be honest: most online formatters are cluttered with intrusive ads, tiny text boxes, and outdated features. They tell you your JSON is invalid, but they don't help you fix it.&lt;/p&gt;

&lt;p&gt;That’s why I built &lt;a href="https://bracketview.in" rel="noopener noreferrer"&gt;BracketView&lt;/a&gt;—a fast, ad-free, and privacy-first workspace designed to be the ultimate companion for modern developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes BracketView Different?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;🚫 100% Ad-Free &amp;amp; Distraction-Free&lt;/strong&gt;&lt;br&gt;
Unlike other popular formatters that cram ads into every sidebar, BracketView is completely ad-free. I wanted a tool that feels like a professional IDE, not a billboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🖥️ Large Screen Viewing Space&lt;/strong&gt;&lt;br&gt;
I’ve optimized the layout to provide a large, expansive workspace. Whether you are viewing deep nested structures in the Tree View or comparing large files, the UI stays out of your way and gives your data the room it needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ Key Features You’ll Actually Use:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Magic "AI JSON Fixer":&lt;/strong&gt; If you have a missing comma, unquoted keys, or trailing commas, the AI Fixer analyzes the structure and repairs it instantly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Prompt Enhancer:&lt;/strong&gt; Beyond just JSON, use the built-in AI to refine and improve your LLM prompts for better results in your development workflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Visual Exploration:&lt;/strong&gt; Toggle between a standard Tree View and a dynamic Graph View to visualize complex data relationships as a node map.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-Language Type Generation:&lt;/strong&gt; Instantly convert JSON into accurate type definitions for 9+ languages, including TypeScript, Python, Go, and Rust.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JSON Diff &amp;amp; Comparison:&lt;/strong&gt; Debug API changes with a side-by-side comparison tool that highlights added, removed, and modified fields.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Markdown &amp;amp; Schema Tools:&lt;/strong&gt; Convert Markdown to Word/PDF or validate data against JSON Schemas—all in one place.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;🔒 Privacy First&lt;/strong&gt;&lt;br&gt;
As a developer, I know your data is sensitive. BracketView processes everything locally in your browser. Your JSON never touches a server, making it safe for professional use with confidential API responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check it out!&lt;/strong&gt;&lt;br&gt;
I built this using Angular and Tailwind CSS to be the fastest and most aesthetic JSON tool on the web. I'd love to hear your feedback or any feature requests you have!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👉 Try it now:&lt;/strong&gt; &lt;a href="https://bracketview.in" rel="noopener noreferrer"&gt;https://bracketview.in&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
