Gunnar

nordisk/holger

.nornir/common-framework-for-idiots.md

<!-- nornir:class: guide -->
# For idiots — About + the demo button, in plain words

> **Class:** `guide` (beginner). Design: [`common-framework-design.md`](common-framework-design.md).

## The big idea

All the nordisk apps (nornir, dwarves, korp, holger) are built to feel the same — like
how every JetBrains app has the same menus. They **share** the plumbing instead of each
copying it:

- one way to install/start/stop the service (skidbladnir),
- one network server loop (nornir-service),
- one **job manager** that tracks background work and can start containers (jera),
- one UI toolkit (facett).

holger already used most of that. This work added the pieces it was missing in its
window: an **About** box, a **demo button** that uses the shared job manager, the shared
**tab shell** (which also shrinks nicely on a small screen), and a **Sign in** box — all
borrowed from the shared UI toolkit instead of hand-built.

## About box

Click **ℹ About** at the top. A little window shows holger's logo, name, version, and
the list of shared pieces it's built on. Click **Close** to dismiss it. That's it.

## Sign in box

There's a **Sign in** tab. Click it and you get a code + a web link: open the link, type
the code, and you're signed in — the same little sign-in box korp uses (it's borrowed, not
re-built). holger only ever shows **who** you are, never your actual password or token.

## Small screens

On a narrow window the top row of switches tucks itself behind one **⚙ Controls** button
so the main area still has room. Make the window wide again and the switches come back.

## The demo button

Go to the **Tools** tab and pick **6 · demo appliance**. Click **Start demo
appliance…**. holger asks the shared job manager (jera) to start a small demo package
registry in a container.

- Normally it just **writes down the job** ("I would start this container") and shows
  you a job id — no container software needed on your laptop.
- If you start holger the special way (`--features gui,containers`), it **actually
  starts** the container, and you can open `http://127.0.0.1:5000`.

Why through the job manager and not "just start it"? So there's always a **record** of
what was started, exactly like every other app in the family. No hidden background
threads.