Routing
Routes and controllers, one tree
React pages with loaders and actions beside NestJS controllers with modules, guards, and dependency injection. One process, one build, one deployment.
Ness.js 7
React routes render the interface. NestJS controllers serve the API. They live in the same tree, build together, and deploy as one directory β without becoming one bundle.
npx @nessframework/cli@latest new my-appapp/βββ routes/β βββ page.tsxrendersβ βββ page.server.tsloader, actionβ βββ blog/[slug]/page.tsxbrowserβββ server/ βββ app.module.tsserver βββ api.controller.tsGET /api/healthBoth self-hosted on Node, both rendering every request. Ness is behind on cold start β 541 ms against 192 ms β and ships a larger deployment bundle. The harness is in the repository: see how the numbers are produced.
Routing
React pages with loaders and actions beside NestJS controllers with modules, guards, and dependency injection. One process, one build, one deployment.
Caching
Filesystem, SQLite, and Redis adapters with tag and path invalidation, an optional in-process tier, and eviction broadcast between instances.
Deployment
ness bundle node traces the production dependency graph and writes a self-contained folder. It runs on a bare Node image with no install step.
Runtime
Loaders and actions receive a Request and return a Response. Middleware, cookies, headers, and redirects are the platformβs, not a framework dialect.
Every starter is scaffolded, built, served, bundled, and served again from the bundle on every commit.
Create an application