<?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: Егор Хроменков</title>
    <description>The latest articles on DEV Community by Егор Хроменков (@__c0eabc031e).</description>
    <link>https://dev.to/__c0eabc031e</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2548946%2F8da0761d-e7ed-4999-8cce-e8d4af25d614.png</url>
      <title>DEV Community: Егор Хроменков</title>
      <link>https://dev.to/__c0eabc031e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/__c0eabc031e"/>
    <language>en</language>
    <item>
      <title>I vibe-coded a Postgres workspace because pgAdmin and DBeaver don't fit how I work</title>
      <dc:creator>Егор Хроменков</dc:creator>
      <pubDate>Mon, 18 May 2026 19:24:26 +0000</pubDate>
      <link>https://dev.to/__c0eabc031e/i-vibe-coded-a-postgres-workspace-because-pgadmin-and-dbeaver-dont-fit-how-i-work-3oa9</link>
      <guid>https://dev.to/__c0eabc031e/i-vibe-coded-a-postgres-workspace-because-pgadmin-and-dbeaver-dont-fit-how-i-work-3oa9</guid>
      <description>&lt;p&gt;Heads up before anything else: this is built with Claude Code. I don't have time to write a Postgres admin tool from scratch, and the existing ones&lt;br&gt;
   just annoy me. I don't want another desktop app to install on every machine. I don't want to hand my prod creds to some SaaS. I want something I&lt;br&gt;
  can drop into my docker-compose, point at my dev DB, and forget exists.                                                                            &lt;/p&gt;

&lt;p&gt;So I made dbil. One container, around 20MB, React UI baked in. Add it as a service, slap a dbil.enable: "true" label on your Postgres container,&lt;br&gt;&lt;br&gt;
  and it picks the connection up on its own. That's the whole setup.&lt;/p&gt;

&lt;p&gt;What it does — real ER diagram pulled from pg_catalog, no manual dragging boxes around. SQL editor with autocomplete. Paginated row browsing. Live &lt;br&gt;
  metrics for TPS, cache hit ratio, replication lag, slow queries, lock chains, unused indexes. The stuff you'd actually look at.&lt;/p&gt;

&lt;p&gt;Safety is tied to a connection tag. Tag something production and DDL is just refused. DELETE or UPDATE without a WHERE gets blocked. Spot a session&lt;br&gt;
   blocking five others? Hit Kill and dbil sends pg_terminate_backend. No second-guessing.&lt;/p&gt;

&lt;p&gt;State file is encrypted at the app layer — AES-256-GCM, per field, per row. Master key can come from KMS, OS keychain, a mounted secret file, an&lt;br&gt;&lt;br&gt;
  env var, or a TTY prompt. Audit log is forward-chained SHA-256, so if someone tampers with a row directly the chain breaks and the verifier flags&lt;br&gt;
  it. Multi-arch images signed with cosign keyless OIDC, every release ships an SPDX SBOM.                                                           &lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/unkabas/dbil" rel="noopener noreferrer"&gt;https://github.com/unkabas/dbil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not pretending this is enterprise-grade. It's a personal tool that turned into something I want to keep building, and I'd rather do it in the open &lt;br&gt;
  than sit on it. Try it, break it, star it if it's useful. Open issues with whatever feels off — that's the only way it gets better.&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.amazonaws.com%2Fuploads%2Farticles%2Foyph5tsyt2ip1rp4n7fg.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%2Foyph5tsyt2ip1rp4n7fg.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>postgres</category>
      <category>showdev</category>
      <category>vibecoding</category>
    </item>
  </channel>
</rss>
