Local-first media client

Reflux

Pre-release · source-available, not open source

What if a film were one thing, no matter how many files it lives in?

A Kotlin Multiplatform media client in which a work is distinct from the versions and sources that provide it. Watch and resume state belong to the work, so playback continues from any copy: a local folder, a Jellyfin server or a network share.

Role
Personal project · proprietary, all rights reserved
Period
2026 – present
Stack
Kotlin Multiplatform · Compose · Media3 (Android) · libmpv (desktop) · Jellyfin · TMDB
Local folderJellyfinNetwork shareFilm (2021) 1080pFilm (2021) 2160p{edition-Extended}IdentificationOne workBest versionwatch state lives hereMedia3 · libmpv
Illustration, not a screenshot
  1. Local folder · Jellyfin · network share
  2. Several file versions of the same film
  3. Identification
  4. One work: watch and resume state live here
  5. Best version → Media3 on Android, libmpv on desktop

Works, versions and sources

Most players treat a file as the thing you watch. Reflux treats the film or show as the thing, and files as versions of it that sources happen to provide. A 1080p copy on a laptop, a 4K copy on a Jellyfin server and an extended edition on a network share are three versions of one work.

Watch and resume state belong to the work, so you can stop on one copy and continue on another. Library state lives in the platform's data directory and never in your media folders; nothing is renamed or moved.

Identification

  • Titles are read from ordinary filenames: a title ends at the first unambiguous release token, and ambiguous words are treated only as hints.
  • Embedded IDs such as {tmdb-123} and IMDb IDs, and Plex {edition-…} tags, are honoured.
  • A file without a year joins its title's only known year. With several known years, such as two films of the same name, it stays separate rather than being guessed into the wrong work.
  • A metadata match is accepted only when it is strong and clearly ahead of the runner-up. Anything else goes to an Identify flow instead of being guessed.

Playback

One engine drives every form factor: Media3 on Android and libmpv on desktop. Reflux picks the best available version for the device, and input adapts to touch, mouse and keyboard, game controllers and TV remotes.

Status and limits

  • Pre-release; nothing has been published. The engine and one experience layer run on Windows, Linux, Android phones and tablets, and Android TV / Google TV.
  • Android and television builds have been verified mainly on emulators.
  • Accessibility is partial: contrast and system text size are tested, while screen-reader labels on every control, focus order, reduced motion and a TalkBack / Narrator pass are not done yet.
  • Reflux is proprietary. The source is public so the work can be seen, but that grants no permission to redistribute, modify or reuse it.

Jump to a page or action

Home
Current project statusWhat is released, in alpha or in development
Selected work
Experience
Smaller builds
Education
Contact
ArchiveEarlier and academic projects
NexusPrivate alpha · active development
Atlasv1.0.3 released · not in active development
RefluxPre-release · source-available, not open source
ExtendSpaceIn development · Connect still disabled
Bhatkal Time LuxeDelivered · HubZero's first paid client project
QueryCraftFinal-year project · retired
BlueTapPre-release · foundation complete
Layers by RSXPre-release · no public release
Copy email addressrifaque.rs@gmail.com
Open resume (PDF)
Open GitHub profilegithub.com/Rifaque
Open LinkedIn profile

20 results · ↑↓ to move · Enter to open