Introduction
How many times have you eagerly started a new TypeScript project, picked the trendy HTTP framework of the month, only to find yourself six months later with a chaotic monolith—hopelessly coupled to a specific library and crushed by unsustainable technical debt?
The problem in modern TypeScript development isn’t writing the first few lines of code. The problem is what happens when the application grows.
The Frustration of Technical Debt and Fragmentation
As business scales, domain logic inevitably ends up blending with infrastructure details. HTTP controllers get bloated with business rules, services depend on monolithic libraries, and dependency injection turns into a tangle of "magical," opaque decorators (reflect-metadata) that make it impossible to understand what’s happening under the hood.
And when requirements change—for instance, if you want to migrate from a traditional Node.js server to a Serverless architecture or Edge Functions to cut down latency—you discover you are chained down: the framework you chose isn't compatible with lightweight V8 Edge engines, forcing you to rewrite your entire application.
The current landscape forces you into a frustrating compromise:
- Edge-focused micro-frameworks: You get speed and lightness, but zero architecture—you end up reinventing the wheel to handle validation, CQRS, asynchronous contexts, and clean-code patterns.
- Heavy enterprise frameworks: You get structure, but you carry around a rigid, slow infrastructure locked into Node.js.
I ran out of patience having to choose between chaotic freedom and a monolithic prison every single time. So I created Xeno.JS.
Xeno.JS: Architectural Rigor, Zero Infrastructure Constraints
Xeno.JS was born to radically solve this discomfort. It isn’t just another fast HTTP router, but an application architecture framework for TypeScript that combines the rigorous cleanliness and maturity of .NET/C# patterns with the lightness of the modern JavaScript world.
Here is how it solves the problems of technical debt:
- ° Clean Separation of Boundaries: Xeno.JS strictly separates domain logic and application use cases from infrastructure. By leveraging a system of Commands, Queries, Handlers, and a Mediator with composable pipelines (for validation, performance, and logging), code stays tidy and testable no matter how much the app expands.
- ° Explicit, Zero-Magic Dependency Injection: No hidden decorators or runtime reflection. Xeno.JS uses a DI container based on explicit factories and strict lifecycles (singleton, scoped, transient) with native checks against circular and captive dependencies.
- ° Runtime-Agnostic (From Console to the Edge): Because it is designed without heavy Node.js dependencies and without reflection, Xeno.JS is lightweight enough to run seamlessly on command-line apps (CLIs), traditional HTTP servers (Fastify/Node), or natively on Edge Functions (like Cloudflare Workers or Vercel Edge), allowing you to change your deployment target without touching a single line of application logic.
-
° Plugin/Module Architecture: Thanks to a composable module system via the
AppBuilder, you enable only what you need (Database, Redis Cache, Auth, Security pipelines) without weighing down the project with useless dependencies.
Help Me Keep This Vision Alive
I built Xeno.JS because I believe TypeScript deserves a serious, clean, and scalable alternative for those who love solid architecture without sacrificing modernity.
But an Open Source framework doesn’t grow on its own. I need you.
If you share this vision, if you too are tired of easy technical debt and want a tool that respects the longevity of your code:
- 1- Try Xeno.JS in your next prototypes or projects.
- 2- Leave a ⭐ on GitHub to give visibility to the project.
- 3- Test it, open it, report bugs, propose improvements, or discuss new ideas in the community.
The future of clean architecture in TypeScript depends on the feedback and contributions of those who, like you, experience the challenges of software development every day. Try it out and let me know what you think!
Top comments (0)