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.

LayerChoice
APIRust, Axum
UISvelteKit, adapter-node
DatabasePostgreSQL 16
MoneyInteger cents
Email designerGrapesJS newsletter
Local stackDocker Compose
ProductionVirtualmin / Podman / Caddy
ImagesDocker 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.