https://github.com/targter/spotify-app
https://github.com/targter/spotify-app
javascript react reactjs redux shazamcore-api spline spotify-api tailwindcss websocket
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/targter/spotify-app
- Owner: Targter
- Created: 2025-06-27T16:17:55.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-04T17:59:38.000Z (12 months ago)
- Last Synced: 2025-07-13T05:01:46.054Z (12 months ago)
- Topics: javascript, react, reactjs, redux, shazamcore-api, spline, spotify-api, tailwindcss, websocket
- Language: JavaScript
- Homepage: https://musicify.abhaybansal.site/
- Size: 1020 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Musicify - A Premium Music Discovery Platform
#

*Screenshot of the responsive navbar featuring search, playlists, liked songs, and user profile options.*
## Overview
Musicify is a modern, feature-rich music discovery application built with React, Redux, and the Shazam Core API. Designed to deliver a premium, Spotify-inspired experience, Musicify allows users to explore songs, artists, and albums, create and manage playlists, like their favorite tracks, and enjoy a visually stunning, responsive interface. With a sleek frosted glass UI, smooth GSAP animations, and a music-wave aesthetic, Musicify is optimized for seamless performance across all devices, from mobile phones to desktops.
## Features
- **Enhanced Search Functionality**:
- Search for songs, artists, and albums using an intuitive, debounced search bar powered by the Shazam Core API.
- Filter results by type (all, track, artist, album) with dynamic query formatting for precise results.
- Display real-time search results with artist details, album artwork, and track previews.
- **Playlist Management**:
- Create, edit, and delete custom playlists with a user-friendly modal interface.
- Add or remove songs from playlists with a single click via a context menu.
- View all playlists in a dedicated library view, with track counts and seamless navigation.
- **Music Playback**:
- Play song previews with a responsive player, featuring play/pause controls and a dynamic equalizer visualizer for the current track.
- Queue tracks from playlists or search results for continuous playback.
- Add recently played tracks to a dedicated history for quick access.
- **Like Songs**:
- Save favorite tracks to a "Liked Songs" playlist with a single click.
- Toggle likes with a smooth GSAP animation, visually indicating favorited tracks.
- **Responsive Design**:
- Fully responsive UI optimized for mobile, tablet, and desktop devices.
- Frosted glass effects, gradient accents, and music-wave animations for a premium aesthetic.
- **Dynamic Visuals**:
- GSAP-powered animations for track rows, playlist menus, and sidebar interactions, creating a fluid, engaging experience.
- Wave-like oscillations for the currently playing track, enhancing the music-inspired theme.
- **Library and Personalization**:
- Explore recently played tracks, liked songs, and custom playlists in a unified library view.
- Personalized greeting ("Good Morning," "Good Afternoon," or "Good Evening") based on the time of day.
## Tech Stack
- **Frontend**: React, Redux Toolkit, Tailwind CSS
- **Animations**: GSAP (GreenSock Animation Platform)
- **API**: Shazam Core API (via RapidAPI)
- **Icons**: Lucide React
- **State Management**: Redux for managing player state, playlists, and liked songs
- **Build Tools**: Vite for fast development and production builds
- **Dependencies**: Axios for API requests, React Router for navigation
## Installation
To set up Musicify locally, follow these steps:
1. **Clone the Repository**:
```bash
git clone https://github.com/Targter/SpotifyClone1-Celebal.git
cd musicify
```
2. **Install Dependencies**:
```bash
npm install
```
3. **Set Up Environment Variables**:
Create a `.env` file in the root directory and add your Shazam Core API key:
```env
VITE_RAPIDAPI_KEY=your-rapidapi-key
VITE_RAPIDAPI_HOST=shazam-core.p.rapidapi.com
```
4. **Run the Development Server**:
```bash
npm run dev
```
The app will be available at `http://localhost:5173`.
5. **Build for Production**:
```bash
npm run build
```
## Usage
1. **Search for Music**:
- Use the search bar in the "Search" view to find songs, artists, or albums.
- Filter results by selecting the desired type (track, artist, album).
2. **Create and Manage Playlists**:
- Navigate to the sidebar and click "Create Playlist" to open the modal.
- Add songs to playlists via the context menu (three dots) on any track row.
- Remove songs from playlists or delete playlists in the library view.
3. **Play Music**:
- Click a track row to play its preview. The row highlights with a green gradient and shows an equalizer for the current track.
- Pause playback using the pause button that appears on hover.
4. **Like Songs**:
- Click the heart icon on a track row to add or remove it from "Liked Songs."
- Liked songs are accessible in the library view under "Liked Songs."
5. **Explore Views**:
- **Home**: View recently played tracks, featured tracks, and personalized recommendations.
- **Search**: Browse search results or explore genres and albums.
- **Library**: Access playlists, liked songs, and manage your music collection.
## Project Structure
```plaintext
musicify/
├── public/
│ ├── search.png # Navbar screenshot
│ └── favicon.ico
├── src/
│ ├── components/
│ │ ├── Sidebar.jsx # Responsive sidebar with navigation and playlist management
│ │ ├── MainContent.jsx # Main content area with home, search, and library views
│ │ ├── TrackRow.jsx # Track row component with playback and playlist options
│ │ ├── TrackCard.jsx # Card component for recently played and recommended tracks
│ │ ├── EnhancedSearchBar.jsx # Debounced search bar for querying the Shazam API
│ │ ├── ArtistView.jsx # Artist details view
│ │ ├── GenreGrid.jsx # Genre browsing grid
│ │ ├── AlbumGrid.jsx # Album browsing grid
│ │ └── Library.jsx # Library view for playlists and liked songs
│ ├── store/
│ │ ├── slices/
│ │ │ ├── playerSlice.js # Redux slice for player state
│ │ │ └── playlistSlice.js # Redux slice for playlists and liked songs
│ │ └── store.js # Redux store configuration
│ ├── services/
│ │ └── ShazamCore.js # API service for Shazam Core integration
│ ├── hooks/
│ │ └── useTypedSelector.js # Custom hook for typed Redux state
│ ├── App.jsx # Main app component
│ ├── index.jsx # Entry point
│ └── index.css # Global Tailwind CSS styles
├── .env # Environment variables
├── package.json # Project dependencies and scripts
└── README.md # This file
```
## Contributing
Contributions are welcome! To contribute to Musicify:
1. Fork the repository.
2. Create a new branch (`git checkout -b feature/your-feature`).
3. Make your changes and commit (`git commit -m "Add your feature"`).
4. Push to your branch (`git push origin feature/your-feature`).
5. Open a pull request with a detailed description of your changes.
Please ensure your code follows the project's ESLint and Prettier configurations.
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
## Acknowledgements
- **Shazam Core API** for providing music data.
- **React** and **Redux Toolkit** for a robust frontend and state management.
- **GSAP** for smooth, music-inspired animations.
- **Lucide React** for modern, lightweight icons.
- **Tailwind CSS** for rapid, responsive styling.
## Contact
For questions, suggestions, or feedback, please open an issue on the [GitHub repository]https://github.com/Targter/SpotifyClone1-Celebal.git) or contact the project maintainer at bansalabhay00@gmail.com].
---
*Built with 🎵 by the Musicify Team*