A full-stack music player application with playlist management, built with modern web technologies. This application provides a seamless music listening experience with a beautiful and responsive user interface.
-
🎵 Audio Playback
- Play, pause, skip (next/previous)
- Volume control
- Progress bar with seek functionality
- Repeat and shuffle modes
-
📋 Playlist Management
- Create, edit, and delete playlists
- Add/remove songs from playlists
- Drag and drop playlist reordering
- Playlist sharing capabilities
-
🎼 Music Library
- Browse and search through your music collection
- Sort by title, artist, album, or date added
- Filter by genre or mood
- Recently played tracks
-
👤 User Features
- Secure user authentication (login/register)
- User profile management
- Favorite tracks
- Listening history
-
📱 Responsive Design
- Mobile-first approach
- Dark/Light mode support
- Cross-browser compatibility
- Touch-friendly controls
- Framework: React.js
- UI Libraries: Material UI, Tailwind CSS
- Audio Handling: Howler.js
- State Management: React Context API
- Routing: React Router
- Form Handling: React Hook Form
- API Client: Axios
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB
- Authentication: JWT (JSON Web Tokens)
- File Storage: Local file system
- API Documentation: Swagger/OpenAPI
- Node.js (v14 or higher)
- MongoDB (v4.4 or higher)
- npm (v6 or higher) or yarn
-
Clone the repository
git clone https://github.com/yourusername/music-player.git cd music-player
-
Install Frontend Dependencies
cd frontend npm install
-
Install Backend Dependencies
cd ../backend npm install
-
Environment Setup
Create a
.env
file in the backend directory:PORT=5000 MONGO_URI=mongodb://localhost:27017/music-player JWT_SECRET=your_secure_jwt_secret UPLOAD_DIR=./uploads
-
Start the Development Servers
In separate terminal windows:
# Terminal 1 - Backend cd backend npm run dev # Terminal 2 - Frontend cd frontend npm start
The application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
music-player/
├── frontend/ # React frontend application
│ ├── public/ # Static files
│ └── src/ # Source files
│ ├── assets/ # Images, fonts, etc.
│ ├── components/ # Reusable components
│ ├── context/ # React context providers
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ ├── services/ # API services
│ ├── styles/ # Global styles
│ └── utils/ # Utility functions
└── backend/ # Node.js backend
├── config/ # Configuration files
├── controllers/ # Route controllers
├── middleware/ # Custom middleware
├── models/ # Mongoose models
├── routes/ # API routes
├── services/ # Business logic
├── uploads/ # Uploaded files
└── utils/ # Utility functions
npm start
- Start development servernpm build
- Build for productionnpm test
- Run testsnpm lint
- Run linter
npm start
- Start production servernpm run dev
- Start development servernpm test
- Run testsnpm lint
- Run linter
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Please make sure to update tests as appropriate and follow the project's code style.
This project is licensed under the MIT License - see the LICENSE file for details.
- Material UI for the UI components
- Tailwind CSS for utility-first CSS
- Howler.js for audio handling
- Express.js for the backend framework
- MongoDB for the database