Workspaces, projects and sources

The three levels, the two roles, and who can change what.

LevelAnswersOwns
WorkspaceWho can see this, and who can change itPeople and projects
ProjectWhich product is thisLog events, sources and boards
SourceWhich thing wrote this eventNothing

A source is one thing that writes events: a website, a desktop app, a backend, a cron job. There is only the one kind. Each has a public key of the form fr_<16> that names a destination and authorises nothing: it cannot read a number, a board or a person. Events from every source land at https://app.firstrun.app.

One project per product is the advice, because that is what makes a board readable. It is not a data-safety rule: sources are never linked to each other, so getting it wrong puts numbers on the wrong board rather than corrupting them.

Two roles

Admin changes things: projects, sources, boards, and who else is in the workspace. Read looks. There is nothing in between.

Membership is per workspace and covers every project in it. There is no per-project access, so two groups who should not see each other’s numbers need two workspaces. Every check runs on the server, on every change; the interface hides buttons a reader cannot use as a courtesy, not as the check.

The last admin cannot be removed. An admin cannot be demoted or removed while they are the only one, because a workspace nobody can administer cannot invite an admin back. Promote a replacement before somebody leaves.