Vaktor
A universal SDUI client for admin panels. One JSON — three platforms. The server describes the role of an element, the client decides how it looks.
Vaktor doesn’t know in advance what your panel looks like. The server delivers a contract — a service manifest and pages assembled from semantic components. The app parses the contract and renders a native screen on iOS, iPadOS, and macOS using standard system components — with no client-side code for a specific service.
Five contract principles
- Semantics, not layout. The contract has no colors, fonts, paddings, or
sizes — only roles. The single exception is the service’s brand
tint. - System components only. Each
typerenders with a standard view, and its appearance automatically follows HIG. - Graceful degradation. An unknown
typedoesn’t break the page: in a release build it’s skipped, in dev it becomes a placeholder. Unknown fields are ignored. - The server decides permissions. The client only renders what’s sent. There is no access logic on the client.
- Versioning. Every response carries a
contract_version(semver). A major higher than supported → an “update the app” screen.
Documentation map
| Section | About |
|---|---|
| Contract | Manifest, authorization, page, URL, data binding |
| Components | Catalog of all 11 types and their fields |
| Actions | navigate, submit, grant/revoke, confirm, errors |
| Platforms | Summary table of iPhone / iPad / Mac rendering |
This documentation describes Contract Specification v0.1. Check the
pre-deploy rules before shipping a contract.