installable pwa · self-initiated
soundmap
a daily sound journal. record one moment; it becomes a coloured artifact on a calendar.
- role
- design + build
- context
- self-initiated · daily sound journal
- year
- 2026
about
once a day you record about thirty seconds. the app reads the sound and renders it as a two-colour gradient drawn from traditional japanese hues, and that artifact takes its place on a month calendar.
the colours are not decoration. they are read from the recording, and the same soundscape always resolves to the same artifact.
credits
- design, build, sound analysis
- evana sajan
- stack
- react · web audio · indexeddb
- status
- installable pwa
try it
open full screenthe month is already seeded, so tap any coloured day to replay it and watch the gradient re-reveal in step with the audio. recording your own asks for the microphone; decline it and everything else still works.

product thesis
a photo of a moment is easy to keep. a recording of one is awkward to go back to. soundmap is an attempt at a sound you would actually return to, without it turning into a feed.
why this one is different
every other audio journal is a list of files you will never open.
this one gives the day a face before it gives you a filename.
you can recognise a tuesday in march by its colour a year later, which is the whole product.
the systems thinking
read
three things are measured off the recording: loudness, instability and warmth. nothing else.
map
loudness sets where the two colours meet, instability sets how softly they blend, warmth nudges the temperature. the mapping is fixed.
store
audio and artifact both live in the browser's own indexeddb, on one device. there is no account and no server.
share
a shared link carries the visual signature only. the sound is not in it.
key design decisions
one recording a day, and no retakes
why
a feed of your own moments is not a keepsake, it is a chore. unlimited capture would turn this into a voice-memo app with a nicer skin.
tradeoff
you cannot fix a bad take, and a day you miss is gone. some people will find that annoying rather than meaningful.
result
the record button spends itself after a single take and rests until tomorrow. the scarcity is what makes the moment worth choosing.
make the colour deterministic
why
if the visual were random it would mean nothing, and the calendar would be wallpaper rather than a record.
tradeoff
a strict mapping is much harder to design than a pretty accident, and it rules out tuning a result that comes out ugly.
result
the same soundscape always resolves to the same artifact, so the colour is evidence rather than ornament.
keep it local by principle, not by default
why
an archive of your own days should not live on someone else's server, and a sync feature would quietly make it theirs.
tradeoff
no backup, no second device, and if you clear site data the year is gone.
result
the audio never leaves the browser. no sync, no accounts, one device, and the acoustic reading sits behind a quiet toggle for anyone who goes looking.
edge cases accounted for
a day you missed
empty days still render as days. the gaps in the record are part of the record, so a month you fell off does not quietly close up.
a microphone you never granted
the calendar, the artifacts and the replay all work without it. only the record button needs permission, and it is the last thing the app asks for rather than the first.
near-silence, and a fire alarm
the two ends of the loudness range are where a naive mapping produces mud or a flat block. the scale is clamped so a very quiet room and a very loud one still resolve to two distinguishable colours.
a link sent to someone else
a shared artifact is a visual signature with no audio behind it. the failure mode of a sharing feature on a private journal is that it shares the private part, so it does not carry it at all.