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
- Sign up — Triggered from the Login / OrgSignup page. Creates a Firebase user account and the matching platform user record.
- Log out — Triggered from the user menu. Ends the current session.
- Create organization — Triggered from the OrgSignup / NewOrganization page. Creates a new tenant org and makes the current user its owner.
- Update organization — Triggered from the Organization page. Edits org name, branding, billing address, and other org-wide fields.
- Delete organization — Triggered from the Organization page (owner only). Tears down the org.
- Update user role — Triggered from Settings → Users. Promotes/demotes a member among owner / admin / member.
- Remove user from organization — Triggered from Settings → Users. Revokes an existing member's access.
- Send invitation — Triggered from Settings → Users → "Invite". Creates an invitation token tied to an email and a role; emails the invitee.
- Resend invitation — Triggered from Settings → Users → pending invitations row. Re-sends the invitation email.
- Revoke invitation — Triggered from Settings → Users → pending invitations row. Cancels a pending invitation before it's used.
- Accept invitation — Triggered from the Accept Invite page (public, token-gated). Adds the accepting user to the inviting org with the invited role.
- Decline invitation — Triggered from My Invitations / Accept Invite. Marks the invitation declined.
Reads
- Get user — Triggered on app load. Returns the authenticated user's profile and active org context.
- Get organization — Triggered on every authenticated page. Returns the current org's details (name, branding, billing address).
- List organization users — Triggered from Settings → Users. Returns members of the current org with role and status.
- List my pending invitations — Triggered from My Organizations / app login. Returns invitations addressed to the current user's email.
- List organization invitations — Triggered from Settings → Users → pending invitations. Returns outstanding invitations the org has sent.
- Look up invitation by token — Triggered from the public Accept Invite page. Returns the invitation summary so the invitee can review before accepting.
- 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.)