DocumentationQuickstart
DOCS

Quickstart

Run the framework locally, scaffold an app on top of it, and call your first typed route.

Openora is headless by design. This guide gets a local copy running so you can explore the modules, contracts and plugin host, then scaffolds the consumer app that actually serves an API.

Requirements

  • Node.js 26+ and pnpm 11+
  • PostgreSQL 16, or Docker if you would rather not install it locally

Set up the framework repo

The framework repo is a library, not a server. It ships @openora/core and the tooling around it; there is no API to boot here. The fastest path checks prerequisites, installs dependencies, starts Postgres and applies migrations:

git clone https://github.com/blurifycom/openora
cd openora
pnpm setup:agent   # prereqs + deps + Postgres + migrations
pnpm seed          # demo data: admin + players + wallets + games

Prefer the explicit steps?

pnpm install
docker compose up -d              # Postgres only
pnpm -F @openora/core generate    # generate Drizzle migrations
pnpm db:migrate:all               # apply them
pnpm seed

Seeding logs you in with [email protected] / password123. Flags: --players=<n>, --admin-email=<e>, --admin-password=<p>.

pnpm dev here runs the MCP dev server

Not an API. The runnable API lives in a consumer app you generate with pnpm create:app.

Run an API

Scaffold a consumer app. It installs @openora/core from npm, registers every core module against the plugin host, and never forks the framework:

pnpm create:app my-gaming-core
cd my-gaming-core
pnpm install
cp .env.example .env              # set DATABASE_URL + AUTH_SECRET
pnpm db:migrate
pnpm dev                          # api on :3001
curl http://localhost:3001/health

The generated app is a thin createApp() entry plus your own extensions.config.ts. Your frontend is a separate repo that talks to this API over HTTP via @openora/core/react.

Add a module

Inside the framework monorepo, scaffold a standalone core add-on - schema, service, router, contract slice and plugin.ts are generated and registered for you:

pnpm gen module tournaments   # creates @openora-addons/tournaments + registers it
pnpm regen && pnpm verify

Fill the // AGENT: implement here regions and leave the wiring alone.

gen module, route, config, event, service and app are core-only generators - they throw outside the framework monorepo. In a consumer repo you extend through overlays instead:

pnpm gen plugin <name>    # an overlay under extensions/<name>/
pnpm gen adapter          # bind your vendor over a shipped mock

Next steps

Updated 1 day ago