Memory loses its sound first. Afterfade turns it into music.

Inspiration

I can tell you what last Tuesday looked like — there is a photo. I cannot tell you what it sounded like. Photos survive. Sound doesn't.

I wanted a journal that asked for five seconds and nothing else, and gave back something I would want to keep. Not a list of entries. A music video of the week.

What it does

Point your camera for five seconds. Do it seven times. The app collects colors and ambient sound from each clip, composes a lo-fi track on the device, and cuts your footage to the beat. An ordinary week becomes a music video. You can add a filter and a one-line caption before you export.

No account. Nothing you record leaves your phone.

The design decisions

  • You don't have to write. The only input is pointing the camera. A one-line caption is there if you want it, but the app works without it.
  • Throw most of it away. The app keeps about one second out of five, chosen at random. The song arrives after you have forgotten.
  • No streak. No daily quota, no reminder. Fill a cassette in an afternoon or over a month.
  • The AI does not compose. No generative images, no AI music. Every sound in the track was recorded by you.

How I built it

Kotlin Multiplatform and Compose Multiplatform, one codebase for iOS and Android. This was my first app on either platform. Android took six days of evenings and weekends, iOS took two.

Challenges I ran into

Music generation started as Python on AWS. It cost money per track, did nothing offline, and sent people's recordings to my server. None of that fit an app whose promise is that your day stays with you. So I rewrote the engine in Kotlin on the device, shared by both platforms. A track went from a minute to ten seconds, the bill went to zero, and I deleted the server on day six.

No ad budget, so every download came from SNS alone. I posted the actual music videos the app produces and a hand-drawn comic series on TikTok. Together they brought over 2,000 downloads.

Accomplishments I'm proud of

  • One person, concept to code to two app stores to marketing, in two months alongside a full-time job. Concept, illustration, UI, audio engine, and the TikTok comics are all mine.
  • The first comic episode on TikTok brought 66K views. Over 2,000 downloads with zero ad spend.
  • People say some version of "a day with nothing in it turned emotional." One user wrote that a lonely, slightly scary night became "a stylish memory, as music."
  • The audio engine is now an open-source library other KMP developers can use.

What I learned

The phone is the server. When the input is already on the device and the work is pure computation, there is no reason to send it anywhere. Faster, free, and private.

Building is the easy half. Getting people to install the app, and to come back, turned out to be harder than making it.

A worked-out concept made the decisions for me. You don't have to write, throw most of it away, no streak, the AI does not compose. Every later question — where the ad goes, whether videos get a watermark — had an answer waiting.

What's next

  • More cassettes. Lo-fi and Dreamcore are out, and each new tape unlocks as you finish the ones before it. More genres are next.
  • Growing the DSP library. The engine is open-sourced and I want to add more building blocks other KMP developers can use.

Engineering devlog: What It Took to Ship One Kotlin App to Both Stores

Built With

Share this project:

Updates

Submission history