Skip to main content

What is Muse?

Muse is a config-driven game backend for marketing & gamification — spin wheels, scratch cards, egg/gift catchers, collection games, quizzes — sitting inside a website-builder platform.

Its one defining idea:

Adding a new game must not require new backend code.

A new game of an existing shape = a JSON config. A genuinely new shape = one small handler/validator. The engine core never changes.

The big picture

A marketer configures a campaign + game in the dashboard; a player opens the widget and plays; the Core engine decides the outcome (server-authoritative), deducts stock atomically, records the result, and fans events out to integrations.

Two ways to use it

Muse ships the engine as a pure Go SDK (gamekit) and also as a hosted API:

ModeYou writeYou get
A — embed the SDKimport ".../gamekit", implement a few port interfaces (or use the provided adapters), call engine.Play(...)The game logic only — bring your own DB/auth/transport
B — run the hosted APIdeploy core; front it with your own BFF for auth/edge (or copy examples/)Full gRPC + REST API, multi-tenant, batteries included

The boundary is strict: gamekit knows nothing about gRPC, HTTP, the JSON envelope, or snake_case — those live only in Core (its REST gateway) and your BFF. Core is auth-agnostic: it trusts the caller to authenticate and pass the tenant/merchant scope. That is what makes "use my logic, build your own API" — and "use my API, build your own edge" — first-class paths.

Where to go next

For end users

If you just want to launch a game, read Quickstart then Add a game. If you want to understand how it works, start with Architecture and the Flows.