nutin
● v1.3.1Minimalist, transparent TypeScript framework.
Explicit. No magic. Opiniated where it matters.
Built as a learning journey into how modern frameworks work.
Minimal, readable, and yours to modify.
The pillars
Four abstract classes. A router, an event bus, a lifecycle. No decorators, no DI, no automated change detection. Everything lives in your src/core/ folder, not buried in node_modules.
Component model
BaseComponent, Component, View — a clear hierarchy with explicit lifecycle hooks.
Singleton services
One instance, shared across the whole app.
Event bus
Event-triggered rendering. State flows through explicit channels you define.
Client-side routing
Hash or history routing, route guards — no magic involved.
i18n
Optional internationalisation with pipe support.
Testing toolkit
Jest-inspired, works across frontend and backend.
Design philosophy
The limitations are features. They keep the focus on what's essential.
Transparent by design
No hidden layers, no black boxes. Every abstraction is readable and modifiable. You own the code — not a dependency.
Explicit over automatic
No decorators, no DI container, no automated change detection. Everything is wired by hand, in plain sight.
Minimal dependencies
Zero runtime dependencies.
Personal scale
Designed for small projects where full frameworks feel heavy. The constraints are intentional, not accidental.
Quick Start
• undefined
undefined
npx @nutin/cli
undefined
What comes with it
Optional, composable, always transparent.
Deployment helpers
Dockerfile and Nginx config.
Guards & pipes
Route guards and data transformation.