Skip to content

shreejaybhay/jammify

Repository files navigation

Jammify Logo

Jammify

🎢 Stream Music with Style

A modern music streaming web application built for learning and experimentation

⚠️ Educational Disclaimer
Jammify is a non-commercial, educational project created to demonstrate modern full-stack web development techniques.
It is not affiliated with or endorsed by any music provider.


Next.js React MongoDB Mongoose Tailwind CSS v4 Framer Motion shadcn/ui


πŸš€ Live Demo β€’ πŸ’» Source Code β€’ πŸ“§ Contact


✨ About

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

🎯 Core Features

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

Additional Highlights

  • 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

🧱 Tech Stack

Frontend

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

Backend

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

Search & Matching

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)

APIs Integrated

API Usage
JioSaavn Music streaming data (educational)
Genius Lyrics & song metadata
Spotify Playlist importing & metadata
Vercel Analytics Traffic & speed insights

DevOps & Tooling

Tool Usage
Vercel Hosting & deployment
ESLint Code linting
JavaScript (ES2022+) Language (with jsconfig.json path aliases)
PWA Web app manifest & service worker ready

πŸ“ Project Structure

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

πŸ§ͺ Scripts

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

πŸ—ΊοΈ Routes Overview

Public Routes

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

πŸ“Έ Screenshots

πŸ–₯️ Desktop

Dashboard Player Full-Screen Lyrics
Dashboard Player Full Screen Lyrics

πŸ“± Mobile

# Screen Preview
1 🏠 Home Home
2 ❀️ Liked Songs Liked
3 🎡 Full-Screen Player Fullscreen
4 πŸ“ Lyrics Lyrics
5 πŸ“‹ Playlist Playlist
6 πŸ” Search Search
7 πŸ“š Library Library
8 βž• Create Create
9 πŸ‘€ Profile Profile

πŸ“„ Documentation

File Description
AUTH_IMPLEMENTATION.md Authentication architecture, flow & models
FEATURES.md Detailed feature list
MATCHER_ALGORITHM.md Track matching algorithm documentation
music_recommendation_system.md Recommendation engine design

⚠️ 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

πŸ“„ License

This repository is not licensed for commercial use.
All rights are reserved by the author.


Built with ❀️ for learning, experimentation, and music lovers

⭐ Star the repository β€’ 🐦 GitHub Profile

About

Jammify is a modern, minimal, high-quality music streaming experience powered by clean UI, smooth animations, and fast search using the JioSaavn API.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors