Skip to content

Final app next steps - #4

Closed
giolaq wants to merge 2 commits into
mainfrom
final-app-next-steps
Closed

giolaq wants to merge 2 commits into
mainfrom
final-app-next-steps

Conversation

@giolaq

@giolaq giolaq commented Sep 29, 2026

Copy link
Copy Markdown
Collaborator

Final App after Step 7

Several validation commands failed on a fresh clone before any workshop
changes, which also blocks the Step 7 prompt's validation list:

- shared: tsconfig used moduleResolution "bundler", which TypeScript 4.9
  rejects; switch to "node" and map @amazon-devices/* and
  lottie-react-native to the Vega workspace.
- shared: the @testing-library/react-native Jest preset no longer exists;
  use the Vega workspace's React Native preset and module paths, and
  enable RNTL's built-in matchers.
- vega: shared files couldn't resolve react-native/react during ts-jest
  type checks or at runtime; add tsconfig paths and Jest modulePaths.
- vega: replace the stale template test (it looked for a "sampleLink"
  testID that doesn't exist) with a render test of the home tiles.
- expotv: add eslint and eslint-config-expo so `yarn lint` runs.
- expotv: add `yarn typecheck` with tsconfig.typecheck.json. It keeps the
  React type mappings out of tsconfig.json (which Expo Metro reads) and
  includes Expo's types, since expo-env.d.ts only exists after
  `expo start`.
The completed workshop result, built on top of the starter tooling fixes.

Steps 2-5 (shared components, kept and still exported):
- Header with platform-specific logos (Platform.select and file extensions)
- Lottie animation with a web fallback using the Animated API
- fetch-based httpClient and a random-joke ApiDemo
- Movie list: FlatList by default, Vega Carousel via MovieList.kepler.tsx,
  plus a cross-platform FocusRow

Step 7 streaming app (from workshop/prompts/streaming-tv-prompt.txt):
- HomeScreen is now a browse/player state machine: a hero updated by
  focus and one "Featured" row of four static items (HTTPS MP4s from the
  workshop catalog)
- ContentCard with 1.08 focus scale and orange border, title-safe and
  action-safe constants
- PlayerView with loading and error states, Play/Pause and Exit controls
  that auto-hide after five seconds but stay mounted, Back to browse
- Shared VideoPlayer interface: react-native-video (Android TV / Apple
  TV), W3C Media URL mode (.kepler.tsx), HTML video (.web.tsx)
- Vega: react-native-w3cmedia, automatic JSX runtime in Babel, and the
  W3C Media services and modules in manifest.toml
- Tests for browse, focus, selection, play/pause, auto-hide, exit,
  loading/error states and the Vega player lifecycle, with lightweight
  mocks for the platform video modules
@anishamalde

Copy link
Copy Markdown
Owner

Hey Gio, I dont want to be prescriptive of what the final app after step 7 should look like as we said they can use the multi-tv as a reference

@giolaq

giolaq commented Sep 29, 2026

Copy link
Copy Markdown
Collaborator Author

agree, this should be in a different branch, different from final app too, closing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants