Files
technitium-console/PRODUCT.md
T
DenozordecandClaude Sonnet 5.5 f3531c64f9 Move the console onto ReUI PRO
Install ReUI (MCP, skill, @reui registry, Tailwind v4, shadcn base-nova) and move
the shared UI onto it: Button, Tag, Check, Input/Textarea, Segmented, Alert, Panel,
Dialog, Tooltip, Menu and Select (Popover), Toast (sonner), the Table frame
(DataGrid), the Dashboard KPI strip, the shnt Ops palette, Geist and the type scale.

Design only: behaviour, texts and roles are unchanged. Tests that asserted the old
DOM were updated; the tests now format numbers in English wherever they run.
docs/reui-migration-plan.md records the plan and its decisions.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 00:06:06 +07:00

71 lines
3.9 KiB
Markdown

# Product
## Purpose
An alternative administration console for [Technitium DNS Server](https://github.com/TechnitiumSoftware/DnsServer):
the same API, the same behaviour and the same texts, with the interface rebuilt.
It exists because the server is excellent and its console is the part people meet first. Rebuilding
it is a contained problem: the API is documented and stable, and the console is a static bundle the
server serves from a folder, so it can be replaced without touching anything that resolves.
## The rule the whole thing is built on
> **Design only. Zero functionality.** Any behavioural difference from the stock console is a bug,
> **even when it looks like an improvement.**
Same controls, same steps, same wording, same validation order. A feature that was missing is still
missing. A confirmation that asked twice still asks twice. A literal upstream writes in lower case
stays in lower case.
This is not modesty, it is the only reason it is safe to put a third-party interface in front of
infrastructure: you are changing how the console looks, not what your DNS server does. It is also
what makes the project reviewable: every question of the form "should it do X?" has an answer that
is not an opinion.
## What this project owns
- The **interface**: layout, typography, colour, states, keyboard and screen-reader behaviour, and
how the same object is drawn on every screen.
- **Real URLs.** Thirty-two of them, one per destination, so a section can be bookmarked and the
back button walks the console instead of leaving it.
- **Responsiveness.** The console works at 390 px. The stock one overflows horizontally in twelve of
its sections; this one does not overflow in any.
- **The installer.** On Technitium 15.5+ with systemd, `install.sh` gives the console its own folder
and manages a reversible service drop-in. The first install and uninstall restart once to change
folders; updates do not. Other installs use the server's web root without restarting. Custom
lists survive every path in and out.
## What it refuses to become
- **A second way to configure DNS.** No setting, endpoint, step or validation that the stock console
does not have. If you want the server to do something new, that is a change to the server.
- **A server.** There is no backend here, no database, no account, and nothing is stored beyond the
session token the DNS server issues.
- **A telemetry surface.** Nothing is reported anywhere. The only host this console talks to is the
DNS server it is installed on. Once a day it asks that server to look up whether a newer console
is out (README, *Keeping it up to date*); the request carries nothing about you or your server.
- **A fork of the server.** The
[pull request](https://github.com/TechnitiumSoftware/DnsServer/pull/2128) that proposed merging it
was closed, and that was the right call: the maintainer is not a frontend developer and could not
carry the stack. It ships as an alternative console instead, which is what he suggested.
## Left for later, on purpose
- **Windows.** The installer is Linux only. Windows installs are laid out differently and have their
own installer.
- **The Amber theme.** `Change Theme` offers System, Light and Dark; the stock console's fourth,
Amber, is not drawn. A browser that has it stored gets Dark.
- **Translations.** Every literal is upstream's, in English, and translating them would be the first
behavioural difference.
## How "the same" is checked
Parity is measured, not asserted. `dev/` brings up **two instances of the official Technitium image
side by side** (one serving this console, one untouched) and compares them: the controls on each
screen, the state the server is left in after real actions, the sortable columns, the help texts,
the dialogs one by one.
The tools live in the repository and fail with a non-zero exit code, which is the only reason to
trust them. Each one was proved by breaking something on purpose and watching it complain.