Context
Some products need hardware access (for example printers and scanners) from a desktop client, and Stackra wants that logic in TypeScript. Electron runs the same web stack as the console (0052) with Node access to devices. No existing ADR covers desktop.Decision
apps/desktopis an Electron app, scaffolded now as atier:appmember withpnpm new.- The renderer reuses the web stack (0054, 0055, 0056).
- Hardware access lives in the main process, in TypeScript, exposed to the renderer through a narrow preload bridge; the renderer has no direct Node access.
- Packaging, signing and auto-update are TODO and need their own ADR before the first release.
Consequences
- One language across web, desktop and hardware code.
- A larger binary and an Electron security surface to keep current.