Context
A client needed an internal CRM — contacts, deals, a login-gated dashboard — and had already committed to a shared hosting plan for cost reasons. The plan had no Node.js App feature in its control panel: the usual React-frontend-plus-Express-backend pairing simply could not run there.
The challenge
Re-platforming to different hosting wasn't on the table — the client had already paid for and committed to the plan. The architecture had to work within a PHP-only shared-hosting environment while still shipping a modern single-page React interface.