Skip to content

Portal Information Architecture

Status: implementation baseline · Tracking: AB#7664, AB#7665

Portal objective

The portal must answer four questions without requiring logs or configuration files:

  1. Is Project Marvin healthy?
  2. Which calendars are ready, and which need action?
  3. What information is copied to each destination?
  4. What should the operator do next?

Primary navigation

SurfaceOperator questionInitial capability
DashboardIs everything working?Readiness summary, runtime state, calendar status, next actions
CalendarsWhat is connected?Add, authorize, reconnect, manage privacy, and remove calendars
Sync RulesWhat will each target receive?Private/busy/subject/trusted-detail policy and preview
ActivityWhat happened?Recent runs and created/updated/skipped/failed summaries
DiagnosticsWhy is something not ready?Provider, token, subscription, polling, and runtime evidence
SettingsHow is this workspace configured?Timezone, sync window, workspace identity, and deployment information

The first portal-foundation slice implements all six locations as evidence-driven views. Operations remain limited to APIs already supported by the backend; later stories add runtime controls, richer policy editing, calendar discovery, and guided recovery.

Calendar lifecycle

StateMeaningExpected action
Setup requiredProvider application or required account data is missingFinish provider setup
AuthorizingProvider sign-in was started and callback is pendingComplete sign-in
VerifyingCredentials exist but live capability checks are incompleteCheck access
ReadyRequired identity, credential, and capability evidence is validNone
SyncingA ready calendar is participating in an active runWait or view Activity
ExpiredSaved authorization can no longer be usedReconnect
FailedProvider or runtime operation ended with a non-retryable errorReview Diagnostics

Lifecycle state must come from backend evidence. The browser must not infer Ready from the presence of an account email.

First-run journey

  1. The unauthenticated screen explains that workspace sign-in and calendar authorization are separate.
  2. Microsoft Entra sign-in binds or verifies the workspace owner.
  3. An empty Dashboard explains that at least two calendars are required.
  4. The operator opens Calendars and adds the first Microsoft account.
  5. External provider consent returns to the portal and live validation begins.
  6. The operator selects provider calendars when discovery is implemented.
  7. The operator reviews target privacy and a synchronization preview.
  8. The portal enables automation only when at least two calendars are Ready.

Progress must survive refresh, external redirects, and supported service restarts.

Returning-operator journey

The Dashboard is the default surface. It prioritizes action-required calendars and runtime failures above healthy status. Every problem links to either an immediate operation or a Diagnostics explanation. Successful state remains concise.

Interaction and accessibility rules

  • Navigation and primary actions must work by keyboard and touch.
  • Current navigation uses aria-current and status changes use an aria-live region.
  • Color supplements text labels and never carries status by itself.
  • Destructive or provider-writing operations require explicit language and appropriate confirmation.
  • Secret values are never returned to or rendered by the portal.
  • Mobile layouts keep status and next actions ahead of secondary diagnostics.

Responsive layout

  • Wide screens use a persistent product sidebar and content workspace.
  • Narrow screens collapse navigation into a horizontally scrollable control row.
  • Cards become a single column before labels or actions become cramped.
  • Tables are avoided for essential mobile actions; diagnostic tables may scroll horizontally.