nutin

v1.3.1

Minimalist, 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.