Back to registry
main·9056a44·Working

Crabcast

Cross-platform IPTV client with a Rust backend.

A Flutter media app using media_kit/libmpv, Riverpod, Dio, secure storage and Chromecast support, backed by a Rust Axum API with SeaORM, Argon2 auth and AES-GCM encrypted payloads.

Private repository
BBC One HDPremier League · Live now
02:00:00
catalog
TypeMedia applicationRoleMobile product, backend APIBuilt2026platforms5playerlibmpvsourcesM3U/Xtream
Stack

Client

  • FlutterCross-platform shell for mobile, desktop and TV.
  • DartUI, routing and platform integration layer.
  • RiverpodPredictable provider, catalog and playback state.

Playback

  • media_kitlibmpv-backed player foundation.
  • SQLiteLocal cache for catalogs, VOD and live metadata.
  • ChromecastCasting target for the TV experience.

Backend

  • RustAPI core for accounts and provider normalization.
  • AxumHTTP routes and auth boundaries.
  • AES-GCMEncrypted provider payloads and sensitive URLs.
01

Why I built this

IPTV apps often feel fragile: weak source management, poor playback, no serious caching and little attention to secure account handling.

Crabcast is built as a native-feeling client with a backend that can normalize providers and protect sensitive payloads.

02

How it works

Flutter owns the player experience across desktop and mobile while Riverpod keeps provider, playlist and playback state predictable.

The Rust API handles accounts, encrypted provider data and database-backed synchronization.

03

Key decisions

  1. 01

    media_kit over basic video widgets

    libmpv support gives a stronger playback foundation across platforms.

  2. 02

    Encrypted provider payloads

    Provider credentials and source URLs are sensitive, so AES-GCM protects data at the API boundary.

  3. 03

    Local cache first

    Large VOD and live catalogs need caching to keep browsing fast and resilient.

04

What I learned

  • Media UX is mostly latency, state recovery and edge cases.
  • A clean provider abstraction matters before adding more playback features.