https://github.com/matin676/music-app
MusicApp allows users to stream music, manage playlists, upload songs, and enjoy a personalized listening experience. It integrates Firebase for user authentication and Google Cloud Bucket for storage, ensuring a seamless and secure music streaming platform.
https://github.com/matin676/music-app
express firebase google-cloud-bucket mongodb node react tailwindcss
Last synced: 3 months ago
JSON representation
MusicApp allows users to stream music, manage playlists, upload songs, and enjoy a personalized listening experience. It integrates Firebase for user authentication and Google Cloud Bucket for storage, ensuring a seamless and secure music streaming platform.
- Host: GitHub
- URL: https://github.com/matin676/music-app
- Owner: matin676
- License: mit
- Created: 2024-04-02T13:09:59.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2026-01-21T17:02:48.000Z (6 months ago)
- Last Synced: 2026-01-22T05:04:54.518Z (5 months ago)
- Topics: express, firebase, google-cloud-bucket, mongodb, node, react, tailwindcss
- Language: JavaScript
- Homepage: https://apnaplayer.netlify.app/
- Size: 15 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MusicApp ๐ต
A modern, full-stack music streaming platform designed for a premium user experience. Built with the MERN stack (MongoDB, Express, React, Node.js) and Firebase.
## โจ Features
### ๐ค User Features
- **Authentication**: Secure Google Sign-in via Firebase
- **Dynamic Discovery**:
- **Featured Track**: Analytics-driven, showcasing Top 5 most-played songs
- **Play Count Tracking**: Automatically tracks song popularity
- **Filtering**: By Artist, Album, Language, and Category
- **Search**: Real-time fuzzy search for songs, artists, and albums
- **Music Player**:
- Full playback control (Play, Pause, Next, Prev, Seek)
- Shuffle and Repeat modes
- Mini player mode
- **Library Management**:
- "Like" songs to add to Favorites
- Create and manage custom Playlists
### ๐ก๏ธ Admin Features
- **Dashboard**: Content management interface
- **Upload Songs**: Add tracks with audio and album art
- **Manage Metadata**: Create/edit Artists and Albums
- **User Management**: Manage user roles (Admin/Member)
## ๐ Security
- Server-side authentication via Firebase Admin SDK
- Role-based access control (RBAC) with middleware
- Data isolation - users can only access their own data
- Standardized API responses for consistent error handling
## ๐ ๏ธ Tech Stack
| Layer | Technologies |
| ----------------- | -------------------------------------------------------------------- |
| **Frontend** | React 19, Vite, Tailwind CSS v4, Zustand, React Query, Framer Motion |
| **Backend** | Node.js, Express 5, MongoDB, Mongoose |
| **Auth/Storage** | Firebase (Auth + Storage) |
| **Design System** | UI UX Pro Max (Righteous + Poppins fonts, vibrant palette) |
## ๐ Project Structure
```
client/src/
โโโ components/ # Page components
โโโ features/ # Feature modules (auth, library, player)
โโโ services/api/ # API layer with auth interceptors
โโโ shared/components/ # Reusable UI (ErrorBoundary, Loading, Skeleton)
โโโ styles/ # Design tokens
server/
โโโ models/ # Mongoose schemas
โโโ routes/ # API routes
โโโ src/middleware/ # Auth, admin, error handling
```
## ๐ Getting Started
### Prerequisites
- Node.js v18+
- MongoDB URI
- Firebase Project (Auth & Storage enabled)
### Local Setup
```bash
# Clone
git clone https://github.com/matin676/music-app.git
cd music-app
# Server
cd server
npm install
npm run dev
# Client (new terminal)
cd client
npm install
npm run dev
```
### Environment Variables
**Server (.env)**
```
PORT=4000
DB_STRING=mongodb+srv://...
FIREBASE_* credentials
```
**Client (.env)**
```
VITE_API_BASE_URL=http://localhost:4000
VITE_FIREBASE_API_KEY=...
VITE_FIREBASE_AUTH_DOMAIN=...
VITE_FIREBASE_PROJECT_ID=...
VITE_FIREBASE_STORAGE_BUCKET=...
```
## ๐งช Testing
```bash
cd client
npm test
```
## ๐ License
MIT License