<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://durcno.dev/blog</id>
    <title>Durcno Blog</title>
    <updated>2026-04-17T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://durcno.dev/blog"/>
    <subtitle>Durcno Blog</subtitle>
    <icon>https://durcno.dev/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Announcing Durcno - A PostgreSQL Query Builder and Migration Manager for TypeScript]]></title>
        <id>https://durcno.dev/blog/announcing-durcno</id>
        <link href="https://durcno.dev/blog/announcing-durcno"/>
        <updated>2026-04-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I'm excited to announce Durcno, a PostgreSQL Query Builder and Migration Manager for TypeScript, designed with intuitive abstractions, robust type safety, and truly smart migration management in mind.]]></summary>
        <content type="html"><![CDATA[<p>I'm excited to announce <strong>Durcno</strong>, a PostgreSQL Query Builder and Migration Manager for TypeScript, designed with intuitive abstractions, robust type safety, and truly smart migration management in mind.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_UjdY" id="history">History<a href="https://durcno.dev/blog/announcing-durcno#history" class="hash-link" aria-label="Direct link to History" title="Direct link to History" translate="no">​</a></h2>
<p>I migrated from the Django ecosystem to TypeScript, seeking the type safety and DX that Python could not provide. My initial choice for database access in TypeScript was Drizzle ORM, largely because I preferred the simple, simple abstraction over PostgreSQL that query builders like Drizzle offer, as opposed to the high-level abstraction and black-box behavior of traditional ORMs like Django.</p>
<p>However, while Drizzle ORM provided a clean abstraction, I found myself missing the maturity and powerful migration management that Django delivers. The slow pace of development in Drizzle ORM, especially around migrations and critical hanging bugs, became a source of frustration. This gap inspired me to build my own query builder and migration manager from scratch.</p>
<p>To be honest, a few core ideas in Durcno are inspired by Drizzle ORM, and perhaps Durcno would never exist if Drizzle ORM wasn't there. But Durcno aims to go further, especially in migration management and developer experience.</p>
<p>The TypeScript ecosystem has seen significant innovation in database tooling in recent years, but Durcno is here to combine the best from every ecosystem, to bring the future into the present.</p>
<h2 class="anchor anchorTargetStickyNavbar_UjdY" id="why-durcno">Why Durcno?<a href="https://durcno.dev/blog/announcing-durcno#why-durcno" class="hash-link" aria-label="Direct link to Why Durcno?" title="Direct link to Why Durcno?" translate="no">​</a></h2>
<p>Instead of just being another query builder, Durcno is built to be the defacto type safe PostgreSQL wrapper for rapid, collaborative and agentic development. Durcno focuses on three core pillars:</p>
<h3 class="anchor anchorTargetStickyNavbar_UjdY" id="intuitive-abstraction">Intuitive Abstraction<a href="https://durcno.dev/blog/announcing-durcno#intuitive-abstraction" class="hash-link" aria-label="Direct link to Intuitive Abstraction" title="Direct link to Intuitive Abstraction" translate="no">​</a></h3>
<p>Durcno provides clean, expressive definitions and queries that map naturally to PostgreSQL. Your schema definitions read like documentation, and your queries feel like writing SQL but with full type safety. There's no magic or hidden complexity; what you write is what you get.</p>
<h3 class="anchor anchorTargetStickyNavbar_UjdY" id="extended-type-safety">Extended Type Safety<a href="https://durcno.dev/blog/announcing-durcno#extended-type-safety" class="hash-link" aria-label="Direct link to Extended Type Safety" title="Direct link to Extended Type Safety" translate="no">​</a></h3>
<p>Durcno goes beyond basic type inference. It provides extended, rigorous, compile-time type safety across your entire database interaction layer. From complex joins to advanced aggregations, if it compiles, you can trust it to run correctly.</p>
<h3 class="anchor anchorTargetStickyNavbar_UjdY" id="robust-migrations">Robust Migrations<a href="https://durcno.dev/blog/announcing-durcno#robust-migrations" class="hash-link" aria-label="Direct link to Robust Migrations" title="Direct link to Robust Migrations" translate="no">​</a></h3>
<p>Managing schema changes is historically painful. Durcno features a robust migrations system designed from the ground up for modern workflows. It treats schema evolution as a first-class citizen, with a powerful set of built-in commands:</p>
<ul>
<li class=""><strong><code>durcno generate</code></strong> — Auto-generate migrations from your schema changes</li>
<li class=""><strong><code>durcno migrate</code></strong> — Apply pending migrations to your database</li>
<li class=""><strong><code>durcno down &lt;migration&gt;</code></strong> — Rollback a specific migration</li>
<li class=""><strong><code>durcno squash &lt;start&gt; &lt;end&gt;</code></strong> — Squash a range of migrations into one</li>
<li class=""><strong><code>durcno status</code></strong> — View the current migration status at a glance</li>
</ul>
<p>Each migration produces a dedicated folder with separate <code>up.ts</code> and <code>down.ts</code> files, making every change fully reversible and easy to review.</p>
<h2 class="anchor anchorTargetStickyNavbar_UjdY" id="looking-forward">Looking Forward<a href="https://durcno.dev/blog/announcing-durcno#looking-forward" class="hash-link" aria-label="Direct link to Looking Forward" title="Direct link to Looking Forward" translate="no">​</a></h2>
<p>By focusing exclusively on PostgreSQL, Durcno is free to innovate and move faster than existing ORMs in the JavaScript ecosystem that spread themselves thin across multiple databases. This singular focus means we can leverage PostgreSQL-specific features deeply and ship improvements at a pace that multi-database tools simply can't match.</p>
<p>Although Durcno has been baked in private for a long time, it is still in an <strong>alpha stage</strong>. There are rough edges to smooth out and APIs that may evolve based on real-world usage. With feedback from the community, the plan is to reach a <strong>beta stage within July 2026</strong>.</p>
<p>Check out the <a class="" href="https://durcno.dev/docs/latest/intro">documentation</a> to learn more and start building with Durcno today!</p>]]></content>
        <author>
            <name>Al Mahdi</name>
        </author>
        <category label="Announcement" term="Announcement"/>
    </entry>
</feed>