Get the platform running locally and scaffold an app on top of it. Requires Node 26+, pnpm 11+, and Docker.
This repo is a library, not a server. It ships @openora/core and the tooling around it -
there is no apps/api here to boot. The runnable API lives in a consumer app you generate
with pnpm create:app.
The fastest path checks prerequisites, installs deps, boots Postgres, and applies migrations:
pnpm setup # prereqs + deps + Postgres + migrations
pnpm db:seed # demo data: admin + players + wallets + gamesPrefer the explicit steps?
pnpm install
docker compose up -d # Postgres + Redis (library-first: no app containers)
pnpm gen:drizzle # generate Drizzle migrations
pnpm db:migrate # apply them
pnpm db:seedSeeding logs you in with admin@oss.dev / password1234. Flags: --players=<n>,
--admin-email=<e>, --admin-password=<p>.
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 :3001curl http://localhost:3001/healthEvery route is browsable in the API reference, generated from the live contract.
pnpm devin this repo runs the MCP dev server, not an API.
Scaffold a module - schema, service, router, contract slice, and plugin.ts are generated
and registered for you:
pnpm gen module casino tournaments # creates packages/core/src/casino/tournaments + registers it
pnpm regen && pnpm verifyFill the // AGENT: implement here regions; leave the wiring alone. See
Core concepts for what each generated file does.
gen module, route, config, event, service and app are core-only generators - they
run inside this monorepo. In a consumer repo you extend through overlays instead:
pnpm gen plugin <name> and pnpm gen adapter.
- Core concepts - plugins, contracts, services, adapters, events.
- Consuming the platform downstream - build your igaming on top.