โ 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 }