Home Screen Components — Backend API Handoff

Updated: 2026-08-08 07:10 ET · Audited: 2026-06-26 · Feature: UI Refresh — AB#1821 · Prepared: 2026-06-02 · Prepared by: ALPABot / Dr. Castro

Historical record — superseded; do not read as current status. This captures the 8-component data-source plan as prepared on 2026-06-02. It has since been superseded by the backend API mapping report and the dynamic-feed API contract: the Favorites API shipped 2026-07-08 (MobileMenu.ApiClient 1.0.7, WI 2182), and the per-component data-source model below has been replaced by the ItemDto dynamic feed (ItemComponentFactory.cs dispatches on ItemDto.ItemType). The body is preserved unchanged for the decision rationale.

All 8 home screen components have been specced and data sources resolved. This document captures the API changes required and the architectural decisions made, so the backend team can action them independently.

Total backend changes required: 1 field addition.

Required API Changes

1. MenuItem — Add description field

IN PROGRESS with backend team (2026-06-24)

Fielddescription
Typestring
NullableYes
NotesBody text for CardText (home screen navigation tile)

Context: The CardText component (WI-2127) displays a title, optional body text, image, and navigation link. All other fields already exist on MenuItem. Adding description here avoids a second async query per card and keeps the card backed by a single data source.

Decision rationale — why MenuItem and not DocumentItem: CardText is a navigation tile — it represents a menu item with richer display. MenuItem is the source of truth for home screen layout, order, and visibility. DocumentItem was rejected for CardText because it would require a second async query per card and conflates navigation structure with document content.

Where it's used: ALPADocs.Data.Models.MenuItemCardTextViewModel.Description


No-Change Confirmation

DocumentItem — CardHero (WI-2122)

CardHero is a pure-content card backed by DocumentItem. All required fields already exist:

CardHero PropertyDocumentItem FieldStatus
TitleDocumentItem.Title✅ Exists
DescriptionDocumentItem.Description✅ Exists
ImageDocumentItem.Image✅ Exists
LinkDocumentItem.FileIDSharedActionsService✅ Exists
PublishDateDocumentItem.FormattedPublishDate✅ Bonus
Query filterDocumentItem.Scope + DocumentItem.Category✅ Exists

Content configuration needed: The backend/content team needs to confirm the scope and category string values that identify hero content (e.g. "featured", "hero"). This is a configuration decision, not a code change.

Flight / Leg — Stack Card (WI-2126)

Stack Card is a concrete Jumpseat flight card backed by the existing FlightSearchResponseFlightLeg model. No new API or model changes needed.

Stack Card PropertySource FieldStatus
Header dateFlight.FlightDepartureDateLongFormat✅ Exists
Departure date/timeFlight.FlightDepartureDate + Flight.FlightDepartureTime✅ Exists
Origin → DestinationFlight.FlightDepartureAirportCode + Flight.FlightArrivalAirportCode✅ Exists
Flight numberFirstLeg.CarrierCode + FirstLeg.FlightNumber✅ Exists
Status badgeFlight.IsDelayed / Flight.IsCanceled / Flight.FlightCardIndicatorColor✅ Exists
Favorite stateSettings.FavoriteItemIdsJSON (client-only)✅ Client-only

Client-Only Properties (No Backend Involvement)

PropertyCardStoragePattern
IsFavoriteCardText, Stack CardMicrosoft.Maui.Storage.PreferencesJSON array of item IDs — same as FlightSearchNotifyMeList
NewCountCardTextMicrosoft.Maui.Storage.PreferencesJSON dict { itemId: count } — client-computed only

Component Overview

Work ItemComponentData SourceBackend Change?
WI-2091Pilot CardIAuthentication + DataManager (contract docs)None
WI-2121Button CardPresentation layer / use-case definedNone
WI-2122CardHeroDocumentItem via DocumentCardViewModelNone (content config only)
WI-2123Icon Button CardPresentation layer / use-case definedNone
WI-2124Multi-Button CardPresentation layer / use-case definedNone
WI-2125Slider CardUse-case definedNone
WI-2126Stack CardFlight/Leg (Jumpseat flight search)None
WI-2127CardTextMenuItem + local SettingsAdd description to MenuItem

Full Spec Docs

All property mapping and data source analysis docs are in docs/component-specifications/: