Jammify is a feature-rich music streaming platform built with Next.js 16, React 19, and MongoDB. It demonstrates modern full-stack development with:
Next.js App Router with route groups, layouts, and dynamic routes
NextAuth.js with JWT sessions and OAuth (Google, GitHub)
shadcn/ui component library built on Radix UI primitives
Tailwind CSS v4 with inline @theme configuration
70+ theme variants (dark/light pairs)
Fuzzy search using Fuse.js, Levenshtein, and Natural.js
Framer Motion animations and transitions
JioSaavn API for music streaming data (educational use)
Genius API for lyrics and metadata
Spotify integration for playlist import
PWA support with installable manifest
Feature
Description
π§ Music Streaming
Stream 50M+ songs via JioSaavn integration
π Authentication
Email/password, Google & GitHub OAuth via NextAuth
π 70+ Themes
Wide range of dark and light theme variants
π± Responsive Design
Adaptive layout across desktop, tablet, and mobile
π¨ shadcn/ui Components
54+ accessible UI components built on Radix
π Smart Search
Fuzzy search with typo-tolerant matching
π Personal Library
Like songs, albums, artists, and playlists
π Playlist Management
Create, import, and manage custom playlists
π΅ Lyrics Search
Find songs by lyrics with fuzzy matching
π» Radio Stations
Interactive map-based radio station discovery
π¬ Community Hub
Posts, comments, and social interaction
π Recommendations
Personalized AI-generated music mixes
π Analytics
User activity tracking and daily active users
β¬οΈ Downloads
Client-side song download with metadata embedding
π§© PWA Ready
Installable as a progressive web app
πΊοΈ Sitemap
Dynamic SEO sitemap generation
Full-screen music player with rich visualizations
Recently played tracking across playlists
Mobile-optimized UI with bottom navigation
Sonner toast notifications
Performance monitoring utilities
Admin dashboard with role-based access
Email verification flow via Nodemailer
Password reset with secure tokens
Technology
Purpose
Next.js 16 (App Router)
Framework with server components, layouts, & route groups
React 19
UI library
Tailwind CSS v4
Utility-first CSS with inline @theme
shadcn/ui & Radix UI
Accessible, unstyled component primitives
Framer Motion
Declarative animations & gestures
Lucide Icons
Consistent icon set
React Hook Form + Zod
Form validation & schema parsing
Recharts
Charts & data visualization
Leaflet / react-leaflet
Interactive maps for radio stations
Embla Carousel
Lightweight carousel component
Sonner
Toast notifications
next-themes
Theme switching
Vaul
Drawer component
CMDK
Command palette
html-to-image / html2canvas
DOM screenshot & canvas rendering
Technology
Purpose
NextAuth.js
Authentication with JWT sessions & OAuth providers
MongoDB + Mongoose 9
NoSQL database & ODM with dual connections
bcryptjs
Password hashing
jsonwebtoken
JWT token generation
Nodemailer
Email verification & password reset
sharp
Image processing
Technology
Purpose
Fuse.js
Client-side fuzzy search
Natural.js
Natural language processing
String Similarity
String comparison metrics
Fastest Levenshtein
Optimized edit-distance algorithm
Custom Matcher
Track matching (Spotify/YouTube β JioSaavn)
API
Usage
JioSaavn
Music streaming data (educational)
Genius
Lyrics & song metadata
Spotify
Playlist importing & metadata
Vercel Analytics
Traffic & speed insights
Tool
Usage
Vercel
Hosting & deployment
ESLint
Code linting
JavaScript (ES2022+)
Language (with jsconfig.json path aliases)
PWA
Web app manifest & service worker ready
src/
βββ app/ # Next.js App Router
β βββ (auth)/ # Auth pages (login, signup, reset-password, etc.)
β β βββ login/
β β βββ signup/
β β βββ forgot-password/
β β βββ verify-email/
β βββ music/ # Authenticated music app
β β βββ page.jsx # Dashboard / Discover home
β β βββ search/
β β βββ favorites/
β β βββ library/
β β βββ playlist/[id]/
β β βββ playlists/
β β βββ album/[id]/
β β βββ artist/[id]/
β β βββ song/[id]/
β β βββ radio/
β β βββ chat/
β β βββ discover/ # Sub-routes (genres, charts, podcasts, etc.)
β β βββ profile/
β βββ api/ # 56+ API route handlers
β β βββ auth/ # NextAuth + custom auth endpoints
β β βββ playlists/
β β βββ liked-songs/
β β βββ liked-albums/
β β βββ liked-artists/
β β βββ liked-playlists/
β β βββ community/ # Posts & comments
β β βββ recommendations/
β β βββ analytics/
β β βββ genres/
β β βββ sections/
β β βββ rating/
β β βββ spotify-playlists/
β β βββ search-lyrics/
β β βββ download/
β β βββ proxy/
β βββ layout.js
β βββ sitemap.js
βββ components/ # React components
β βββ ui/ # 54 shadcn/ui components
β βββ music/ # Music-specific components
β βββ playlists/ # Playlist dialogs
β βββ analytics/ # Activity trackers
βββ contexts/
β βββ music-player-context.jsx # Global player state
βββ hooks/ # Custom hooks (9)
βββ lib/ # Utilities (14 modules)
β βββ mongodb.js # DB connection (cached)
β βββ mongodbPlaylists.js # Secondary DB connection
β βββ matcher.js # Track matching algorithm
β βββ recommendations.js # Mix recommendation engine
β βββ themes.js # 70+ theme definitions
β βββ cache.js # In-memory TTL cache
β βββ email.js # Nodemailer service
β βββ spotify.js # Spotify API helper
β βββ clientDownload.js # M4A download with metadata
β βββ utils.js # cn() utility
βββ models/ # 15 Mongoose models
βββ data/ # Static data (genres)
βββ middleware.js # Route protection
Script
Description
npm run dev
Start Next.js development server
npm run build
Production build
npm start
Start production server
npm run lint
Run ESLint
npm run create-indexes
Create MongoDB indexes
Path
Description
/
Landing page (Hero, Features, Reviews, FAQ)
/login
Sign in
/signup
Create account
/forgot-password
Password reset request
/reset-password
Set new password
/verify-email
Email verification
/reviews
Public reviews
/features
Feature showcase
Authenticated Routes (/music/*)
Path
Description
/music
Dashboard / Discover home
/music/search
Search songs, albums, artists
/music/favorites
Liked songs
/music/library
Personal library
/music/playlists
User playlists list
/music/playlists/[id]
Playlist detail
/music/album/[id]
Album detail
/music/artist/[id]
Artist detail
/music/song/[id]
Song detail
/music/radio
Radio stations with map
/music/chat
Community hub
/music/discover
Music discovery
/music/discover/genres
Browse genres
/music/discover/top-charts
Top charts
/music/discover/top-hits
Top hits
/music/discover/new-releases
New releases
/music/discover/podcasts
Podcasts
/music/discover/community
Community playlists
/music/profile
User profile
/music/settings
User settings
Dashboard
Player
Full-Screen
Lyrics
#
Screen
Preview
1
π Home
2
β€οΈ Liked Songs
3
π΅ Full-Screen Player
4
π Lyrics
5
π Playlist
6
π Search
7
π Library
8
β Create
9
π€ Profile
β οΈ Legal & Usage Disclaimer
This project is strictly for educational and portfolio purposes
No music, lyrics, or media files are hosted directly
All audio and metadata are accessed via public third-party APIs
This project must not be used commercially
This repository is not licensed for commercial use .
All rights are reserved by the author.