MCPcopy Index your code
hub / github.com/DodoraApp/DodoStream

github.com/DodoraApp/DodoStream @v0.11.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.11.1 ↗ · + Follow
741 symbols 2,335 edges 308 files 37 documented · 5%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Discord Contributors Forks Stargazers Issues License

DodoStream

📺 DodoStream Media Hub

Streaming evolved.

An open-source, privacy-focused media hub built with Expo + React Native, currently optimized for Android TV & Android.

Report a Bug

Request a Feature

Join the Discord Server (for general ideas, suggestions, decisions)


📋 If you have 5 minutes of time and want to help us shape the future development please fill out the DodoStream User Survey


Supports Stremio Addons (see details below).

Vision

  • Bring a modern, fast, customizable media hub experience to TV & mobile devices.
  • Stay privacy-first: no accounts, no tracking, no ads.
  • Keep the core portable: one codebase for TV + mobile.
  • Full user profile support.

This project is under heavy development and not stable to use.

Screenshots

These are outdated but kept for an initial impression.

See more screenshots in the docs/screenshots folder.

Features

This project is under active development. Expect occasional breaking changes, unfinished features, and rough edges.

  • [x] Almost full Stremio Addon support
  • [x] Addon manager (install via manifest URL, remove addons)
  • [x] Per-addon catalog toggles (use catalogs on Home / in Search)
  • [x] Home screen
  • [x] Media details page
  • [x] Settings page
  • [x] User Profiles (create/edit/delete/switch)
  • [x] Optional profile PIN protection
  • [x] Per-profile playback settings
  • [x] Watch history + resume playback
  • [x] Stream selection
  • [x] Playback with 2 different players (ExoPlayer + VLC)
  • [x] Automatic player fallback (when enabled)
  • [x] Preferred audio/subtitle languages
  • [x] Subtitle & audio track selection
  • [x] Auto-play next episode
  • [x] Search across enabled addon catalogs
  • [x] My List (local, per-profile)
  • [x] New release checking

This list will not be updated anymore, see closed feature tickets for up-to-date information.

Roadmap

See Feature issues for described features & Milestones for planned features.

See IDEAS.md for currently unplanned feature ideas.

Supported Platforms

  • Android TV (primary target)
  • Android (mobile/tablet)
  • tvOS / Apple TV (currently untested)

Tech Stack

  • Expo SDK + expo-router (file-based routing)
  • TypeScript (strict)
  • Zustand (state)
  • React Query (data fetching)
  • @shopify/restyle (theme + styling)
  • Moti/Reanimated (animations)

Contributing

PRs and issues are welcome. See good first issues for a starting point.

Thanks

This project is inspired by other community streaming clients and media projects, including:

Star History

Star History Chart

Legal / Disclaimer

DodoStream is an independent, community-driven project and is not affiliated with Stremio.

DodoStream does not host, provide, sell, or distribute any media content. It is an application that can interact with third-party addons/services configured by the user.

You are responsible for complying with the laws in your jurisdiction and for only accessing content you have the rights to access.

License

See LICENSE for a copy of the GPL-3.0 license.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Extension points exported contracts — how you extend this code

CatalogOrderableItem (Interface)
Catalog item for the orderable list
src/components/settings/HomeSettingsContent.tsx
TrackWithSortKey (Interface)
* Intermediate structure for sorting tracks within a language group
src/utils/subtitles.ts
SidebarFocusState (Interface)
* Store for tracking the active sidebar item's native node handle. * This enables content screens to set nextFocusLeft
src/store/sidebar-focus.store.ts
SectionHeaderItem (Interface)
Section header item
src/app/(app)/(tabs)/index.tsx
Profile (Interface)
(no doc)
remote-ui/src/api.ts
IntroData (Interface)
(no doc)
src/types/introdb.ts
ThemePreset (Interface)
(no doc)
src/theme/theme-presets.ts
HistoryIdsPayload (Interface)
(no doc)
src/api/simkl/sync-service.ts

Core symbols most depended-on inside this repo

upsertWatchProgress
called by 114
src/db/queries/watchHistory.ts
withScale
called by 66
src/theme/theme.ts
initializeDatabase
called by 49
src/db/client.ts
showToast
called by 36
src/store/toast.store.ts
upsertMetaCache
called by 35
src/db/queries/metaCache.ts
addToMyList
called by 32
src/db/queries/myList.ts
createDebugLogger
called by 31
src/utils/debug.ts
getContinueWatchingWithUpNext
called by 28
src/db/queries/watchHistory.ts

Shape

Function 452
Interface 275
Method 8
Class 6

Languages

TypeScript100%

Modules by API surface

src/api/stremio/hooks.ts21 symbols
src/utils/subtitles.ts17 symbols
src/db/queries/watchHistory.ts17 symbols
src/api/simkl/sync-service.ts17 symbols
src/utils/format.ts14 symbols
src/api/simkl/client.ts12 symbols
src/types/stremio.d.ts11 symbols
src/components/media/MediaInfo.tsx11 symbols
src/api/local-server/handlers.ts11 symbols
src/app/(app)/(tabs)/index.tsx10 symbols
src/types/simkl.ts9 symbols
src/hooks/useWatchHistoryDb.ts9 symbols

For agents

$ claude mcp add DodoStream \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact