engineering docs

Mobile client

Mobile menggunakan EXPO_PUBLIC_AORI_API_URL dan bearer/session client. Proxy secret tidak pernah dikompilasi ke aplikasi. Mobile tidak memakai @contracts/*; kontrak global auth tetap berasal dari @repo/auth.

await fetch(`${API_URL}/api/organization/${organizationId}`, {
  headers: { Accept: 'application/json', Authorization: `Bearer ${token}` }
});

Simpan session di secure storage, refresh saat app aktif kembali, dan tangani 401 dengan sign-in flow. Upload media sebaiknya menggunakan signed upload endpoint, bukan provider credential langsung. Semua mutation mengikuti validasi dan ownership API yang sama dengan web.