Skip to content

Quick Start ​

This guide walks through the fastest path to a working Ambiten application.

In a few minutes, you will scaffold a runtime-aware project with MongoDB connectivity, framework integration, and a structured execution layer ready for development.

Initialize a project ​

Create a new Ambiten application using the CLI:

bash
npx ambiten init my-app

The initializer guides you through runtime configuration, adapter selection, and optional capabilities such as GraphQL support, logging, and multi-tenancy.

Enter the project directory ​

bash
cd my-app

Install dependencies ​

bash
npm install

Start the development runtime ​

bash
npm run dev

Once the runtime starts, you have a fully operational Ambiten application with a configured execution layer and MongoDB integration.

Generated project structure ​

The CLI scaffolds a minimal but production-oriented structure similar to:

sh
my-app/
  ambiten.config.json
  src/
    main.ts
    core/
      initAmbiten.ts

The generated bootstrap layer establishes the runtime foundation and centralizes infrastructure initialization.

Runtime configuration ​

Ambiten projects are configured through ambiten.config.json.

A minimal configuration looks like this:

json
{
  "projectName": "my-app",
  "connection": {
    "uri": "mongodb://localhost:27017/my-app",
    "options": {
      "dbName": "my-app"
    }
  }
}

This configuration defines the database connection and establishes the initial runtime environment.

How application startup works ​

Most Ambiten applications initialize through a bootstrap entry point:

ts
import { run } from "./core/initAmbiten";

const app = await run();

The bootstrap layer coordinates runtime initialization, infrastructure setup, adapter registration, and optional execution features before the application begins accepting requests.

Depending on your configuration, this can include tenant-aware database resolution, logging infrastructure, GraphQL integration, middleware registration, and transaction-aware runtime services.

Define your first model ​

Models define the operational boundary between your application and persistence layer.

A minimal model definition looks like this:

ts
import { AmbitenModel } from "@ambiten/core";

export const UserModel = new AmbitenModel({
  collectionName: "users",
  schema: userSchema,
  provider: db
});

Once registered, the model automatically participates in Ambiten’s runtime execution system, including middleware, context propagation, instrumentation, and transaction-aware operations.

Enable additional runtime capabilities ​

The CLI can scaffold optional runtime features during initialization:

bash
npx ambiten init my-app --with-graphql --multi-tenant --logger

You can also evolve the generated configuration manually as your architecture grows.

What to explore next ​

After the initial setup, most teams continue by defining domain models, attaching an API transport layer, and enabling runtime policies such as multi-tenancy, middleware, or observability.

The following pages expand on those concepts:

Context-aware execution infrastructure for multi-tenant systems.