Tempo Tunes
Set a tempo, pick your genres, and get a playlist that locks to your pace. Or give it a shape: rise, peak, or fade. Built on 1.4+ million verified tracks and growing every minute, live on the App Store and Google Play.
Music has a tempo. So does everything you do. I ride mountain bikes and snowboard, and I wanted music that matches the pace of the ride. Every workout playlist I tried drifted all over the tempo map, one song at 165 BPM, the next at 92, and the flow died with it. So I built Tempo Tunes: set a BPM, pick the genres you actually like, and get a playlist where every song matches it.
The app was the easy part. The data was the real project. Public BPM sources are a mess: half-time and double-time confusion, dead APIs, licensing walls. And in November 2024, Spotify deprecated the Audio Features API, the tempo data every BPM app leaned on. Most people would have stopped there. I decided to stop depending on someone else's tempo data instead.
So Tempo Tunes runs on its own database. 1.4+ million tracks with verified BPM across more than 90 genres, built through seeding and crowd-sourced uploads, re-analyzed on a nightly pipeline, and growing every minute. And shipping it meant really shipping it. I registered as an Apple and a Google Play developer, took the app through both review processes, and put it in both stores.
Own the data
The BPM database is the product's spine. Tracks come in through seeding and crowd-sourced uploads, land in SQLite with a verified, cross-checked tempo, get re-analyzed on a nightly pipeline, and resolve to your streaming service when a playlist is built. 1.4+ million tracks now, growing every minute without me touching it, and no third party can switch it off.
One app, three surfaces
One monorepo holds the Expo app for iOS and Android, the Next.js site at tempo-tunes.com, and the Express API that serves them both. Mobile is the source of truth for interaction patterns and web follows it. I run a standing parity audit against that rule. The last one logged 62 findings, each citing file and line on both sides, and they get burned down in waves.
A tape deck, on purpose
Every playlist you make lands on your shelf drawn as a cassette. Spines with handwritten labels, a full-screen view with a deck and a preview player, and a Tempo-Heat tag that tells you how hot the mix runs. Your history stays on your device, and when a playlist is ready to travel it saves straight to Apple Music, Tidal, or YouTube Music. Spotify saving is built and waiting in invite-only beta: their rules ask for 250,000 monthly users before an app can open it to everyone, so every download gets us closer.
Shipping is the feature
Store listings and keywords, Apple's privacy nutrition labels, Play's data safety form, a delete-account flow that works inside the app, review notes with a test account. Every detail got the same care as the UI, because all of it is the product. Both stores approved it, and version 1.1.1 is what you can download today.
The whole app is styled after old school cassettes, J-card inserts and all, in a throwback brown-and-gold palette borrowed from the classic San Diego Padres. Everything touchable is yellow. Data that should feel energetic runs ember orange. And BPM itself gets a color scale, so tempo reads at a glance from cool blue at 60 to magenta past 190.
Righteous carries the two-tone wordmark, and the wave logo literally does the wave while a playlist builds. The cassette labels are cream with handwritten names, borrowed from the mixtape era on purpose.
| Token | Value | Use |
|---|---|---|
| accent | #FFC72C | Golden yellow. Buttons, tabs, anything touchable |
| accentHot | #FF6B35 | Ember orange. In-range BPM and live data |
| accentElectric | #F5FF00 | The raw CND yellow, saved for small moments |
| bg | #0a0a0a | Near-black app ground |
| tempo heat | 60 → 190+ | Blue to teal to gold to orange to red to magenta |
The shape of a ride
New in 1.1: a playlist has a shape, not just a number. Steady holds one tempo. Rise builds the whole way. Bell climbs to a peak and comes back down. Fade lands soft at the end of the day. Pick a chip and a Tempo-Heat gradient draws the path from start to finish before you commit.
The winding moment
Generating a playlist takes a few seconds, so the app makes it a moment. A cassette winds on screen with an ember glow while the playlist's label writes itself letter by letter, and the modal holds for five seconds minimum so the payoff always lands. Then it drops you inside the finished playlist.
Tempo-Heat
BPM maps to color across the whole app. The 60s run blue, the 130s go gold, the 150s burn orange, and 190 and up goes magenta. In a track list you can read the pace of a mix before you read a single title.
Listen for it
The BPM tab listens through the mic for a few seconds, names the song that is playing, and hands you its tempo. Search 7.5 million measured songs, or upload one of your own and two estimators check each other before the app calls the number verified. And every result ends the same way: one tap makes a playlist from that jam, with its tempo as the target.
Make
A target tempo with a tolerance control, strict or looser, a curve chip to shape the whole playlist, and an Obscure to Popular slider for deep cuts vs. hits. Genres sit on nine family shelves with live counts pulled from the catalog, plus an era filter. More than 90 genres deep, and not just the usual suspects. Tejano, chanson, anime, christmas. If a genre exists, I want it in there.
The shelf
Playlists live as cassette spines on a shelf. Tap one and it opens full screen with a deck, a preview player with a crossfade Mix mode, and every track's BPM colored in or out of range. No playlist is ever final: cut any track, let Refill top it back up with fresh matches, or Remix the whole recipe. Then listen straight through in the app, or save it to Apple Music, Tidal, or YouTube Music in one tap.
Nothing about you
An account is an email, or a Google or Apple sign-in, and that is all the app asks for. No ads, no tracking, no data sales. Playlist history stays on the device, and Delete Account sits right in the profile tab and actually deletes.
— Pick a pace, or a shape
— Make a playlist
— Shelve it, save it, tap the tempo
Every BPM app used to stand on one Spotify endpoint. This one stands on its own data, and it went all the way through both store fronts.
Spotify's Audio Features API, deprecated for new apps
An owned database, 1.4+ million verified tracks and growing
Google a list of 170 BPM songs and hope
A slider, four tempo curves, 90+ genres, and a verified tracklist
A web demo on a URL
Signed builds live on the App Store and Google Play
Live in both stores and on the web, built by one designer pairing with AI agents. The catalog keeps growing every night, and the reviews that matter most so far came from Apple and Google.
App stores approved and live
Tempo-verified tracks in an owned database, growing every minute
Genres on the shelves
Surfaces in one monorepo: iOS, Android, web
Findings in one mobile to web parity audit
Ads, trackers, or data sales
All of it. Product, brand, and UI. The cassette design language, the tempo database and the API behind it, the React Native app, the Next.js site, and the Express backend, built with agentic AI on a designer-coder foundation. Both store listings, both reviews, both launches.
Fortris Command
Want something like this?
Start a conversation→