Panel

The Fediversity Panel is the operator-facing web frontend for managing deployments, written in Django and living under panel/. It renders the operator configuration schema as a form, submits the resulting configuration to the API over HTTP, and subscribes the browser to deployment-state events via Centrifugo over WebSocket.

To use the panel to deploy applications, see the guides.

Where it sits

The panel is a thin user-facing layer over the deployment machinery:

  • The form it presents is generated from the JSON schema of the operator configuration that the API serves. The form fields and the Nix options stay in sync by construction. The panel does not read the shape of a configuration: the API gives the path of the applications in it, and which applications changed since the last deploy.
  • On submit, it forwards the configuration to the API, which queues and runs the deployment. The panel itself does not build or deploy anything; it is a client of the API.
  • It enforces per-operator authorization on the API's Centrifugo pub/sub callbacks, so an operator only sees events for their own deployments.

Architecture shows these relations as diagrams.

Besides the form for the whole configuration, the panel serves a form for one section of the configuration. The deployment form tells how the two forms work.

Pages

Each group below has an overview page that lists its pages.

  • Concepts -- how the panel works: the architecture, the deployment form, the deployment identifiers and the ownership of a deployment, and the migration between hosting providers.
  • Guides -- how an operator deploys and manages applications, and how a developer runs the panel and translates it.
  • Reference -- the services.panel options, the environment variables, the database, the screenshots, the accessibility checks and the flake attributes.
  • Specifications -- what the panel must do, and the principles that apply to all changes in panel/.