Skip to Content
rockets

Your backend should be a spec.
Rockets makes it run.

Describe your domain—resources, identity, storage, and access. Rockets turns that definition into a secure, documented server with the repeatable foundation already wired.

export const billing =
  createServer({
    auth: sharedIdentity,
    repository: postgres,
    resources: [
      customers,
      invoices,
      ledger,
    ],
    accessControl:
      billingPolicy,
  });

Complete server surface

configuration → running capability

resources

routes · validation · OpenAPI

auth

protected endpoints · AuthorizedUser

repository

default storage · overrides

accessControl

ownership · policy

one definition → complete server
Configuration becomes capability

One call. A complete server.

createServer reads one typed domain definition and assembles the secure, documented foundation around the code only your team can write.

resources

Resource APIs

routes · validation · relationships · hooks

auth

Identity

protected endpoints · one AuthorizedUser

repository

Persistence

one default · per-resource overrides

accessControl

Policy

ownership · roles · operation rules

openapi

OpenAPI

a documented surface from the same definition

Replaceable by design

Identity and storage, without lock-in.

Choose the providers that fit today. Small contracts keep the rest of the application stable when infrastructure changes tomorrow.

ordered auth chain
01

API key

X-API-Key · app-local adapter

02

Firebase

Bearer ID token · shipped adapter

OR

Built-in identity

signup · login · OTP · roles

one AuthorizedUser contract
unmatched → try next · invalid match → stop
auth.config.ts
const externalAuth = [
  defineFirebaseAuth({
    firebaseApp,
  }),
  defineApiKeyAuth(),
];

const ownedAuth =
  defineRocketsAuth(
    authOptions,
  );
repository routing
DEFAULT

TypeORM

users · pets · orders

OVERRIDE

Firestore

analytics_events

CUSTOM

Your adapter

audit_log

one RepositoryInterface<T>
default once · override per entity
storage.config.ts
const sql =
  defineTypeOrmRepository(
    connection,
  );
const firestore =
  defineFirestoreRepository();

const analytics =
  defineModuleResource({
    entities: [{
      entity: AnalyticsEvent,
      repository: firestore,
      collection:
        "analytics_events",
    }],
  });
A deliberate boundary

The foundation is repeatable. The product is not.

Rockets removes recurring infrastructure work while leaving domain behavior explicit, testable, and owned by your team.

Rockets builds the foundation

  • resource registration and API routes
  • identity, storage, and access seams
  • validation, hooks, and OpenAPI

Your team builds the product

  • domain schemas and business rules
  • services, integrations, and events
  • the operational choices that make it yours
FAQ

Questions, answered.

What is Rockets?

Rockets is an open-source backend definition and runtime. Describe the resources, identity, persistence, and access rules for one domain, then launch a server with the repeatable application foundation already assembled.

What does createServer() create?

It turns one typed configuration into registered resources, protected endpoints, persistence, policy, hooks, and OpenAPI. createServer is the launch-facing API; pre-1.0 packages may still expose lower-level registration surfaces while that facade lands.

Does Rockets generate source code?

No. Rockets materializes the server at runtime, so generated glue files do not become another codebase for your team to maintain.

Can identity and storage providers be replaced?

Yes. Authentication and persistence sit behind small contracts. Choose the shipped providers, order multiple identity strategies, or bring an adapter that meets the same application-facing interface.

What application code do I still write?

The parts that make the product yours: domain schemas, business rules, services, integrations, events, and operational decisions. Rockets owns the repeatable foundation around that behavior.

Is Rockets stable?

Rockets is pre-1.0 and published under the alpha dist-tag. Pin exact versions for production use and expect the public surface to keep tightening on the path to 1.0.

Define the backend. Launch the server.

Start with one typed domain definition and turn it into a secure, documented server your team can extend.