├── .gitignore ├── README.md ├── client ├── .eslintrc.cjs ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── public │ ├── AlbumLogo.png │ ├── AuthIMG.png │ ├── LandingPageIMG.png │ ├── TunesLogo.png │ ├── TunesProfileBg.jpeg │ ├── alternateMusic.jpeg │ ├── dance.jpeg │ ├── hiphop.jpeg │ ├── index.html │ ├── pop.jpeg │ ├── rnb.jpeg │ ├── rock.jpeg │ └── sitemap.xml ├── src │ ├── About.jsx │ ├── App.jsx │ ├── Artist.jsx │ ├── Artists.jsx │ ├── Charts.jsx │ ├── Explore.jsx │ ├── Genre.jsx │ ├── Genres.jsx │ ├── Home.jsx │ ├── LandingPage.jsx │ ├── Login.jsx │ ├── NotFound.jsx │ ├── SearchHome.jsx │ ├── Signup.jsx │ ├── Theme.jsx │ ├── assets │ │ └── components │ │ │ ├── AppNavbar.jsx │ │ │ ├── ArtistCard.jsx │ │ │ ├── ChartCard.jsx │ │ │ ├── ControlledArtistsCarousel.jsx │ │ │ ├── ControlledChartsCarousel.jsx │ │ │ ├── ControlledGenresCarousel.jsx │ │ │ ├── FavCard.jsx │ │ │ ├── FavouriteSongs.jsx │ │ │ ├── FilterArtists.jsx │ │ │ ├── FilterCharts.jsx │ │ │ ├── FilterGenres.jsx │ │ │ ├── Footer.jsx │ │ │ ├── GenreCard.jsx │ │ │ ├── LikedSongs.jsx │ │ │ ├── Profile.jsx │ │ │ ├── SearchFavSongs.jsx │ │ │ ├── SearchLikedSongs.jsx │ │ │ ├── SearchProfile.jsx │ │ │ ├── SongCard.jsx │ │ │ └── UserNotFound.jsx │ ├── index.css │ └── main.jsx ├── vercel.json └── vite.config.js ├── package-lock.json ├── package.json └── server ├── index.js ├── models ├── Employee.js ├── artist.js ├── genre.js └── song.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Node.js dependencies 2 | node_modules/ 3 | client/node_modules/ 4 | server/node_modules/ 5 | 6 | # Logs 7 | logs/ 8 | *.log 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | 13 | # Runtime data 14 | pids/ 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Optional npm cache directory 20 | .npm 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | lib-cov/ 24 | 25 | # Coverage directory used by testing tools like istanbul 26 | coverage/ 27 | server/coverage/ 28 | client/coverage/ 29 | 30 | # Production build 31 | client/build/ 32 | client/dist/ 33 | server/dist/ 34 | 35 | # Miscellaneous 36 | .DS_Store 37 | *.pem 38 | 39 | # Environment variables 40 | .env 41 | client/.env 42 | server/.env 43 | 44 | # Vite files (client-side bundling) 45 | .vite 46 | 47 | # Tailwind generated files 48 | tailwind.config.js 49 | 50 | # Ignore any local IDE config files (optional) 51 | .vscode/ 52 | .idea/ 53 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TunesApp 2 | Visit: https://tunes-music-app.vercel.app/ 3 | -------------------------------------------------------------------------------- /client/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { browser: true, es2020: true }, 4 | extends: [ 5 | 'eslint:recommended', 6 | 'plugin:react/recommended', 7 | 'plugin:react/jsx-runtime', 8 | 'plugin:react-hooks/recommended', 9 | ], 10 | ignorePatterns: ['dist', '.eslintrc.cjs'], 11 | parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, 12 | settings: { react: { version: '18.2' } }, 13 | plugins: ['react-refresh'], 14 | rules: { 15 | 'react/jsx-no-target-blank': 'off', 16 | 'react-refresh/only-export-components': [ 17 | 'warn', 18 | { allowConstantExport: true }, 19 | ], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /client/README.md: -------------------------------------------------------------------------------- 1 | # React + Vite 2 | 3 | This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. 4 | 5 | Currently, two official plugins are available: 6 | 7 | - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh 8 | - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh 9 | -------------------------------------------------------------------------------- /client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 15 | 16 | 17 | Tunes 18 | 19 | 20 |
21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@chakra-ui/icons": "^2.1.1", 14 | "@chakra-ui/react": "^2.8.2", 15 | "@emotion/react": "^11.13.0", 16 | "@emotion/styled": "^11.13.0", 17 | "axios": "^1.7.2", 18 | "bootstrap": "^5.3.3", 19 | "framer-motion": "^11.3.21", 20 | "react": "^18.3.1", 21 | "react-bootstrap": "^2.10.4", 22 | "react-dom": "^18.3.1", 23 | "react-icons": "^5.2.1", 24 | "react-router-dom": "^6.24.1", 25 | "react-slick": "^0.30.2", 26 | "slick-carousel": "^1.8.1" 27 | }, 28 | "devDependencies": { 29 | "@types/react": "^18.3.3", 30 | "@types/react-dom": "^18.3.0", 31 | "@vitejs/plugin-react": "^4.3.1", 32 | "eslint": "^8.57.0", 33 | "eslint-plugin-react": "^7.34.2", 34 | "eslint-plugin-react-hooks": "^4.6.2", 35 | "eslint-plugin-react-refresh": "^0.4.7", 36 | "tailwindcss": "^3.4.7", 37 | "vite": "^5.3.1" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /client/public/AlbumLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/AlbumLogo.png -------------------------------------------------------------------------------- /client/public/AuthIMG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/AuthIMG.png -------------------------------------------------------------------------------- /client/public/LandingPageIMG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/LandingPageIMG.png -------------------------------------------------------------------------------- /client/public/TunesLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/TunesLogo.png -------------------------------------------------------------------------------- /client/public/TunesProfileBg.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/TunesProfileBg.jpeg -------------------------------------------------------------------------------- /client/public/alternateMusic.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/alternateMusic.jpeg -------------------------------------------------------------------------------- /client/public/dance.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/dance.jpeg -------------------------------------------------------------------------------- /client/public/hiphop.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/hiphop.jpeg -------------------------------------------------------------------------------- /client/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | Your App Title 10 | 11 | 12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /client/public/pop.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/pop.jpeg -------------------------------------------------------------------------------- /client/public/rnb.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/rnb.jpeg -------------------------------------------------------------------------------- /client/public/rock.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amithkumar10/TunesMusicApp/976346d4eca4b0d970f9aa1b8ad60150cfc2c9c6/client/public/rock.jpeg -------------------------------------------------------------------------------- /client/public/sitemap.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | https://tunes-music-app.vercel.app/ 6 | 2025-04-06T13:19:45+01:00 7 | 1.0 8 | 9 | 10 | https://tunes-music-app.vercel.app/register 11 | 2025-04-06T13:19:45+01:00 12 | 1.0 13 | 14 | 15 | https://tunes-music-app.vercel.app/login 16 | 2025-04-06T13:19:45+01:00 17 | 1.0 18 | 19 | 20 | https://tunes-music-app.vercel.app/about 21 | 2025-04-06T13:19:45+01:00 22 | 1.0 23 | 24 | 25 | https://tunes-music-app.vercel.app/explore 26 | 2025-04-06T13:19:45+01:00 27 | 1.0 28 | 29 | 30 | https://tunes-music-app.vercel.app/genres 31 | 2025-04-06T13:19:45+01:00 32 | 1.0 33 | 34 | 35 | https://tunes-music-app.vercel.app/artists 36 | 2025-04-06T13:19:45+01:00 37 | 1.0 38 | 39 | 40 | https://tunes-music-app.vercel.app/artistprofile 41 | 2025-04-06T13:19:45+01:00 42 | 1.0 43 | 44 | 45 | https://tunes-music-app.vercel.app/charts 46 | 2025-04-06T13:19:45+01:00 47 | 1.0 48 | 49 | 50 | https://tunes-music-app.vercel.app/unf 51 | 2025-04-06T13:19:45+01:00 52 | 1.0 53 | 54 | -------------------------------------------------------------------------------- /client/src/About.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { 3 | Box, 4 | Container, 5 | Heading, 6 | Text, 7 | VStack, 8 | HStack, 9 | Link, 10 | Center, 11 | useColorModeValue, 12 | Icon, 13 | } from "@chakra-ui/react"; 14 | import { FaGithub, FaLinkedin, FaInstagram } from "react-icons/fa"; 15 | import AppNavbar from "./assets/components/AppNavbar"; 16 | 17 | const About = () => { 18 | const cardBg = useColorModeValue("white", "gray.800"); 19 | const textColor = useColorModeValue("gray.800", "white"); 20 | const iconColor = useColorModeValue("gray.600", "gray.300"); 21 | 22 | return ( 23 | <> 24 | 25 | 31 | 32 |
33 | 41 | 42 | 43 | About This Website 44 | 45 | 46 | This web app is a platform where users can log in, upload 47 | their favorite songs, and search for friends' accounts. Users 48 | can like their friends' favorite songs, explore music through 49 | various genres, view the top charts, and listen to their 50 | favorite artists. Built using modern web technologies, it 51 | provides a seamless and interactive experience for music 52 | enthusiasts. 53 | 54 | 55 | Technologies Used: React, Node.js, Express, 56 | MongoDB, React-Bootstrap, Chakra UI 57 | 58 | 63 | 68 | ~Amithkumar P Radhakrishnan 69 | 70 | 71 | 72 | 73 | 74 | 78 | 79 | 80 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |
91 |
92 |
93 | 94 | ); 95 | }; 96 | 97 | export default About; 98 | -------------------------------------------------------------------------------- /client/src/App.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Signup from "./Signup"; 3 | import "bootstrap/dist/css/bootstrap.min.css"; 4 | import { BrowserRouter, Routes, Route } from "react-router-dom"; 5 | import Login from "./Login"; 6 | import Home from "./Home"; 7 | import NotFound from "./NotFound"; 8 | import LandingPage from "./LandingPage"; 9 | import SearchHome from "./SearchHome"; 10 | import About from "./About"; 11 | import UserNotFound from "./assets/components/UserNotFound"; 12 | import Explore from "./Explore"; 13 | import Genres from "./Genres"; 14 | import Genre from "./Genre"; 15 | import Artist from "./Artist"; 16 | import Artists from "./Artists"; 17 | import Charts from "./Charts"; 18 | 19 | const App = () => { 20 | return ( 21 | 22 | 23 | } /> 24 | } /> 25 | } /> 26 | } /> 27 | } /> 28 | } /> 29 | } /> 30 | } /> 31 | } /> 32 | } /> 33 | } /> 34 | } /> 35 | } /> 36 | } /> 37 | 38 | 39 | ); 40 | }; 41 | 42 | export default App; 43 | -------------------------------------------------------------------------------- /client/src/Artist.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import AppNavbar from "./assets/components/AppNavbar"; 3 | import { Box } from "@chakra-ui/react"; 4 | import Footer from "./assets/components/Footer"; 5 | 6 | const Artist = () => { 7 | return ( 8 | <> 9 | 10 | 11 | 12 |