Skip to main content
Version: v1.0.0(int)

Platform

Covers authentication, organizations, organization users, invitations, and the Home page bundle. The shared contacts pool is documented separately in Contacts.

The Account page today is a read-only profile card backed by Get user — no writes, since password and email are managed by the sign-in provider. Future work (password change, email change, profile image, etc.) is out of scope for v1.0.0.

The Preferences page is an empty placeholder today. Future work (user-level personalization, including colors that will split out from org-level settings) is out of scope for v1.0.0.

Writes

  1. Sign up — Triggered from the Login / OrgSignup page. Creates a Firebase user account and the matching platform user record.
  2. Log out — Triggered from the user menu. Ends the current session.
  3. Create organization — Triggered from the OrgSignup / NewOrganization page. Creates a new tenant org and makes the current user its owner.
  4. Update organization — Triggered from the Organization page. Edits org name, branding, billing address, and other org-wide fields.
  5. Delete organization — Triggered from the Organization page (owner only). Tears down the org.
  6. Update user role — Triggered from Settings → Users. Promotes/demotes a member among owner / admin / member.
  7. Remove user from organization — Triggered from Settings → Users. Revokes an existing member's access.
  8. Send invitation — Triggered from Settings → Users → "Invite". Creates an invitation token tied to an email and a role; emails the invitee.
  9. Resend invitation — Triggered from Settings → Users → pending invitations row. Re-sends the invitation email.
  10. Revoke invitation — Triggered from Settings → Users → pending invitations row. Cancels a pending invitation before it's used.
  11. Accept invitation — Triggered from the Accept Invite page (public, token-gated). Adds the accepting user to the inviting org with the invited role.
  12. Decline invitation — Triggered from My Invitations / Accept Invite. Marks the invitation declined.

Reads

  1. Get user — Triggered on app load. Returns the authenticated user's profile and active org context.
  2. Get organization — Triggered on every authenticated page. Returns the current org's details (name, branding, billing address).
  3. List organization users — Triggered from Settings → Users. Returns members of the current org with role and status.
  4. List my pending invitations — Triggered from My Organizations / app login. Returns invitations addressed to the current user's email.
  5. List organization invitations — Triggered from Settings → Users → pending invitations. Returns outstanding invitations the org has sent.
  6. Look up invitation by token — Triggered from the public Accept Invite page. Returns the invitation summary so the invitee can review before accepting.
  7. Get dashboard — Triggered from the Home page on app load. Returns a screen-specific bundle of existing per-domain reads (orders, POs, WOs, materials/FG inventory summaries, status type lookups, vendors) so the Home page can render in one round-trip. Not an analytics surface — when real analytics land, they'll have their own design. (Parked under Platform because it fires on app load alongside the other shell reads, but the dashboard isn't really a platform concern — revisit its home when an analytics / cross-domain reporting domain emerges.)