Skip to content

⚛️ The Stremio Core: types, addon system, UI models, core logic

License

Notifications You must be signed in to change notification settings

DoomHEADSHOT/stremio-core

This branch is 309 commits behind Stremio/stremio-core:development.

Folders and files

NameName
Last commit message
Last commit date
Jan 23, 2024
Jul 19, 2024
Jun 23, 2024
Jul 9, 2024
Aug 4, 2023
May 9, 2024
Jun 14, 2024
Jul 9, 2024
Jun 14, 2024
Feb 19, 2019
Aug 8, 2023
Jan 27, 2022

Repository files navigation

Stremio - the next generation media center

Build Workflow Status Latest MSRV workflow Status Latest deployed docs on GH pages

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 its 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.
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

About

⚛️ The Stremio Core: types, addon system, UI models, core logic

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.8%
  • Other 0.2%