Every technology, what it does, and how they fit
The complete list of what the platform is built from: what each piece is, what it does here, how, what it gains us, and what it connects to. Companion to STACK.md, system-flows.html (what the system does) and ui-build.html (how the interface is coded). "To choose" marks pieces whose supplier is not yet decided.
RustSvelte and the browserGoogle CloudCloudflareAnother company's service
1. The whole picture
2. Three ideas that hold it together
One set of rules, three places
Money, VAT, pay, costing and validation are written once in Rust.
Rules libraryRust
→The serverthe final word
The phoneas WebAssembly: instant totals, offline
The website's toolscalculators
A total shown on the phone is the total the server will post. No second version to drift.
One shape of data, end to end
A change to a field is caught before it ships, wherever it is used.
Database tablechecked against the code at build time
→Rust type
→Published description of the API
→Generated TypeScript
→Screen
Rename a column and every place that used it fails to build until fixed.
One way out
Nothing leaves the system except through a queue written in the same transaction as the change.
One transactionrecord + ledger + audit + "to send"
→Outbox workeronce each, retried
→WhatsApp, email, channels, e-invoicing
A message is never sent for a change that did not save, and a saved change never loses its message.
3. The complete list
Filter by where it runs. Each row: what it is in plain words, what it does here, how, and what it gains us.
4. What talks to what
A filled cell means the row calls or reads the column. Empty means it must not: for example, no screen ever talks to the database or to another company's service directly.
5. From a change in the code to the phones
No step is done by hand, and no key is stored on a laptop. A failed check stops the line.