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

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.

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