Quickstart
Get the frontend running against mocks in three commands, then point it at a real backend when you need to.
The fastest way to start building against Botanary's API is to not run a backend at all. The frontend ships with a complete MSW mock layer, and mock mode is the default.
Install and configure
pnpm install
cp .env.example .env.local # MSW-only mode is the defaultRun it
pnpm dev # http://localhost:3000 - runs against mocks, no backendEverything you touch - balances, delegations, activity, notifications - is served from fixtures typed against the same generated schema the real API uses, so a contract change that isn't reflected in the fixtures fails the build rather than silently drifting. See Local development for how the mock layer actually boots.
Making a call
Once the app is running, every API interaction goes through the generated client covered in API client - a typed query or mutation keyed by method and path:
const rules = $api.useQuery('get', '/account/rules');Point a component at any path in the OpenAPI contract this way and get full request/response typing for free, whether you're running against mocks or a real backend.
When you need the real thing
If your contract changed, or you need to develop against something MSW mocks don't cover, regenerate the client and stand up the backend:
pnpm api:generate # regenerate src/api/schema.d.ts from the OpenAPI contractThe backend's own local stack runs as a docker-compose profile - a local L2 (anvil), the backend itself, and its datastores - with an optional profile that also runs the frontend against it with mocking turned off. See Local development for the full walkthrough, including ports and what each container actually does.
You don't need a running backend, a database, or any real vendor credentials to start building against Botanary's API surface - the mock layer is a complete, typed substitute until you actually need real chain state.