Skip to content
⚛️ The Stremio Core: types, addon system, UI models
Branch: master
Clone or download
Latest commit a4ed0b9 Jul 18, 2019

README.md

Stremio - the next generation media center

Stremio is a full-featured media center designed to help you organize and stream your favorite videos, movies and TV series. It will notify you for new episodes / movies, and allow you to find new content through Discover.

Stremio allows, using it's Add-ons system, to play movies, TV series and channels instantly.

stremio-core

stremio-core is a rust crate that's designed to contain all the reusable logic between Stremio versions.

Goals

  • Flexibility - can be integrated into existing code bases, across the entire stack, and in different paradigms
    • use case: types can be used by add-ons
    • use case: can be used with existing user authentication as an addition to an existing app
    • use case: can use the Context model to manage the user authentication/addons, using it as a backbone to the entire Stremio app
  • Emphasis on correctness
  • No cruft / legacy - not burdened by obsolete decisions & solutions

Modules

  • types
  • addon_transport - handles communication with add-ons, implements legacy protocol adapter
  • state_types: types that describe application state; inspired by the Elm architecture
    • Effects and Update traits
    • runtime: helps using stremio-core in an application by handling the effects automatically
    • environment: a trait describes the environment (fetch, storage)
    • msg: messages: actions, events
    • models: all stateful models, such as Context (handling user authentication, add-ons), Library, CatalogFiltered, etc.

Also see:

cargo clippy
cargo fmt

Optimizing WASM output

WASM output binary can get large, especially if we derive Serialize/Deserialize in places we don't need to

We can optimize it by running twiggy: twiggy top ..._bg.wasm and seeing what the biggest code size offenders are

Adding new actions

Defining actions and what middleware requests they should trigger is defined in src/state_types/msg/actions

You can’t perform that action at this time.