Inspiration

Music streaming today still makes you do the work — pick a genre, scroll a mood playlist someone else curated, or type a search and hope. We wanted something that just understood what you're feeling in plain words. Typing "studying at 2am, kind of nostalgic" should be enough — the app should do the rest. That's the whole idea behind Lamia-X.

What it does

Lamia-X is an AI-powered music player that takes a short description of your current vibe and instantly builds a listening session around it. Type something like "post workout" or "rainy day, feeling low" and the app:

  • Uses AI to translate your mood into music tags
  • Pulls real, royalty-free tracks that match those tags
  • Starts playing instantly — no signup, no scrolling
  • Lets you save favorites and revisit your mood history
  • Remembers what you've searched so you can jump back into an old vibe

No logins, no paywalls, no friction — you land on the page and you're listening within seconds.

How we built it

  • Frontend: Next.js + Tailwind, UI scaffolded with v0 and refined by hand
  • AI layer: Gemini 1.5 Flash converts natural language mood descriptions into structured music tags
  • Music source: Jamendo API for real, legal, royalty-free tracks with direct streaming
  • Audio playback: Native HTML5 audio wired to a custom player UI (play/pause, seek, skip, queue)
  • Analytics: Novus.ai installed to track real usage — moods searched, session length, skip behavior
  • Hosting: Deployed on Vercel with serverless API routes handling the AI and music-fetch logic
  • Mobile: Fully responsive layout with a custom bottom-nav and slide-up drawers for mood history and saved tracks on smaller screens

Challenges we ran into

  • Getting Jamendo's tag-matching to return varied results — early versions kept surfacing the same popular tracks regardless of mood, so we added randomized offsets and shuffling to keep every search feeling fresh
  • Wiring up a fully custom audio player from scratch — syncing play state, progress bar, and skip/previous logic with a real <audio> element took more care than expected
  • Making the previous button actually go to the previous track instead of just restarting — needed a proper play history stack
  • Squeezing a three-column desktop layout into something that works cleanly on a phone screen without losing functionality

Accomplishments that we're proud of

  • A genuinely working end-to-end product — type a mood, get real music, no mock data anywhere
  • Built entirely on free-tier tools (Gemini free tier, Jamendo free API, Vercel free hosting) — zero cost
  • Clean, distinctive UI that doesn't look like a generic music app template
  • Fully responsive — works as well on mobile as it does on desktop

What we learned

  • How to chain two different APIs (an LLM and a music catalog) into one smooth user-facing feature
  • The importance of randomization in recommendation systems — without it, "personalized" results just feel repetitive
  • Building a custom audio player is harder than it looks — state syncing between UI and the actual audio element matters a lot
  • Designing mobile-first patterns (bottom nav + drawers) for a layout originally built for desktop

What's next for Lamia-X Player

  • Persistent storage so saved tracks and mood history survive a page refresh (currently session-based)
  • Smarter recommendations that learn from skip/save behavior over time, not just the current mood
  • Shareable mood playlists — generate a link so others can listen to your exact vibe
  • A "blend" mode that mixes two moods together (e.g. "focused but a little sad")

Built With

  • gemini-api
  • jamendo-api
  • next.js
Share this project:

Updates