Page:
System Overview
No results
1
System Overview
Cordy edited this page 2026-08-25 12:34:19 +00:00
Table of Contents
swisscairn.ch + license server — system overview
How the customer-facing side fits together: the static site, the license server, billing, sign-in, and the bridge to a customer's self-hosted Cairn instance. swisscairn.ch and the license server are one system on one Swiss VPS.
Reading the diagram
- Customer browser — the static pages served from swisscairn.ch:
index(marketing),enter(register / login / OAuth),account(licenses, seats, cancel, receipts, quotes),docs. Behind the pre-launch Caddy gate until launch (#26). - Sign-in providers — Google and Microsoft OAuth (code flow + PKCE); linking is by verified email only.
- Paddle — the billing provider: the checkout overlay opens from the account page;
transaction.created/transaction.completedwebhooks drive issuance and the funnel. - Caddy — terminates TLS on the VPS, serves the static pages, and enforces the pre-launch gate.
- cairn-license-server (:7421) — the hub: customer accounts (register / login / verify / OAuth), Ed25519 license issuance, the Paddle webhook that issues and renews licenses, the monthly check-in API, plus cancel / seat-change / receipts and outbound SMTP for verification and reset mail.
- SQLite — the store (ADR-0001): licenses, accounts, orgs.
- Customer's Cairn instance — receives the license key (copied out-of-band from the account page), verifies it offline, and checks in monthly. See the Cairn repo's Architecture wiki for how that side works.
- VPS · Switzerland — everything inside the boundary is one Swiss VPS; nothing leaves the box.
Source SVG: docs/swisscairn-system.svg in this repo. Related: the "Admin Dashboard Topology" wiki page and Wiki.js ADR-0001 / ADR-0002.