Inspiration

Most mood-tracking apps ask you to pick a number — 3 out of 10, slightly anxious, moderately okay. It never felt right. Emotions aren't numerical. But a song always felt exact.

There's a specific melancholy in Bon Iver at 2am. A distinct kind of joy in whatever's playing when you're driving with the windows down. Music captures emotional nuance that no slider ever could.

That insight became MoodTune: what if your mood journal was a playlist? Instead of rating your feelings, you find the song that IS your feeling. Over time, that collection of songs becomes the most honest diary you've ever kept — and it tells you things about yourself that you never thought to write down.

What it does

MoodTune lets you log your emotional state each day by selecting a mood and pairing it with a real song from Spotify. Every entry is stored in a backend database with a full timestamp — so the app knows not just what you felt, but when.

From there, MoodTune builds a living picture of your emotional life across five core experiences:

— Log Mood: Choose from expressive mood tiles (happy, calm, anxious, melancholic, energized, nostalgic, sad), search Spotify in real time, preview tracks, and save your entry with an optional note.

— Timeline: A music-library-style scrollable history of every logged entry, with full Spotify playback controls on every card. One tap plays the exact song you were feeling that day.

— Insights: Mood trend charts, go-to song stats, streak tracking, and — the feature we're most proud of — a Time-of-Day Mood Correlation engine that reveals patterns like "You feel most anxious in the afternoon" or "Your calmest moments happen after 10pm."

— Discover: Browse songs other users logged for specific moods, and explore an interactive mood color wheel mapping emotions to music genres.

— Mood Mixtape: A shareable weekly summary card showing your top moods and songs — designed to be posted, sent, and remembered.

How we built it

We built MoodTune entirely using MeDo, structuring our work across focused conversations that each tackled a distinct layer of the app.

We started with a full requirements document — working through every page, every business rule, and every edge case before touching any code. MeDo helped us think through scenarios we hadn't anticipated: token expiry mid-session, insufficient data states for analytics, simultaneous playback conflicts across pages.

The tech stack: — Frontend: React, mobile-first responsive design with a music player aesthetic — deep purples, soft teals, warm ambers, glassmorphism song cards, and smooth slide-in animations — Auth: Spotify OAuth 2.0 authorization code flow, with access tokens and refresh tokens stored securely in Supabase — Playback: Spotify Web Playback SDK for full in-app playback control with a persistent bottom bar across all pages — Backend: Supabase (PostgreSQL) — storing mood entries, cached Spotify track metadata, user preferences, analytics queries, and streak calculations — APIs: Spotify Web API for real-time search and track metadata

MeDo guided us through every layer — from the OAuth redirect logic and token refresh flow, to the Supabase schema design, to the time-period bucketing logic for the mood correlation analysis.

Challenges we ran into

The Spotify OAuth flow was our steepest technical climb. Implementing the full authorization code flow — redirect handling, code-for-token exchange, secure storage in Supabase, and background token refresh — required getting every step exactly right. A single misconfigured redirect URI or an expired token that wasn't silently refreshed would break the entire app experience. MeDo helped us reason through the failure modes before we hit them in production.

Synchronized playback state across pages was the next big challenge. MoodTune has a persistent playback bar at the bottom of every screen, and keeping it in sync — knowing which song is playing, pausing the previous one when a new one starts, maintaining progress across page navigation — required careful state management that didn't come naturally.

Designing meaningful analytics with limited data was also harder than expected. We had to define thresholds carefully: the Time-of-Day Correlation only surfaces a pattern when a mood appears in a time period more than 40% of the time, so early users with only a handful of entries see encouraging empty states rather than misleading insights.

Finally, designing for music. A mood tracker is a productivity app. A music player is an emotional one. Making the UI feel genuinely like both — not a wellness app with a Spotify button tacked on — required real design intention at every screen.

Accomplishments that we're proud of

We're most proud of the Time-of-Day Mood Correlation engine. No other mood app we've seen tells you that you're consistently anxious on Tuesday afternoons, or that your calmest logs happen between 10pm and midnight. It turns MoodTune from a diary into a mirror — and it emerged entirely from a conversation with MeDo about what would make the Insights page genuinely surprising.

We're proud that full Spotify playback — not just 30-second previews, but real play/pause/skip/volume/progress controls via the Web Playback SDK — works seamlessly across every page of the app through a persistent bottom bar.

We're proud of the Mood Mixtape: a weekly shareable card that summarizes your emotional soundtrack, exportable as an image. It's small, but it's the feature most likely to make someone show the app to a friend.

And honestly, we're proud of the requirements document. Before writing a line of code, we mapped 40 acceptance criteria, 15+ edge cases, and a full page-by-page spec. MeDo made it feel natural to think at that level of rigor before building — and the app is better for it.

What we learned

We learned that the best way to use MeDo isn't to ask it to write code — it's to think with it first.

The conversations that produced the best results were the ones where we described a problem and asked MeDo to help us reason through it: What edge cases should we handle? What does this user feel when they see an empty state? What's the right threshold for surfacing a pattern in the data? That kind of thinking-out-loud collaboration consistently led to better outcomes than prompting for immediate output.

We also learned that Spotify integration is genuinely hard — and genuinely worth it. The Spotify Web Playback SDK requires a Premium account and careful initialization, and the OAuth flow has enough moving parts that it's easy to get wrong. But having real music — real album artwork, real audio, real search — transforms the emotional quality of the app in a way that mock data never could.

Finally, we learned something about mood tracking itself: when you're forced to find a song that matches your feeling, you think more carefully about what you're actually feeling. The constraint becomes the insight.

What's next for MoodTune

The roadmap splits into three directions.

First, smarter insights. We want to bring in Spotify's Audio Features API — valence, energy, danceability — and correlate those acoustic properties with mood over time. Did your music actually get sadder before you realized you were sad? MoodTune could tell you.

Second, social features. The Discover tab is just the beginning. We want collaborative mood playlists — a shared emotional soundtrack you build with friends — and the ability to react to someone's song choice with your own emotional response song.

Third, proactive care. Daily mood reminders, weekly trend summaries pushed as notifications, and an opt-in "low mood streak" alert that gently surfaces helpful resources when the pattern suggests someone might be struggling. Music is one of the most powerful emotional regulation tools humans have — MoodTune should know when to use it proactively.

The long-term vision: MoodTune becomes the emotional layer on top of your Spotify listening history.

Built With

Share this project:

Updates