Satu SPA, lima produk: shell aplikasi opex-aio

Lima produk, satu login, satu shell aplikasi. Ini bentuk shell tersebut.

Product switcher

Baris tenant_product menentukan apa yang boleh dipakai sebuah tenant. /api/me mengembalikan entitlements, dan product switcher di shell hanya menampilkan produk yang berhak dipakai tenant. Membeli produk adalah satu insert — /api/me berikutnya menampilkannya, tanpa deploy klien.

Command palette

Cmd+K melompat ke item nav mana pun dan mencari semua resource yang bisa dilihat tenant — tiket, task, kontak, deals, time entries — melalui satu endpoint pencarian yang sadar-entitlement. Setiap fan-out resource terisolasi dari kegagalan, jadi satu tabel lambat tidak pernah memblokir palette.

Setiap produk mendeklarasikan konfigurasi nav-nya sendiri (NavGroup/NavItem), dijaga oleh role dan entitlement, dan shell merendernya. Satu konfigurasi, tiga permukaan: sidebar, rail yang diciutkan, dan bottom nav mobile.

Kebenaran server

Gate klien hanyalah UX. Gate sesungguhnya adalah requireProduct(code) di setiap namespace /api/<produk>/* — tenant yang hanya punya helpdesk mendapat 402 sebelum permintaannya menyentuh tabel PMO.