Katkat

Design an In-Flight Entertainment Experience for a Small Screen

HexSoftware Engineer · Onsite

Last updated

This problem tests the ability to design a high-availability, accessible, and modular UI/UX system under significant physical and connectivity constraints.

Problem Statement

Design an in-flight entertainment (IFE) application interface for a high-density, 4-inch touch screen embedded in an armrest. The primary goals are to provide real-time flight telemetry (map/altitude/time) and a music player.

Constraints & Requirements

  1. Environment: Turbulence is common, necessitating large touch targets and forgiving UI components. The system must operate primarily offline, syncing flight data from a local server.
  2. Connectivity: Intermittent Wi-Fi. Media is cached locally on the seatback unit; flight telemetry is pushed via the internal LAN.
  3. Accessibility: Must support high-contrast modes and intuitive navigation for users with limited motor control or visual impairments.
  4. Extensibility: The architecture should allow for future modules (e.g., ordering food, duty-free shopping) without bloating the initial load time.

Deliverables

  • API & Data Model: How does the seat unit fetch telemetry from the plane's flight server? How are music playlists stored/synced?
  • UI/UX Strategy: Propose a navigation structure that minimizes clicks and accounts for a small, jittery interface.
  • Architecture: Design the client-side module loading strategy to ensure the app remains responsive while adding new features.
  • Metrics: Define 3 Key Performance Indicators (KPIs) to measure user satisfaction and system health.

Hints

Hint 1

Consider a 'State Machine' pattern for the UI to ensure the interface can recover gracefully if a user's touch is interrupted by sudden movement.

Hint 2

Use a 'Local-First' architecture where the seat unit caches data and handles local event queuing to mask latency from the plane's internal network.

Hint 3

Think about 'Modularization' through lazy-loading components or a micro-frontend approach to keep the core binary small and performant.

Follow-up questions

  • How would you handle localization for a global airline while keeping the initial deployment package size under 50MB?
  • If the touch screen becomes unresponsive during turbulence, what physical or software fallback mechanisms could you implement?
  • How would you instrument the application to detect 'rage-tapping' or accessibility friction without compromising user privacy?