Apps
The monorepo ships four deployable applications plus the Home Assistant cards bundle. Together they form a cloud control plane (API + admin), an on-device runtime (edge agent), and a customer-facing UI (dashboard).
| App | Workspace | Package name | Runtime |
|---|---|---|---|
| API server | apps/api | server | Express 5 + Postgres (cloud) |
| Edge agent | apps/edge-agent | @signapps/edge-agent | Express + SQLite (on RPi5) |
| Web admin | apps/web-admin | frontend | Next.js 16 (standalone) |
| Dashboard (React) | apps/dashboard/react | @signapps/dashboard-react | Vite SPA + HA panel |
How they fit together
- The API server is the source of truth: it stores customers, devices, modules, dashboard versions, and the publish registry, and brokers OTA updates.
- The edge agent runs on each device, checks in with the API, pulls and installs releases from R2, and exposes a local API/WebSocket for the dashboard.
- The web admin is the operator UI, talking to the API through the
generated
@signapps/api-client. - The dashboard is what the end customer sees — a Vite SPA that runs both as a standalone kiosk and as a Home Assistant side-panel.
Common commands
All apps are driven through root package.json scripts (Turborepo + pnpm):
pnpm dev:api # API server (needs Postgres)
pnpm dev:fe # web admin
pnpm dev:dashboard-react # dashboard SPA
pnpm --filter @signapps/edge-agent run dev # edge agent
See each app's page for dev, build, deploy, and configuration details.