Experimental · pre-1.0

SERVER ARCHITECTURE FOR THE ANGULAR ERA

Give your server structure.

Strata turns controllers and routes into clear, declarative layers—without taking ownership of the H3 runtime you already trust.

Angular nativeH3 poweredAnalog ready
Your applicationControllers & domain logic
StrataMetadata & composition
H3 / NitroThe runtime stays yours

A thinner layer, a clearer boundary.

Built for the stack you already use

AngularAnalogNitroH3TypeScript

INTENT, NOT INDIRECTION

Just enough framework.

Strata is deliberately narrow: a common language for your server, while the runtime, routing model and escape hatches remain familiar.

Declarative by default

Describe routes alongside the code that owns them. Metadata stays inspectable through a small public API.

See a controller

Runtime stays yours

No replacement server, no hidden transport. Register directly on H3—or on Nitro's router in Analog.

Explore the boundary

Designed for server safety

Server controllers live under src/server, keeping implementation details outside the client graph.

Read the release gates

THE WHOLE IDEA IN ONE FILE

Recognizable from the first route.

users.controller.ts
import { Controller, Get } from "@strata/core";

@Controller("/users")
export class UsersController {
  @Get()
  findAll() {
    return [{ id: "1", name: "Ada" }];
  }
}

ANALOG, WITHOUT A DETOUR

Native to the Nitro seam.

The Analog adapter registers controllers where Nitro expects them: in a server plugin, on the router it already owns.

src/server/plugins/strata.ts
import { registerControllers } from "@strata/analog";
import { defineNitroPlugin } from "nitropack/runtime";
import { UsersController } from "../strata/users.controller";

export default defineNitroPlugin((nitroApp) => {
  registerControllers(nitroApp.router, [UsersController]);
});

CLEAR LAYERS, CLEAR OWNERSHIP

Strata never replaces your server.

It reads controller metadata and registers routes on the instance you pass in. Native routes keep working. Your framework continues to own the lifecycle.

  • H3 remains the HTTP runtime
  • Nitro remains the Analog integration point
  • Your direct routes remain untouched
01ApplicationBusiness logic and controllers
02Strata coreRoute declarations as metadata
03AdapterA precise registration seam
04H3 / NitroYour owned request lifecycle

EARLY, OPEN, AND DELIBERATE

Build the next layer with us.

Strata is experimental today. The design work is public, the boundaries are explicit, and contributions are welcome.

View on GitHub