Files
Malin 8d4eaa1489 feat: add full Zonemaster stack with Docker and Spanish UI
- Clone all 5 Zonemaster component repos (LDNS, Engine, CLI, Backend, GUI)
- Dockerfile.backend: 8-stage multi-stage build LDNS→Engine→CLI→Backend
- Dockerfile.gui: Astro static build served via nginx
- docker-compose.yml: backend (internal) + frontend (port 5353)
- nginx.conf: root redirects to /es/, /api/ proxied to backend
- zonemaster-gui/config.ts: defaultLanguage set to 'es' (Spanish)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 08:19:24 +02:00

55 lines
1.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Zonemaster UI
Zonemaster UI (Zonemaster-GUI) is a static website built with [Astro], using
[Svelte] for interactive components and [Vite] for internationalization/translation
(i18n).
## Standalone Components
Zonemaster UI also provides a set of standalone web components that can be
reused in other projects. Currently, there are two available:
- `<zm-domain-test>` for initiating domain tests
- `<zm-program-versions>` displays the current versions of Zonemaster
components
These components are framework-agnostic and can be embedded in other websites or
apps as needed.
```html
<zm-domain-test></zm-domain-test>
<zm-program-versions></zm-program-versions>
<script type="module">
import '@zonemaster/ui';
</script>
```
## Headless Mode
Zonemaster UI can also be used in **headless mode**, where it acts as a
JavaScript API layer between the Zonemaster backend and your own frontend.
This is useful if you want to:
- Build your own custom UI
- Integrate Zonemaster functionality into another application or CLI tool
In headless mode, the UI logic is decoupled from the visual components, allowing
you to access core functionality programmatically through JavaScript.
```ts
import { TestAgent } from '@zonemaster/ui';
TestAgent.subscribe((state, context) => {
console.log(state, context);
});
TestAgent.transition('START', { domain: 'example.com' });
```
[Astro]: https://astro.build/
[Svelte]: https://svelte.dev/
[Vite]: https://vite.dev/