doona
Development
Demo
English

Development

Read CONTRIBUTING.md before opening a pull request. Its Translations section covers correcting a translation and proposing a language.

This documentation and the site built from it are in Zakkaus/doona-docs.

Commands

Run these from the repository root:

pnpm install --frozen-lockfile
pnpm build                       # writes dist/
pnpm check                       # types, lint, translations, formatting, unit tests, generated API types
pnpm check:size                  # gzip budgets for the dist/ build
pnpm e2e:install --with-deps     # once, for the browser tests
pnpm e2e                         # rebuild, then test against the mock at the root and under /ui/
pnpm package                     # release/doona-<version>.tar.gz, doona-fonts-<version>.tar.gz, SHA256SUMS

pnpm dev serves the mock on Vite's dev server. Archive versions come from package.json locally and from the Git description on tags; timestamps use SOURCE_DATE_EPOCH or the HEAD commit time.

Test against a live backend

For a read-only pass against a live backend, run DOONA_API=http://router:9527 DOONA_TOKEN=… pnpm e2e:live from the repository root. DOONA_API is required; omit DOONA_TOKEN when authentication is not required. The command runs accessibility, mobile-navigation and keyboard specs, rejects backend overrides in fixture storage, and aborts control requests, including DNS queries. Ordinary pnpm e2e runs reject DOONA_API unless DOONA_LIVE_OBSERVE=1 is explicitly set.

Screenshots

node tools/screenshots.mjs <url> docs/screenshots captures pages, the palette sheet, the phone strip and the two animations from a running build as WebP; it requires cwebp and img2webp.

Source layout

Path Purpose
src/features/ Pages, their hooks and messages, one folder each
src/shell/ Application shell, navigation and search
src/ui/ Shared components, theme and icons
src/api/ Client, backend profiles, mock backend and generated types
src/store/ Resource watching, cached reads and action hooks
src/i18n/ Translations and locale helpers
contract/ The vendored OpenAPI contract and its pin
public/ Static assets, fonts and the service worker
e2e/ Browser tests
tools/ Build, packaging, conformance and screenshot tools
install/ nfpm configs, OpenWrt, Alpine, Gentoo and Nix recipes
docs/ The screenshots

Contract

SOURCE.md records the pin of openapi.yaml. After moving the pin, run pnpm gen:api to regenerate src/api/types.ts. node tools/conformance.mjs http://router:9527 --token … checks a live backend's discovery, capabilities and read-only responses against the contract without sending a mutation.

See CHANGELOG.md for release notes.

doona

doona documentation

English
doona documentationdoona is a static web UI for the native API that the daeuniverse engines share: honk today, dae once it implements the same contract. Requirements Install on Debian or UbuntuThis page installs doona from its .deb package and honk-core from the same doona release on Debian, Ubuntu and other APT-based systems. Install on Fedora or RHELThis page installs doona from its .rpm package and honk-core from the same doona release on Fedora, RHEL and other DNF-based systems. Install on Arch LinuxThis page installs doona from its .pkg.tar.zst package and honk-core from the same doona release on Arch Linux and other pacman-based systems. Install on GentooThis page installs doona with Portage from the ebuild in doona’s repository, and honk-core from the same doona release. Install on OpenWrtThis page installs doona and honk-core on OpenWrt 25.12 from the release archives. Install on other systemsThis page installs doona and honk-core from the release archives on a Linux system without a doona package, such as Alpine Linux. Installation detailsInstall honk, write its configuration, then install doona and start honk. Minimal configurationThis page writes the smallest honk configuration that starts honk and serves doona, then checks it by starting honk by hand. Service managementThis page runs honk as a systemd or OpenWrt procd service: it creates the service once, then lists the commands that start, stop, restart and reload honk and read its log. First sign-inThis page opens doona in a browser, creates the administrator account and checks that doona shows the running honk. Interface tourThis page shows where things are in doona after you sign in: the four navigation sections, the top bar, and the tabs, detail panels and action menus inside a page. Watching trafficThis page covers the Activity hub (Activity and System status) and the Monitor hub (Connections, Routing log, DNS, Logs and Events). Routing, nodes and rulesThis page covers the Routing hub: the Policies, Nodes and Rules pages. Config and settingsThis page covers the Configuration page, where you read, validate and apply honk's configuration files. Common tasksThis page collects short procedures for frequent changes to routing, traffic inspection and honk maintenance. ConfigurationThe configuration is two files. FeaturesFirst confirm that the gateway carries traffic. Troubleshooting DevelopmentRead CONTRIBUTING.md before opening a pull request.