Development
This guide covers building, testing, and changing Nixstasis. Production procedures live in the Operations section.
Linux is the supported runtime, release, and packaging-validation platform. Running developer tools on another host does not establish native support for that platform, and native client packaging checks must run on Linux.
Guides
- Developer Tooling: installing tools, the
misetasks, checks, hooks, and the documentation site. - Feature Lifecycle: how features move from design to a delivered record.
- Documentation Conventions: where pages go and how to write them.
- Tooling Reference: every check, task, and commit rule.
- E2E Testing: the client harness, the server side, and published results.
- Local Stack: running the full stack with device simulators, and the deployment contract checks.
- Releasing: cutting a release from
devtomain. - GitHub Pages Deployment: enabling and running the documentation site deployment.
Local stack
The local stack mirrors the production deployment so Caddy TLS approval, FRP, managed-device simulation, and browser-launched SSH terminals can be exercised end to end; Local Stack describes how to run it.
- Laptop mode uses local hostnames and internal Caddy certificates, so no public DNS or certificate issuance is needed.
- Public-fidelity validation can use DuckDNS or an operator-owned domain when public ACME behavior must be tested.
Standards
- User-facing features meet WCAG 2.1 AA: contrast ratios, visible keyboard focus, form labels, error announcements, and modal dialog behavior.
- Local development keeps the production boundary in which browser traffic reaches Phoenix through Caddy.
- Terminal testing exercises LiveView, Phoenix Channels, server-side SSH, FRP TCP muxing, and the managed client rather than direct shell shortcuts.
- Development certificates, local keys, generated Compose overrides, and runtime state stay out of source control.