Your AI Music Passion Co-Pilot – Track, Rival, Create, and Own Your Sonic Legacy.
A submission for the DEV Weekend Challenge: Passion Edition.
The DEV Weekend Challenge asked us to build something inspired by passion. What drives more passion than music? It fuels late-night coding sessions, sparks fierce debates over the best genres, and connects fandoms across the world.
MeloForge is built for the obsessed listener. It takes your raw music listening data and transforms it into a visual, interactive, and shareable experience. From tracking your daily listening habits to generating AI-fueled "Genre Rivalries", MeloForge proves your devotion to the music you love.
- 📊 Passion Dashboard: Visualize your genre distribution, top artists, and listening trends on an intuitive dashboard.
- 🤖 Ask MeloForge (Google Gemini): Chat directly with your listening history. Ask your AI co-pilot, "Compare my hip-hop vs electronic passion this month" or "What should I listen to next?"
▶️ Smart Song Suggestions: Get personalized song recommendations based on your habits, playable instantly via a native YouTube embed.- ⚔️ Genre Rivalry Arena: Pit your top two genres against each other! Watch them battle it out with AI-generated hype banter, fully voiced by ElevenLabs.
- ⛓️ Passion Proof NFTs (Solana): Cement your musical legacy on the blockchain. Connect your Phantom wallet and mint a permanent 1-of-1 Metaplex Core NFT badge. Your dynamic stats and custom 3D artwork are secured on decentralized Arweave storage via Irys, proving your devotion.
- 📸 Spotify Wrapped Vision: Skip the manual entry. Upload a screenshot of your Spotify Wrapped and let Gemini Vision automatically extract and log your stats.
We went all-in on the hackathon prize categories, integrating all four featured technologies into a single, cohesive application:
Google Gemini is the brain of MeloForge:
- Natural Language Chat: Powers the "Ask MeloForge" feature, converting natural queries into data-driven insights.
- Vision Extraction: Processes user uploads of Spotify Wrapped screenshots to automatically extract text and log tracks.
- Creative Generation: Scripts the intense, personalized banter for the Genre Rivalry Arena.
All user listening data is ingested and heavily queried via Snowflake. From generating the Passion Score to aggregating daily listening trends and identifying top artists for the dashboard charts, Snowflake serves as the robust analytical backbone.
Reading stats is cool, but hearing them is better. We used the ElevenLabs API to breathe life into the Genre Rivalries. When you hit "Generate Hype Recap", ElevenLabs dynamically voices the Gemini-scripted banter, turning a simple chart into a high-energy stadium showdown.
Passion deserves to be immortalized. We deeply integrated the @metaplex-foundation/umi framework and Metaplex Core to allow users to mint a true 1-of-1 NFT. By connecting a Phantom wallet on Devnet, the app automatically uploads a custom 3D badge image and dynamic JSON metadata (containing the user's top genre and listening stats) to decentralized Arweave storage using the Irys network. It then fires a highly optimized Core create instruction via a dedicated Helius RPC to mint the NFT directly into the user's wallet collectibles tab.
Additional Tech: Next.js 15 (App Router), TypeScript, TailwindCSS, Prisma, PostgreSQL (Neon).
To run MeloForge locally, follow these steps:
git clone https://github.com/your-username/meloforge.git
cd meloforgenpm installCreate a .env file in the root directory and add the following keys:
# Database
DATABASE_URL="your_postgresql_url"
# APIs
GEMINI_API_KEY="your_google_gemini_key"
ELEVENLABS_API_KEY="your_elevenlabs_key"
ELEVENLABS_VOICE_ID="your_preferred_voice_id"
# Snowflake
SNOWFLAKE_ACCOUNT="your_account_id"
SNOWFLAKE_USER="your_username"
SNOWFLAKE_PASSWORD="your_password"
SNOWFLAKE_DATABASE="MELOFORGE_DB"
SNOWFLAKE_SCHEMA="PUBLIC"
SNOWFLAKE_WAREHOUSE="COMPUTE_WH"
# Auth
JWT_SECRET="your_super_secret_jwt_key"Run Prisma migrations to set up your PostgreSQL auth tables:
npx prisma migrate dev --name init(Note: Snowflake tables are managed via the /api/setup-db endpoint inside the app).
npm run devOpen http://localhost:3000 to view the application in your browser. Ensure your Phantom wallet is set to Devnet to test the Solana minting feature!
Built with ❤️ for the DEV Weekend Challenge.