Private · active product development · Media systems

Slipmat

A playback-first multimedia client for owned and self-hosted media, with playback itself as the organizing model across sources, pages and media types.

Niche
Self-hosted and local media playback
Core stack
React 19 · TypeScript · Rust · Tauri v2 · WASM
Sources
Jellyfin + native local media
Focus
Playback authority, signal transparency, music intelligence

System view

SourcesPlayback authorityRail · output · analysis

The study

Slipmat is a playback instrument for media you control, connecting server libraries and local sources through one interaction model.

Jellyfin supplies catalog data and source candidates, while the client owns queue, clock, renderer, interaction state and product identity. Local files enter the same model, giving the application a consistent playback vocabulary across source types.

System structure

The defining architectural choice is to make playback state explicit.

One interactive timeline

The Playback Rail is the canonical temporal and scalar instrument for seeking and projected controls, keeping time-based interaction in one vocabulary.

Signal transparency

The product reports the processing and output path it can verify, and names capabilities according to that evidence.

Music intelligence with evidence

BPM, key, energy and spectral analysis support visual topology, shuffle and transition evidence, while media-type contracts keep the broader playback model coherent.

Provider-neutral authority

Providers supply catalog data and source candidates; playback authority stays in the client.

Product and interaction design

The interface makes playback state observable at the point where that information supports control and understanding.

Waveforms, buffering, transition telemetry, lyrics, artwork, spectra and immersive surfaces are coordinated projections of the same playback state. One action authority keeps interaction predictable across those surfaces.

Capabilities are tiered by end-to-end implementation. Future provider foundations are documented separately from shipping capabilities, keeping roadmap, product surface and technical evidence precise.

Recent development

The product surface has expanded through the same playback model.

Podcasts reuse the same playback authority and Rail as music while adding chapters, sections, advertisement markers, transcripts, notes, media-specific speed profiles and offline retention.

Video and Live TV apply the same discipline to program, channel and source identity, recovery contracts and session lifecycles. Modernization also consolidates ownership and keeps Rail feedback passive and focus-preserving.

Podcast as a first-class medium

Canonical episode detail, enrichment, independent speed profiles, downloads and offline retention use media-specific podcast semantics.

Domain-aware resilience

Audio, video and live recovery use media-specific contracts and compatible fallback paths.

Clear ownership

Cleanup consolidates controls, stores, compatibility layers and guidance so current behavior has one explicit owner.

Certification as product work

Storybook, Vitest, Playwright and boundary tests provide executable evidence alongside design and engineering documentation.

Architecture lens

Current hardening work is turning the intended dependency direction into executable repository policy.

The architecture is organized as domain contracts, deterministic planners and state machines, adapters and services, presentation models, then UI and platform projections. The active guardrail work makes that dependency direction enforceable instead of relying on convention.

Playback authority is singular

Media providers contribute catalog and source candidates while queue, generation identity, renderer lifecycle and interaction authority remain client-owned.

Provider-neutral UI boundaries

The active boundary policy keeps low-level UI primitives dependent on foundation components rather than Jellyfin client details or other provider implementation state.

Async correctness is type-enforced

Type-aware promise rules, strict TypeScript, explicit ownership and generation checks make stale asynchronous work harder to publish after authority has moved.

Branding has provenance

One canonical SVG mark generates web and native projections with recorded source and tool provenance, avoiding parallel hand-maintained identities across platforms.

Development approach

Architecture acts as a creative constraint: prototype the experience at full fidelity, observe its behavior and give proven interactions explicit authority.

A crossfade gesture, waveform animation, podcast chapter model or Live TV recovery path can begin as a focused Storybook experiment or boundary test using realistic media. Design, timing and interaction are worked out against running behavior, then documented as interaction intent.

Strict types, ownership contracts, accessibility checks, performance traces and automated regression tests preserve useful experiments. The working cycle is wonder → prototype → evidence → invariant, giving exploratory design a durable technical form.

Private repository · public case study focuses on product architecture and method
Next: FireOne→