Skip to content

Documentation

What backd is, and where to find things.

backd is an open-source (MIT), config-driven backend: one stateless Go service over MongoDB. You declare realms, databases and collections as files on disk (a JSON Schema per collection, optional indexes and access rules) and backd serves a schema-validated, queryable REST API for them, with built-in users and sessions, API keys, an admin API, and server-side functions for the logic clients can’t be trusted with.

Where to start

I want to…Go to
Try it in a few minutes: start hereQuickstart
Find out whether backd fits my projectIs backd for you?
Understand the concepts: realm, database, collectionGetting started
Look up a wordGlossary
Build a whole app, chapter by chapterTutorial
Build my own backend: schemas, HTTP API, users, functions, files, pushBuild
Run and administer a deployment: providers, monitoring, backup, hardeningOperate
Work on backd itself: workflow, architecture, API contractContribute
See complete applicationsExamples
Fix an error I metTroubleshooting

What you get

  • Configuration as files. Invalid config stops startup and names the file; backd config check runs the same checks in CI.
  • Schema-validated writes, mirrored as a MongoDB validator, with field-level errors and optimistic concurrency (ETag, If-Match).
  • Queries without injection: where, order_by, pagination and counts over an allowlisted query language.
  • Users, sessions and API keys per realm, with brute-force protection, invitations, network restrictions and an audit trail; administration through an admin API and the command line, never database credentials.
  • Access rules (rules: in collection.yaml) decided per document, with read rules applied inside the database query.
  • Server-side functions in isolated Deno processes: sync calls, background jobs, cron schedules, webhooks, encrypted secrets, rate limits, idempotency and a network allowlist.
  • Files, push, organizations and realtime: S3-compatible storage per realm, FCM/APNs/Web Push senders, B2B teams and roles, and server-sent events of the changes a caller may read.
  • Clients: backd-js for browsers and Node, package:backd for Flutter and standalone Dart, pkg/client for Go, backd on PyPI for Python, generated TypeScript, Dart, Go or Python types per realm, and a per-realm OpenAPI document for every other language.
  • A production path: a tested reference deployment (TLS, least-privilege MongoDB, encrypted backups), a config fingerprint so every instance runs the same configuration, and signed releases.

Versions

The current version is v0.9.10. What each release added and what breaks is in the release notes and the changelog; how to move a running deployment to a newer one is in the Upgrading to sections of Operate.

backd has no installed base yet: until a stable release is declared, breaking changes are allowed and are listed in the release notes.

Edit this page · Last updated 13 Nov 2026