No description
  • Go 81.7%
  • Makefile 18.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Josh Quinlan f4ebeb0135
feat(portal): lay the foundations for the self-service portal
The portal is where people manage their own account instead of asking
an administrator: profile, credentials, sessions, granted
applications, export and deletion. It is deliberately ordinary,
server-rendered and unprivileged, so it doubles as the worked example
for anyone replacing it with a front-end of their own.

This lays the ground it will be built on: the command entry point and
its version reporting, the quality gate every later change must pass,
and the release pipeline that produces signed binaries.
2026-08-27 23:09:23 +01:00
cmd/burh-portal feat(portal): lay the foundations for the self-service portal 2026-08-27 23:09:23 +01:00
.gitignore feat(portal): lay the foundations for the self-service portal 2026-08-27 23:09:23 +01:00
.golangci.yml feat(portal): lay the foundations for the self-service portal 2026-08-27 23:09:23 +01:00
.goreleaser.yaml feat(portal): lay the foundations for the self-service portal 2026-08-27 23:09:23 +01:00
go.mod feat(portal): lay the foundations for the self-service portal 2026-08-27 23:09:23 +01:00
LICENSE feat(portal): lay the foundations for the self-service portal 2026-08-27 23:09:23 +01:00
Makefile feat(portal): lay the foundations for the self-service portal 2026-08-27 23:09:23 +01:00
README.md feat(portal): lay the foundations for the self-service portal 2026-08-27 23:09:23 +01:00

burh-self-service

The self-service portal for a burh identity provider: where people manage their own account rather than asking an administrator to do it for them.

It is deliberately ordinary. Server-rendered Go templates, a little progressive enhancement, no build chain, and nothing privileged. Every page is built on the same public API any other front-end would use, so this repository doubles as the worked example for anyone replacing it with their own.

Status

Early development, following the server's API as it lands.

What people can do here

  • Sign in and see the applications they are entitled to, as a launcher.
  • Edit the parts of their profile the administrator has opened up.
  • Change their password, enrol TOTP, register and name passkeys, and regenerate recovery codes.
  • Review active sessions and devices and sign any of them out.
  • See which applications they have granted access to, and withdraw it.
  • Export their data, or request that the account be deleted.

Anything sensitive asks the person to prove a factor again first.

Running it

make build        # bin/burh-portal
make check        # lint and tests

The portal needs to know where the identity provider lives and holds no secrets of its own. It can also be served directly by burh-server for small deployments; running it separately is for when the portal should sit on its own hostname or be replaced wholesale.

Appearance

The portal reads the deployment's branding from the API, so a logo and colour change in the administration console reaches this page too. For deeper changes, replace the templates in internal/web/templates, or build a different front-end entirely against the same API.

Building

Go 1.26 or newer, golangci-lint and GoReleaser on PATH. The version string comes from the git tag at build time.

Contributing

Patches are welcome. Guard clauses over nested conditionals, files well under 500 lines, lines wrapped at 72 columns, behaviour landing with a test, and Conventional Commits messages.

Licence

Apache-2.0. See LICENSE.