Platform
Your server. Your database. Your customers.
One company per install. Rust for the API, SvelteKit for the UI, PostgreSQL for the system of record. Cloud Hosted after the trial runs only on lightservecrm.com servers. Self Hosted uses Docker Compose or Virtualmin on your host. Staff also get a dedicated mobile-friendly field page at /mobile.
Architecture
Staff UI talks REST with a Bearer session to an Axum API. Switch CRM and HRM in the same install. The API owns PostgreSQL. Outbound webhooks are HMAC-signed. Portal, Book Now, public sign links, and the mobile field page sit on the same UI. Book Now, portal, and mobile keep ?nocache=1 so phones do not cache a stale session.
Email assets and appointment photos have dedicated volumes. Appointment files are also stored in Postgres so an empty media volume after a container recreate does not erase the customer’s photo history.
| Layer | Choice |
|---|---|
| API | Rust, Axum |
| UI | SvelteKit, adapter-node |
| Database | PostgreSQL 16 |
| Money | Integer cents |
| Email designer | GrapesJS newsletter |
| Local stack | Docker Compose |
| Production | Virtualmin / Podman / Caddy |
| Images | Docker Hub semver and :latest |
Run it
Docker Compose
One command brings up Postgres, API, and UI. Host ports are chosen so the stack does not collide with Lightserve POS. First visit is the setup wizard.
Virtualmin
Production recipe: Postgres + API + UI + Caddy. Caddy is the only public process on port 80. /api proxies to the backend. Images publish both a version tag and :latest.
Backups
Project and Postgres dump skills exist for operators. High-risk schema work is supposed to back up tables first. This is a product for people who have lost data once and refuse to do it again.
Versioning
Frontend package.json and backend Cargo.toml stay on the same MAJOR.MINOR.PATCH. In-app About shows the running changelog.
Integrations that are settings, not a marketplace tax
- SMTP detect and send test — Google Workspace, Microsoft 365, Zoho, Fastmail, Yahoo, iCloud, filtered MX, self-hosted.
- IMAP discovered and stored for inbound mail later.
- Twilio SMS.
- Zulip Chat with one-click Send test message.
- OpenAI or Anthropic for AI field notes from unit nameplate photos.
- Stripe Checkout, webhooks, Connect, technician accounts, application fees, payment links.
- HMAC outbound webhooks and inbound webhook secret.
- Public domain for Book Now, portal, and merge-field URLs.
Questions
What does one install include?
One company per install. The API is Rust and Axum, the UI is SvelteKit, and PostgreSQL is the system of record.
Where does Cloud Hosted run?
Cloud Hosted after the trial runs only on lightservecrm.com servers.
How is Self Hosted deployed?
Self Hosted uses Docker Compose or Virtualmin on your host.