NNO Docs
Getting Started

Introduction

NNO is a platform orchestration layer for building and deploying multi-tenant SaaS applications on Cloudflare infrastructure.

Introduction to NNO

NNO (Neutrino) is a platform orchestration layer that provisions Cloudflare infrastructure, manages multi-tenant isolation, and delivers a pluggable feature runtime — so you can build and ship multi-tenant SaaS applications without stitching together infrastructure from scratch. You subscribe to NNO, define your feature set, and NNO handles Workers, D1 databases, R2 storage, KV namespaces, auth, and DNS on your behalf.


Why NNO

Building a multi-tenant SaaS on Cloudflare involves a lot of repeated work: provisioning per-tenant resources, wiring up auth, managing feature flags, keeping DNS sane, and writing the same console shell every time. NNO eliminates that by providing:

  • Managed multi-tenancy — each platform gets isolated Cloudflare resources named by convention and tracked in a central registry. You do not manage CF API calls or resource naming yourself.
  • Cloudflare-native by default — Workers for backend logic, Pages for frontend, D1 for relational data, R2 for object storage, KV for caching. No third-party infrastructure required.
  • Feature SDK and auto-discovery — pluggable React packages (@neutrino-io/feature-*) are auto-discovered at build time via virtual:feature-registry. Adding a feature is a package install, not a code change.
  • Stack-based deployment — group related features into a Stack that shares a single D1, R2, and KV namespace. One activation command provisions everything.

Architecture at a Glance

NNO is organized into four layers:

┌─────────────────────────────────────────────────────┐
│  NNO Core                                           │
│  Gateway · Registry · IAM · Provisioning · Billing  │
│  The meta-platform that manages everything below.   │
└───────────────────────┬─────────────────────────────┘
                        │ provisions
┌───────────────────────▼─────────────────────────────┐
│  Your Platform                                      │
│  One platform = one product / client.               │
│  Gets its own Workers, D1, R2, KV, and DNS.         │
└───────────────────────┬─────────────────────────────┘
                        │ partitions into
┌───────────────────────▼─────────────────────────────┐
│  Tenants                                            │
│  Logical isolation within a platform — teams,       │
│  customers, regions, or business units.             │
└───────────────────────┬─────────────────────────────┘
                        │ runs
┌───────────────────────▼─────────────────────────────┐
│  Console Shell + Feature Packages + Stacks          │
│  React shell on CF Pages. Features bundled at       │
│  build time. Stacks group features with shared CF   │
│  resources. Auth via Better Auth on CF Workers.     │
└─────────────────────────────────────────────────────┘

Platform — the top-level environment for your product. NNO provisions a default stack automatically at onboarding, which hosts the auth Worker.

Tenant — a logical partition inside your platform. Each tenant gets its own provisioned resource set. Tenants can nest as sub-tenants.

Stacks — named, versioned groups of features that share Cloudflare resources (one D1, one R2, one KV). The preferred way to activate multiple related features together. See Stacks.

Features — pluggable React packages (@neutrino-io/feature-*) that each export a featureManifest. Install the package, set enabled: true in your config, and the Vite plugin auto-discovers it on the next build. No manual registration needed.


Key Concepts

ConceptWhat it is
PlatformYour top-level NNO environment. One per product.
TenantLogical isolation within your platform.
StackA named group of features sharing Cloudflare resources (D1, R2, KV).
FeatureA pluggable @neutrino-io/feature-* package with UI and optional backend Worker.
Console ShellThe thin React 19 app that statically bundles your activated features and deploys to CF Pages.
Default StackAuto-created at onboarding. Hosts the auth Worker at auth.svc.default.<platformId>.nno.app.

Who This Is For

NNO is for developers building multi-tenant SaaS applications who want to ship on Cloudflare without managing the underlying infrastructure directly. You should be comfortable with:

  • TypeScript and React
  • Cloudflare Workers and Pages (conceptually — NNO manages the CF API calls)
  • Node.js package management with pnpm

You do not need to write Cloudflare API clients, manage resource naming, or build your own auth layer — NNO handles all of that.


What You'll Learn in This Section

This Getting Started section walks you through:

  1. Quick Start — install the CLI, create a project, run it locally, and deploy to Cloudflare in under 10 minutes.

After that, the guides cover:

  • Platform Setup — configure package access, environment variables, and connect to the NNO backend
  • Feature Development — author a custom feature package with routes, sidebar navigation, and the featureManifest export
  • Stacks — group features and share Cloudflare resources across them
  • Authentication — how Better Auth integrates with your platform's auth Worker

On this page