How mrbanoth/disney works
This is a client-side, Disney+-inspired streaming discovery app, not a streaming backend. The main journey is local sign-in/profile selection, language-personalized browsing or search, title details, then trailer playback; users can also manage a library and preferences. The router, contexts and local storage connect those stages. README capabilities are included where their implementation was not sampled; those links are limited to documented behavior. The catalog context is sampled as static, while live YouTube search is a separate optional integration.
Main entry points: AppRouter.tsx Route protection · AppShell.tsx App navigation · CatalogContext.tsx Catalogue context · storage.ts Browser local storage
Components 22
Entry and identity
- Route protection
src/app/AppRouter.tsx - Sign-in and welcome
src/features/auth/AuthPage.tsx - Profile selection
src/features/auth/ProfilesPage.tsx - Account state
src/features/auth/AuthContext.tsx
Discovery
- Personalized home
src/features/home/HomePage.tsx - Browse and filters
src/features/browse/BrowsePage.tsx - Search and moods
src/features/search/SearchPage.tsx - Bundled catalogue
src/data/catalog.ts - Catalogue context
src/features/catalog/CatalogContext.tsx - Live trailer search
src/services/youtubeSearch.ts
Title and playback
- Title details
src/features/details/DetailPage.tsx - Trailer player
src/features/player/PlayerPage.tsx
Personal state
- Language preferences
src/features/preferences/PreferencesContext.tsx - Watchlist and history
src/features/library/LibraryPage.tsx - Profile settings
src/features/profile/SettingsPage.tsx - Browser local storage
src/lib/storage.ts
App shell
- App navigation
src/layouts/AppShell.tsx - SEO and recovery
src/components/ui/SeoManager.tsx - Offline app shell
public/sw.js
Other components
- Viewer
- YouTube Data API
- Browser
Connections 28
- Viewer → Route protection: opens routes
- Route protection → Sign-in and welcome: routes unauthenticated
- Sign-in and welcome → Account state: signs in or up
- Route protection → Profile selection: routes protected profile
- Profile selection → Account state: uses account
- Route protection → App navigation: routes protected app
- App navigation → Personalized home: renders home
- App navigation → Browse and filters: routes browsing
- App navigation → Search and moods: routes search
- App navigation → Title details: routes titles
- Route protection → Trailer player: routes playback
- Personalized home → Catalogue context: reads catalogue
- Browse and filters → Catalogue context: reads catalogue
- Search and moods → Catalogue context: searches locally
- Catalogue context → Bundled catalogue: provides data
- Personalized home → Language preferences: uses language
- Browse and filters → Language preferences: filters by preference
- Search and moods → Language preferences: uses locale
- Search and moods → Live trailer search: requests live results
- Live trailer search → YouTube Data API: queries API
- Title details → Catalogue context: looks up title
- Watchlist and history → Browser local storage: reads saved state
- Profile settings → Browser local storage: updates settings
- Account state → Browser local storage: persists account
- Language preferences → Browser local storage: persists preferences
- Trailer player → Browser local storage: records playback state
- Route protection → SEO and recovery: updates route metadata
- Browser → Offline app shell: registers in production