feat: AppShell integration — auth, email/SMS OTP login, live multi-role team management #1

Merged
tanweer919 merged 3 commits from tanweer919/lynkeduppro-crm:feat/appshell-integration into goutamnextflow 2026-07-11 14:25:00 +00:00
Collaborator

Integrates @abe-kap/appshell-sdk into the CRM (strangler; mock stays the fallback until Supabase env is set).

  • Auth: password + OAuth + email/SMS OTP (passwordless) wired to appshell/Supabase; dashboard auth gate; ACE identity in topbar.
  • Team management: live be-crm data door (crm.team.*) with multi-role members (member_roles) — role chips + multi-select picker, invite with multiple roles, live permission toggles. Mock fallback preserved.
  • Registration: password sign-up via appshell.
  • bump @abe-kap/appshell-sdk ^0.2.0 (phone OTP). Builds clean in both mock and shell-configured modes.
Integrates @abe-kap/appshell-sdk into the CRM (strangler; mock stays the fallback until Supabase env is set). - Auth: password + OAuth + email/SMS OTP (passwordless) wired to appshell/Supabase; dashboard auth gate; ACE identity in topbar. - Team management: live be-crm data door (crm.team.*) with multi-role members (member_roles) — role chips + multi-select picker, invite with multiple roles, live permission toggles. Mock fallback preserved. - Registration: password sign-up via appshell. - bump @abe-kap/appshell-sdk ^0.2.0 (phone OTP). Builds clean in both mock and shell-configured modes.
tanweer919 added 2 commits 2026-07-10 23:15:54 +00:00
Wire the AppShell SDK for auth/identity across the CRM, gated behind
isShellConfigured() so the existing mock portal + static demo user stay
the fallback until the Shell BFF is configured.

- providers.tsx: app-wide <AppShellProvider> (auth passed only when Supabase env set)
- next.config.ts: transpilePackages + /shell -> BFF rewrite (keeps /api/geo intact)
- login: password -> login(), social -> loginWithOAuth(), OAuth return -> completeOAuthLogin()
- register: email/password sign-ups call register() on finish
- dashboard: AuthGate bounces unauthenticated visitors; topbar shows ACE identity
- docs/APPSHELL_INTEGRATION.md, .env.local.example, .npmrc for GitHub Packages
- team-management: new useTeamData() data layer serves live be-crm data door
  (crm.team.member.search/role.list/invitation.list + set-roles/perm/invite
  commands) or the mock fallback, gated on isShellConfigured(). A member can
  hold MANY roles: role chips + multi-select picker in Edit/Invite modals.
- login OTP: OtpVerify wired to real Supabase email + SMS OTP (passwordless)
  via appshell sendEmailOtp/verifyEmailOtp + sendPhoneOtp/verifyPhoneOtp.
- bump @abe-kap/appshell-sdk ^0.2.0 (phone OTP).
tanweer919 added 1 commit 2026-07-11 00:49:54 +00:00
Lift StepAddress/AddressBlock state up so finish() can send the complete
sign-up payload (name, phone, persona, allottee id/names, registered+mailing
address, consent) to be-crm crm.account.register after auth. Config-gated;
non-fatal if the domain persist fails (auth account already created).
tanweer919 merged commit 2a653b807b into goutamnextflow 2026-07-11 14:25:00 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Goutam/lynkeduppro-crm#1