Giter VIP home page Giter VIP logo

stremio-core's Introduction

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

stremio-core's People

Contributors

nklhtv avatar swetlasg avatar core1024 avatar martinkavik avatar yanivbir avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.