Two backends, one contract
Performance-critical domains — accounting, billing, inventory, notifications, sync, attendance — exist both as a Next.js route and as a Rust service behind the same API contract. Small deployments run one process; large ones scale the service out. The client never changes.