โ† All projects
In progress v1.0.0 Updated 28 Aug 2026

Musillow

A music app built around discovery rather than around your existing library.

FlutterDartMusicDiscovery

How the flow is assembled

The server returns the discovery flow as an ordered set of stages rather than a flat playlist. Each stage carries its own intent, which is what lets the client present a run of unfamiliar tracks differently from a run of safe ones.

Signals

Skips, completions and repeats feed back into the next assembly. A skip in the first few seconds is treated differently from a skip near the end, because they mean different things.

Library

Saved tracks and albums exist but sit behind the flow. The library is a destination you navigate to, not the screen you land on.

Client and server contract

The client posts events and requests the next flow; it holds no ranking logic of its own.

GET  /api/flow          -> stages[]
POST /api/events
{ "track": "...", "event": "skip", "at_ms": 4200 }