<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>eridu-tech 0.58.0 Blog</title>
        <link>https://www.eridu-tech.dev/blog</link>
        <description>eridu-tech 0.58.0 Blog</description>
        <lastBuildDate>Thu, 06 Aug 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Announcing eridu-tech - A Modular Backend Platform for TypeScript]]></title>
            <link>https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech</link>
            <guid>https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech</guid>
            <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[eridu-tech is a framework-agnostic backend platform for TypeScript: composable infrastructure components, middleware, configuration, and HTTP routing that can be embedded into the framework you already use.]]></description>
            <content:encoded><![CDATA[<p><strong>eridu-tech is a framework-agnostic backend platform for TypeScript: composable infrastructure components, middleware, configuration, and HTTP routing that can be embedded into the framework you already use.</strong></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="my-story">My story<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#my-story" class="hash-link" aria-label="Direct link to My story" title="Direct link to My story" translate="no">​</a></h2>
<p>Four years ago, I tried running NestJS inside Next.js. It wasn't as simple as I expected. Embedding NestJS's server meant relying on Next.js configuration that wasn't typed, while using NestJS as a DI container depended on TypeScript's experimental decorators, which didn't work well with Next.js.</p>
<p>So I split the application into separate frontend and backend parts. First, I used two repositories; later, I moved to a monorepo. Neither approach was ideal. Separate repositories meant separate servers and deployments to keep in sync, while the monorepo added its own setup and maintenance overhead.</p>
<p>I then tried embedding Hono directly into Next.js. That solved the HTTP routing problem, but Hono is intentionally lightweight, so I ended up patching together different libraries to fill the gaps.</p>
<p>At work, I ran into another set of problems with a frontend and backend in a monorepo. Transactions, logging, and observability started leaking into business logic, making the code harder to read, test, and maintain. Deployment was also slow and manual, without blue-green deployments, easy rollbacks, or integrated CI/CD.</p>
<p>These problems were amplified by tight deadlines. There was rarely enough time to build the surrounding infrastructure properly, so we ended up cutting corners or spending time stitching libraries together.</p>
<p><strong>That's why I built eridu-tech: to provide the reusable backend infrastructure I kept needing without tying it to a specific application framework.</strong> It combines adapter-first components, framework-agnostic middleware, an embeddable HTTP router, and a common type-safe foundation.</p>
<p>The goal is simple: <strong>make it easier to ship maintainable backend systems under real-world time constraints, without sacrificing architecture just to move faster.</strong></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-the-idea-behind-eridu-tech">💡 The idea behind eridu-tech<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#-the-idea-behind-eridu-tech" class="hash-link" aria-label="Direct link to 💡 The idea behind eridu-tech" title="Direct link to 💡 The idea behind eridu-tech" translate="no">​</a></h2>
<p>eridu-tech is built around a few core ideas.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="-bring-your-own-framework">🧩 Bring your own framework<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#-bring-your-own-framework" class="hash-link" aria-label="Direct link to 🧩 Bring your own framework" title="Direct link to 🧩 Bring your own framework" translate="no">​</a></h4>
<p><strong>Your backend infrastructure shouldn't force you to adopt a particular application framework.</strong></p>
<p>eridu-tech doesn't require its own DI container, so it can be integrated with frameworks such as Express, NestJS, AdonisJS, Next.js, Nuxt, or TanStack Start. A package tied to a framework's container also ties you to that container's scopes and lifecycle, which can become implicit constraints on your architecture. Moving the package elsewhere can then mean untangling or rewriting those bindings.</p>
<p>eridu-tech keeps those concerns separate.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="-switch-infrastructure-without-rewriting-business-logic">🔄 Switch infrastructure without rewriting business logic<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#-switch-infrastructure-without-rewriting-business-logic" class="hash-link" aria-label="Direct link to 🔄 Switch infrastructure without rewriting business logic" title="Direct link to 🔄 Switch infrastructure without rewriting business logic" translate="no">​</a></h4>
<p><strong>Infrastructure choices should stay behind stable adapters.</strong></p>
<p>Postgres today, another storage implementation tomorrow. Adapter-based components let you change infrastructure implementations without coupling your business logic directly to them.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="-test-components-without-docker">🧪 Test components without Docker<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#-test-components-without-docker" class="hash-link" aria-label="Direct link to 🧪 Test components without Docker" title="Direct link to 🧪 Test components without Docker" translate="no">​</a></h4>
<p><strong>Every component ships with an in-memory adapter where practical, making application tests faster and easier to run.</strong></p>
<p>Components also come with reusable tests that can be used when creating custom adapters, helping verify that different implementations behave consistently.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-type-safe-from-day-one">🛡️ Type-safe from day one<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#%EF%B8%8F-type-safe-from-day-one" class="hash-link" aria-label="Direct link to 🛡️ Type-safe from day one" title="Direct link to 🛡️ Type-safe from day one" translate="no">​</a></h4>
<p><strong>TypeScript is part of the design rather than an afterthought.</strong></p>
<p>eridu-tech uses precise generics, schema validation, and ESM-native packages without CommonJS baggage.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-a-unified-foundation">🏗️ A unified foundation<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#%EF%B8%8F-a-unified-foundation" class="hash-link" aria-label="Direct link to 🏗️ A unified foundation" title="Direct link to 🏗️ A unified foundation" translate="no">​</a></h2>
<p><strong>The components are designed to work together through a small set of shared primitives rather than through a framework-specific runtime.</strong></p>
<ul>
<li class=""><strong>Serde</strong> — a shared serialization engine used across components.</li>
<li class=""><strong>Execution context</strong> — a shared execution context that can travel across components.</li>
<li class=""><strong>Config &amp; env access</strong> — standardized, type-safe patterns for reading configuration and environment variables through <code>ConfigAccessor</code> and <code>EnvAccessor</code>.</li>
<li class=""><strong>Middleware</strong> — composable, framework-agnostic middleware that can be applied to methods or functions.</li>
<li class=""><strong>HttpRouter</strong> — a framework-agnostic HTTP router built on the performant Hono router engine and implementing the WinterTC Fetch API, designed to embed directly into full-stack frameworks such as Next.js.</li>
</ul>
<p>The platform is also being extended with <strong>transaction context, observability, dependency injection, deployment tooling, and component introspection</strong>. These are part of the roadmap rather than capabilities I want to present as finished today.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-the-developer-workflow">🧑‍💻 The developer workflow<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#-the-developer-workflow" class="hash-link" aria-label="Direct link to 🧑‍💻 The developer workflow" title="Direct link to 🧑‍💻 The developer workflow" translate="no">​</a></h2>
<p>Here's the workflow I'm building toward with eridu-tech: <strong>start with validated inputs, keep configuration structured, wire dependencies consistently, and keep infrastructure concerns out of business logic.</strong></p>
<ol>
<li class="">
<p>🔑 <strong>Environment variables are often read inconsistently</strong> — missing validation, runtime errors, and duplicated parsing logic can spread throughout an application. eridu-tech provides a <strong>standardized, type-safe way to read and validate environment variables</strong>, so your application gets the values it expects.</p>
</li>
<li class="">
<p>⚙️ <strong>Configuration becomes difficult to maintain as applications grow.</strong> A small configuration can turn into a deeply nested, untyped object or a collection of smaller configurations scattered across the codebase. eridu-tech provides a <strong>standardized, type-safe pattern for defining domain configurations</strong>, with a <strong>maximum nesting depth of two</strong>, and deriving values from validated environment variables.</p>
</li>
<li class="">
<p>🔌 <strong>Manually wiring services and infrastructure gets harder to maintain as an application grows.</strong> eridu-tech provides a <strong>structured way to wire your own services and infrastructure components</strong> by dependency injection container, using domain configuration to drive the setup so the wiring remains consistent and maintainable.</p>
</li>
<li class="">
<p>🛠️ <strong>Cross-cutting concerns can quickly leak into business logic.</strong> Retries, timeouts, rate limiting, circuit breaking, concurrency control, and observability can make otherwise simple methods difficult to read and test. eridu-tech provides <strong>predefined, framework-agnostic middleware</strong> so these concerns can be applied without cluttering business logic.</p>
<ul>
<li class="">🔁 Retry</li>
<li class="">⏱️ Timeout</li>
<li class="">🚦 Rate limiting</li>
<li class="">🧯 Circuit breaking</li>
<li class="">🔒 Concurrency control — distributed locks, semaphores, and reader-writer locks</li>
<li class="">📊 Observability — logging, tracing, and metrics</li>
</ul>
</li>
<li class="">
<p>🔁 <strong>Coordinating transactions across databases, event buses, and job schedulers is error-prone.</strong> The roadmap includes a <strong>shared transaction context and transaction middleware</strong> so components can participate in the same transaction, with event dispatch coordinated around successful commits and scheduled jobs able to participate in the transaction model.</p>
</li>
<li class="">
<p>📡 <strong>Propagating execution context across servers, processes, and asynchronous boundaries can require significant boilerplate.</strong> The roadmap includes <strong>serialization and propagation of execution context across runtimes</strong>, so request and correlation information can remain available throughout distributed systems.</p>
</li>
<li class="">
<p>🌐 <strong>Full-stack applications can require separate backend services, repositories, and deployments.</strong> The embeddable <code>HttpRouter</code> is designed to let the backend run directly inside full-stack frameworks such as Next.js, providing a path toward deploying the frontend and backend together without maintaining a separate backend service.</p>
</li>
<li class="">
<p>🚀 <strong>Deploying an application and its infrastructure can be slow and manual.</strong> The roadmap includes a <strong>deployment CLI</strong> for deploying applications and infrastructure to a VPS via SSH, with blue-green deployments, rollbacks, and GitHub Actions CI/CD scripts.</p>
</li>
<li class="">
<p>🔍 <strong>When something goes wrong, component runtime state can be difficult to inspect.</strong> The roadmap includes <strong>component-level introspection APIs</strong> that would allow the CLI to inspect runtime data during development and production.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-available-today">What's available today<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#whats-available-today" class="hash-link" aria-label="Direct link to What's available today" title="Direct link to What's available today" translate="no">​</a></h2>
<p><strong>The current focus is the composable foundation and the components that are already usable.</strong> The roadmap features above are being developed incrementally rather than being presented as completed capabilities.</p>
<p>The <a class="" href="https://www.eridu-tech.dev/docs/components/overview">component overview</a> walks through the available eridu-tech components — including the foundation, storage, and infrastructure building blocks — with in-memory adapters for fast testing and pluggable adapters for real infrastructure.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-whats-next">🔗 What's next<a href="https://www.eridu-tech.dev/blog/2026-08-06-announcing-eridu-tech#-whats-next" class="hash-link" aria-label="Direct link to 🔗 What's next" title="Direct link to 🔗 What's next" translate="no">​</a></h2>
<p>eridu-tech is pre-v1 and evolving quickly. The <a class="" href="https://www.eridu-tech.dev/docs/roadmap">roadmap</a> shows what's planned and in progress across the ecosystem.</p>
<p>If the problems behind eridu-tech sound familiar, <strong>try the components, explore the architecture, and let me know what you think.</strong> I'm especially interested in feedback from developers who have dealt with the same problems around framework coupling, infrastructure abstractions, testing, and keeping backend code maintainable under tight deadlines.</p>]]></content:encoded>
            <category>Announcement</category>
        </item>
    </channel>
</rss>