Admin panel guide

A tour of the server-side admin panel — the web area at /admin where the organisation owner runs the whole operation: personnel accounts, Dienste (events), the materials catalog, printers, and the tablet fleet. This page is for the organisation owner/admin, not for operators on the tablet.

The admin panel is server-rendered (Askama HTML templates) and served by the Axum server. It is a completely separate surface from the tablet app — there is no PIN here. You reach it in a normal web browser at /admin.

Signing in

Open /admin/login in a browser and sign in with your email address and password. A successful login sets a signed session cookie; every /admin/* page then checks that cookie before rendering. Sign out again at /admin/logout.

Route Purpose

/admin/login

Email + password login form.

/admin/logout

End the admin session.

The admin panel uses email + password + a signed cookie — it is not a PIN login. The PINs (Shift-PIN, Firmen-PIN, maintenance) belong to the tablet app. See PINs.

Nutzer — personnel accounts

Route: /admin/users

Nutzer are the personnel accounts of your organisation — the people who can be rostered onto a Dienst. From this page you:

  • Create a user account.

  • Rename an existing user.

  • Deactivate a user (they can no longer be used for new assignments).

These accounts are the pool you draw from when you assign a roster to a Dienst (see below). A person who has no account can still be added to a Dienst as an external person.

Dienste (events)

Route: /admin/events — list and create; each row opens a detail page at /admin/events/{event_id}.

The Dienste list shows every event and lets you create a new one. Creating a Dienst here is the preferred path: it syncs down to the enrolled tablets automatically. Open a Dienst to reach its detail page, which is the control centre for that shift.

Shift-PIN

On the event detail page you set and rotate the Shift-PIN — the 6-digit code that tablets enter to join this Dienst. Rotating it revokes the old code. The mechanics and the difference from the other PINs are covered in PINs.

Roster — assign personnel

Assign who is on this Dienst. You can add a person either:

  • from an existing Nutzer account, or

  • as an external person (someone without an account — entered by name).

You can also remove an assigned person. The roster you set here is the planned roster.

Gemeldetes Personal (Einsatz)

The detail page also shows Gemeldetes Personal (Einsatz) — the roster actually reported back from the tablets. This is the crew that established readiness on the ground, including their presence and any ad-hoc additions made on the tablet during the shift. Compare it against the planned roster to see who was really present.

The planned roster is what you assigned in the panel; Gemeldetes Personal is what the tablets reported. They can differ — that is expected, and the reported list is the record of who was actually on duty.

Protocols and encrypted export

The event detail page lists this Dienst’s protocols and lets you download an encrypted export of them.

Export route: /admin/events/{event_id}/export-encrypted

The export is encrypted — the protocol contents leave the server only in encrypted form. See Dienst lifecycle for how and when a Dienst reaches the point where its protocols are ready to export.

Material / Kleinstbehandlungen report

Each Dienst also has an aggregated Material / Kleinstbehandlungen report — a tally of consumed material and minor treatments across the whole Dienst.

Reports route: /admin/material-reports

The catalog that these reports draw from is managed separately, below and in Material catalog.

Materials catalog

Route: /admin/materials

The materials catalog is what drives the tablet streamdeck. From here you:

  • Create, update, toggle, and delete catalog items, each with capability flags.

  • Manage groups that organise the items.

Changes made here propagate to the tablets and change what operators can tap. The full behaviour of capability flags and groups is documented in Material catalog.

Drucker (printers)

Route: /admin/printers

Drucker are the Bluetooth thermal printers pushed to the whole tablet fleet. From this page you:

  • Register a printer by its Bluetooth MAC address.

  • Delete a printer.

A registered printer is distributed to every tablet, so operators do not pair printers by hand. Pairing, paper handling, and the print pipeline are covered in Printing.

Geräte (devices)

Route: /admin/devices (enrollment token generated via /admin/enroll).

Geräte is the tablet fleet view. From here you:

  • Generate a device enrollment token — the token a new tablet uses to enrol.

  • List enrolled devices with their name, enrolled_at, last_seen, app_version, and device_owner status.

  • Enqueue remote device commands for a device to pick up on its next check-in.

Enrollment is manual, token-based, and GPG-verified — there is no zero-touch provisioning. The full onboarding procedure is in Onboarding.

Server configuration (for server operators)

The admin panel runs on the Axum server against PostgreSQL. Whoever operates the server must provide these environment variables:

Variable Requirement

DATABASE_URL

PostgreSQL connection string.

JWT_SECRET

At least 32 characters.

ADMIN_COOKIE_SECRET

64 hex characters (signs the admin session cookie).

ORG_SECRET

64 hex characters.

This is setup context for whoever runs the server — day-to-day admins do not touch these. They must be set before the server starts.


  • PINs — Shift-PIN, Firmen-PIN, and the maintenance path.

  • Onboarding — enrolling a tablet with a token.

  • Material catalog — catalog items, capability flags, and groups.

  • Printing — registering and using thermal printers.

  • Dienst lifecycle — the full arc of a Dienst from create to export.