The PlaceOS administration interface for managing systems, modules, drivers, zones, users, domains, repositories, triggers, and cluster settings.
Backoffice is built with Angular 22, standalone components, signals, zoneless change detection, and the PlaceOS TypeScript client.
- Bun 1.3.11
- A PlaceOS backend (the development proxy uses
placeos-dev.aca.imby default)
bun install
bun run startOpen http://localhost:4200. bun install also generates
the local version metadata used by the application.
To use another PlaceOS backend, update domain, secure, and valid_ssl in
config/proxy.conf.js, then restart the development
server.
bun run start # Start the development server on port 4200
bun run build # Create a production build
bun run lint # Run ESLint
bun run test # Run the Vitest unit tests
bun run test:ci # Run the unit-test command used in CIProduction builds are written to dist/backoffice/browser.
Install the Playwright browsers once before running the end-to-end tests:
bunx playwright install --with-deps
bun run e2eSee e2e/README.md for browser selection, live-environment
configuration, and focused test commands.
src/app/
├── common/ Shared services, API setup, signals, and utilities
├── ui/ Reusable components, form controls, pipes, and guards
├── overlays/ Shared dialogs and overlays
├── admin/ Cluster and platform administration
└── <feature>/ Feature routes, components, utilities, and state services
src/tests/ Vitest unit tests
e2e/ Playwright tests and page objects
user-stories/ Feature behaviour and acceptance criteria
config/ Development proxy and build metadata scripts
Most feature areas are lazy-loaded from src/app/app.routes.ts. The application
uses hash-based routing and enables its service worker only in production.
Backoffice sends errors to Sentry. See docs/sentry.md to
set the DSN for a domain and to set up source map uploads.
The backoffice Vercel project serves backoffice.demo.place.tech. Vercel deploys only the backoffice-demo branch. The Vercel team can create a limited number of deployments each day, and Vercel counts failed and canceled deployments too. Thus, other branches must not create Vercel deployments:
vercel.jsonturns off Vercel deployments for all branches exceptbackoffice-demo.- The
BUILDworkflow adds avercel.jsonthat turns off Vercel deployments to eachbuild/*branch commit. Vercel readsvercel.jsonfrom the pushed commit, and build branches do not contain the root file.
The Demo Site workflow moves backoffice-demo to develop once per day (17:00 UTC), if develop changed. To update the site now, run the workflow manually. Do not push to backoffice-demo directly.
- Angular 22 with the Angular CDK and the app's own controls (
src/app/ui/controls) - Nx 22 with the Angular application builder
- Vitest and Playwright
- Tailwind CSS 4
@placeos/ts-clientfor PlaceOS APIs- MQTT for real-time updates
MIT