← Back to Index

MEC Screen — Domain-Control Data-Gap Analysis

First-pass scoping of the MEC screen to identify the domain controls it uses and the data each needs — flagging gaps against the current models/API for the architecture & backend teams. Documentation only; no presentation work.

Figma: file R6hPjBdjSIn6946qTJasUC, node 4684:7914 (MEC) · component masters: card-md 4718:11125, card-btn 4737:13038 · Source: Figma MCP (get_metadata / get_design_context) · Branch: docs/mec-screen-data-gap.

Headline. MEC reuses the Home controls but adds three: Secondary button, card-btn (3-up icon tiles), and card-md (text content card). It surfaces one new backend need Home did not: a favorite/bookmark affordance (heart on card-btn, card-md and the media card-lg) with no current data source. The "new" count badge on card-md is a client-side computation (local last-seen diff'd against the API payload), not a backend field.
MEC screen
Figma — MEC (4684:7914)

Screen structure (top → bottom)

  1. Pilot Card — "Welcome Captain Johnson" + View Contract
  2. Primary button — "File a PDR"
  3. Secondary button — "Sign up for text alerts" new variant
  4. card-btn row (3-up) — Committees / Reps / Hotels new
  5. Feed → card-lg — "Latest Media" + View All (image media, heart)
  6. card-sm ×3 — UP-PAC Sign Up, Help Hub, …
  7. Feed → card-md — "Union Documents" (Contract / Did You Know? / Roster / Policy Manual) new
  8. Feed → card-lg — media (2-up)
  9. Feed → card-md — Documents / Update / LEC Events / Reps

Content column 361 wide (16px margins), same shell as Home. Plus topNav, status bar, bottom navBar.

1 · Control inventory

ControlStatusFigmaReused from
Pilot Card (welcome)exists0:255Home
Primary buttonexists0:259Home (Button)
Secondary buttonnew variant0:263Button + style variant
card-btn (3-up icon tile)new4737:13038
Feed (horizontal scrolling)exists0:292…Home (Carousel)
card-lg (media feed item)exists0:297Home — but heart now shown
card-sm (nav row)exists0:321Home
card-md (text content card)new4718:11125

2 · New controls — data shape (from Figma masters)

card-md (250×148, text content card)

card-btn (116×84, 3-up tile)

Secondary button (361×47)

3 · Data-gap analysis

Per-field mapping against today's models (MenuItem, DocumentItem, UserInfo) and the data layer. "Source" = where the value would come from; gaps are what's missing.

#NeedUsed byCandidate sourceStatusNote
1Favorite / bookmark (per-item is-favorite + toggle) card-btn, card-md, media card-lg — (none) gap No favorites API today. The heart is now shown on all favoritable controls including Home (D31, 2026-06-26). MEC shows it across 3 controls. Needs: IsFavorite per item, a toggle endpoint, and a "my favorites" read.
2"New" count badge (count of new items) card-md Client-side (local last-seen vs API payload) client The red pill count is computed on-device by diffing the API result against locally-stored last-seen state — not a backend field. Backend only needs stable item IDs (ideally an updated/published timestamp) to diff against. Not a backend data gap.
3card-md description / summary card-md DocumentItem (+ Description) gap Text cards need a short description. Re-confirms the Description gap already flagged for richer tiles — one nullable field add to the content item.
4card-btn icon + label + nav card-btn MenuItem (Title, Glyph/ImageSource, Path) mapped Same as Home 3-up. MenuItem covers it (favorite is the only add — see #1).
5Secondary-button style variant Secondary button presentation, or a Variant field if buttons are backend-driven confirm If the button list is API-driven, add a primary/secondary style attribute; otherwise presentation-only.
6Feed/section config (titles + membership) all feeds DocumentItem Scope / Category / Grouping mapped Section grouping pattern established on Home; "Latest Media" / "Union Documents" map to scope+category queries. Confirm media vs document item types.
7card-lg media item (image, eyebrow, title) media feed DocumentItem / media content mapped As Home card-lg; add favorite (#1). Confirm whether "media" is a distinct content type with an image URL.

4 · Open questions for backend / architecture

  1. Favorites: is a favorite/bookmark capability planned? It now spans buttons, tiles and content cards — needs a shared per-item flag + toggle, not a per-control solution.
  2. New/unread counts: handled client-side (local last-seen diff'd against the API). Backend ask is only that list items carry stable IDs (ideally an updated/published timestamp) so the client can compute "new" locally — not a server-tracked count.
  3. Content description: confirm adding a nullable Description/summary to the content item that backs card-md (and richer tiles).
  4. Media vs documents: is "Latest Media" a separate media content type (with image) or DocumentItem with an image field?
  5. Buttons: are the Primary/Secondary buttons backend-driven (needing a variant field) or fixed in the screen definition?

Next screen set: TBD. Tracked in screen-mapping.html.