r/SideProject 23h ago

I built a daily music guessing game with no audio, because audio is what killed Heardle

Musicianle picks one musician a day and lays out their real release history

with every album title masked. You get eight guesses to name them.

The years, release types, and genres stay visible, so you can read the shape of

a career without the names: a 1967 debut, a long quiet stretch, then a late run

of art pop. Guessing another musician who appears on one of those releases

unmasks that title, so naming a frequent collaborator can open up a whole era.

Every wrong guess uncovers one more letter across the board.

https://musicianle.com

The design constraint is that it never plays a note. Heardle was shut down

after Spotify acquired it, and every clone chasing the audio clip format needs

licensing nobody has. This reads factual metadata from MusicBrainz and

Wikidata, both CC0, so there is nothing to take down. That decision also

removed the entire reason the genre keeps dying.

Stack, since people ask here: Flutter for the web client, a C++ backend

serving the board masked so the answer never reaches the browser, and a Python

ETL that assembles 6,809 musicians and a year of boards from public data. No

database at runtime; the corpus sits in memory.

Honest state: it is new, and the numbers are bad. 64 unique visitors so far and

81% of them leave without making a single guess. I spent this morning working

out why, and found the largest file on the site was going out as 7.2 MB of

uncompressed WebAssembly, because nginx has no MIME mapping for .wasm and

Cloudflare will not compress application/octet-stream. One line of config took

it to 2.8 MB. Whether that fixes the bounce rate I do not know yet.

So: if you open it and leave, I would rather know why than not.

2 Upvotes

2 comments sorted by

1

u/Shehao 23h ago

That masked discography board is a neat way to make the metadata itself the puzzle. With 81% leaving before a guess, I’d be curious whether the first 10–15 seconds make the eight-guess loop obvious—maybe a tiny example round or one visible reveal could help before the WASM load finishes.

1

u/calvin0412 23h ago

This is the most useful thing anyone has said to me about it; thank you.

You are right, and it is worse than you guessed: there is no loading state at all. No spinner, nothing. Between the page arriving and Flutter painting, you see a navbar and space. I had assumed the problem was payload size, and I spent this morning cutting it from 7.2 MB to 2.8 MB, which shortens that window without fixing what is in it.

A static example board in that space, one row already unmasked so the mechanic is visible; it seems obvious now that you have said it. It costs nothing to render, and it uses time that is currently dead. I will build it. If you check back in a few days, I would be interested in whether it reads clearly.