An open API service indexing awesome lists of open source software.

https://github.com/cyrus-nodejs/soundplanet

Music Streaming App
https://github.com/cyrus-nodejs/soundplanet

authentication authorization cloudinary cors fullstack-development mern-project redux-toolkit state-management stripe-payments

Last synced: 12 months ago
JSON representation

Music Streaming App

Awesome Lists containing this project

README

          

# Music App - MERN Stack

## Overview
This is a full-stack Music App built using the **MERN (MongoDB, Express, React, Node.js)** stack. The app allows users to explore music content, subscribe to premium plans, create playlists, discover artists, and browse genres. This app is designed to provide a seamless music streaming experience.

### Features:
- **User Authentication**: Secure user login/signup with JWT token authentication.
- **Subscriptions**: Users can subscribe to different music plans (Free, Premium).
- **Playlists**: Create, update, delete, and share custom playlists.
- **Artists & Genres**: Browse music by artist or genre.
- **Search**: Search for songs, artists, and albums.
- **Music Player**: In-app music player for streaming songs.
- **Responsive UI**: Mobile-friendly design built with React.
- **Admin Panel**: Admin users can manage artists, albums, songs, and subscriptions.

## Tech Stack
- **Frontend**: React.js, Redux for state management, React Router for navigation, Material-UI for design components.
- **Backend**: Node.js, Express.js, JWT for authentication, and RESTful API.
- **Database**: MongoDB with Mongoose for object data modeling.
- **Authentication**: JSON Web Tokens (JWT) for secure login.

## Installation

### Prerequisites
- Node.js >= 14.0
- MongoDB (local or cloud instance)

### Setup

1. Clone the repository:

```bash
git clone https://github.com/cyrus-nodejs/soundplanet.git
cd music-app
Install dependencies for both frontend and backend:

bash
Copy
# Install backend dependencies
cd backend
npm install

# Install frontend dependencies
cd ../frontend
npm install
Configure environment variables:

Create a .env file in the backend folder with the following variables:
bash
Copy
MONGO_URL=
TOKEN_KEY=
Run the application:

bash
Copy
# In the backend folder, run:
npm run dev

# In the frontend folder, run:
npm start
Visit http://localhost:3000 to access the app.

Features
1. User Subscription
Users can choose between a free or premium subscription. Premium users have access to exclusive content, ad-free streaming, and unlimited skips.

2. Playlists
Users can create and manage playlists by adding songs from their library. They can share playlists with friends and make them public or private.

3. Artists and Genres
Discover new artists and browse music based on genres. Each artist has a dedicated page with their albums and tracks.

4. Music Streaming
In-app streaming for seamless playback. The music player supports features like shuffle, repeat, and volume control.

5. Search Functionality
Search for your favorite songs, albums, or artists. The search results will dynamically update as you type.

6. Admin Panel
Admins have the ability to upload new music, manage users, and handle subscriptions.

API Endpoints
User Routes
POST /api/register: Register a new user
POST /api/login: User login (returns JWT token)
GET /api/: Get the currently logged-in user’s details

Music Routes
GET /api/artists: Get a list of all artists
GET /api/genres: Get all available genres
GET /api/search: Search for songs
POST /api/createplaylist: Create a new playlist
GET /api/playlist/:id: Get a playlist by ID
Subscription Routes
POST /api/currentsub: Subscribe to a premium plan

Contributing
Contributions are welcome! Please fork the repo and submit pull requests for bug fixes, new features, or improvements.

License
This project is licensed under the MIT License - see the LICENSE file for details.

Contact
For any inquiries or issues, feel free to open an issue on GitHub or contact the project owner.

vbnet
Copy

This README provides a high-level description of your MERN-based music app, along with its features, tech stack, installation instructions, and API endpoint details. You can adapt it to fit your app's specific features.